[PATCH] libphobos: Allow building libphobos using Solaris/x86 assembler

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Wed Jan 6 13:57:42 GMT 2021


Hi Iain,

>> This patch removes the disabling of libphobos when the Solaris/x86
>> assembler is being used.
>>
>> Since r11-6373, D symbols are now compressed using back references, this
>> helped reduce the average symbol length by a factor of about 3, while
>> the longest symbol shrank from 416133 to 1142 characters.  So the issues
>> that were seen on Solaris/x86 should no longer be a problem.
>>
>> However, I have only used x86_64-apple-darwin10 for testing, as
>> libphobos couldn't be built on that target for the same reason, except
>> it was the system linker segfaulting due to long symbol names.
>>
>> It would be good to know if Solaris has also benefitted from the change.
>
> great, thanks.  I'll give this a whirl once today's regular bootstraps
> have finished.

here's what I found: the build itself worked just fine and the libphobos
test results are identical to those with gas.  However, a few gdc tests
fail when Solaris/x86 as is used, for two reasons:

+UNRESOLVED: gdc.test/runnable/mangle.d   compilation failed to produce executable
+UNRESOLVED: gdc.test/runnable/mangle.d -shared-libphobos   compilation failed to produce executable

Assembler: mangle.d
        "/var/tmp//ccG72ALc.s", line 200 : Syntax error
        Near line: "    movzbl  test_эльфийские_письмена_9, %eax"
[...]

+UNRESOLVED: gdc.test/runnable/testmodule.d   compilation failed to produce executable
+UNRESOLVED: gdc.test/runnable/testmodule.d -shared-libphobos   compilation failed to produce executable

Assembler: testmodule.d
        "/var/tmp//ccw9j5oa.s", line 20 : Syntax error
        Near line: "    call    _D7dstress3run17unicode_06_哪里6哪里FiZi"
[...]

+UNRESOLVED: gdc.test/runnable/ufcs.d   compilation failed to produce executable
+UNRESOLVED: gdc.test/runnable/ufcs.d -shared-libphobos   compilation failed to produce executable

Assembler: ufcs.d
        "/var/tmp//ccWd6kud.s", line 7774 : Syntax error
        Near line: "    .globl  _D4ufcs6α8503FiZv"
[...]

The Solaris assemblers don't support UTF-8 identifiers.  Unless gdc can
encode them in some way for toolchains like this (no idea if this is
worth the effort), it may be possible to guard the tests with the ucn
effective-target keyword.

Apart from that, it seems strange that the failing tests should only
show up as UNSUPPORTED.  I'd have expected the compilation to FAIL, but
IIRC the gdc testsuite has to ignore all output, so the test for excess
errors which would usually catch this is disabled effectively.

The last failure is different and due to how COMDAT group handling is
done with Solaris as:

+UNRESOLVED: gdc.test/runnable/test42.d   compilation failed to produce executable
+UNRESOLVED: gdc.test/runnable/test42.d -shared-libphobos   compilation failed to produce executable

which yields

Input string too long, limit 10240

The offending input lines are (stripped for brevity)

	.section	.tdata._D6test42__T5Foo71VAyaa2623[...]
	.group	_D6test42__T5Foo71VAyaa2623_68656c6c6f616[...]

The first line is 10597 chars, the second even 15869.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


More information about the Gcc-patches mailing list