Excerpts from Rainer Orth's message of January 7, 2021 5:17 pm:
> Hi Iain,
> 
>>> 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.
> 
> Great, thanks.
> 
>>> 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
> 
> Not that I'm aware of.  I believe D tests are the first time ever that I
> ran into this Solaris/x86 as limit.  One might try to iteratively
> determine the value at configure time if this is helpful.  No idea if
> other non-gas assemblers are even worse in that apartment.  E.g. the
> Solaris/SPARC one has a considerably higher limit...
> 
>> just compress symbols using MD5 if they exceed a certain length...
> 
> That's certainly an easy option.  OTOH if this is unlikely to occur in
> real-life code, once could just xfail the test on Solaris/x86 with as...
> 

Looking at the test which generates that symbol, it is very much a
contrived example that deliberately exceeds the limit of another linker.
However given the size and use of meta and templates in some production
codebases out there, I can't say that symbols like it for sure won't
appear in real-life code.  Though it's going to be unlikely said code
will be compiled for Solaris anyway.

Iain.

Reply via email to