public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Iain Buclaw <ibuclaw@gdcproject.org>
To: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] libphobos: Allow building libphobos using Solaris/x86 assembler
Date: Thu, 07 Jan 2021 17:11:04 +0100	[thread overview]
Message-ID: <1610035055.i2ssecfjha.astroid@galago.none> (raw)
In-Reply-To: <ydd35zef9rd.fsf@CeBiTec.Uni-Bielefeld.DE>

Excerpts from Rainer Orth's message of January 6, 2021 2:57 pm:
> 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.
> 

Indeed, the testsuite is far too verbose.  Although many tests have a
TEST_OUTPUT directive, converting them to a Dejagnu style is probably
too much effort for the gain.

Those tests can just be explicitly disabled, I'll look into that.

> 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.
> 

Is there a max symbol length macro available internally?  Maybe could
just compress symbols using MD5 if they exceed a certain length...

Iain.

  reply	other threads:[~2021-01-07 16:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 21:43 Iain Buclaw
2021-01-05 21:57 ` Rainer Orth
2021-01-06 13:57   ` Rainer Orth
2021-01-07 16:11     ` Iain Buclaw [this message]
2021-01-07 16:17       ` Rainer Orth
2021-01-07 17:48         ` Iain Buclaw
2021-01-11 16:46           ` Iain Buclaw
2021-01-12 14:54             ` Rainer Orth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1610035055.i2ssecfjha.astroid@galago.none \
    --to=ibuclaw@gdcproject.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=ro@CeBiTec.Uni-Bielefeld.DE \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).