Opened 5 years ago
Closed 4 years ago
#482 closed defect (invalid)
string_hash_test failed on ppc64le with gcc7
Reported by: | Pavel Zhukov | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Matreshka | Version: | |
Keywords: | Cc: |
Description
.objs/string_hash_test
raised CONSTRAINT_ERROR : Invalid name of character set
https://koji.fedoraproject.org/koji/taskinfo?taskID=18186087
Change History (6)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
New suspect is matreshka.internals.strings.handlers.portable.fill_null_terminator at matreshka-internals-strings-handlers-portable__64.adb:82
Before:
$71 = (size => 7, counter => (value => 1), unused => 5, length => 5, index_map => 0x0, value => (0 => 85, 84, 70, 45, 56, 0, 0, 0))
after
$74 = (size => 7, counter => (value => 1), unused => 5, length => 5, index_map => 0x0, value => (0 => 85, 84, 70, 45, 0, 0, 0, 0))
comment:3 by , 5 years ago
The problem is in terminator_mask_64. It defined as for big endian while ppc64le is little endian.
comment:4 by , 5 years ago
From configure log:
configure: ARCHITECTURE => portable_64_be
code to detect this:
if Default_Bit_Order = High_Order_First then Substitutions.Insert (Architecture_Name, +"portable_64_be");
We should check declaration of Default_Bit_Order in system.ads. It should be
Default_Bit_Order : constant Bit_Order := Low_Order_First;
comment:6 by , 4 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
It works fine in fedora 28 without any our changes.
Seems like the problem is in league.strings.to_utf16_string (league-strings.adb:2488)
While Source value looks good: $39 = "UTF-8"
Destination (result) is "UTF-0": $42 = (size => 7, counter => (value => 1), unused => 5, length => 5, index_map => 0x0, value => (0 => 85, 84, 70, 45, 0, 0, 0, 0))
Which is unknown character set obviously