Opened 3 years ago

Closed 20 months 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 Pavel Zhukov, 3 years ago

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

comment:2 by Pavel Zhukov, 3 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 Pavel Zhukov, 3 years ago

The problem is in terminator_mask_64. It defined as for big endian while ppc64le is little endian.

comment:4 by Maxim Reznik, 3 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 Maxim Reznik, 20 months ago

Resolution: invalid
Status: newclosed

It works fine in fedora 28 without any our changes.

Note: See TracTickets for help on using tickets.