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.