On Tue, 7 May 2019 at 10:15, Rainer Orth <[email protected]> wrote: > > Hi Iain, > > > On Tue, 19 Feb 2019 at 13:58, Rainer Orth <[email protected]> > > wrote: > >> > >> Hi Iain, > >> > >> >> Thanks. This will have to wait for > >> >> > >> >> [libphobos] Use sections_elf_shared.d on Solaris 11.5 (PR > >> >> d/88150) > >> >> https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01661.html > >> > > >> > I'll make a fork of sections support tonight, as that seems to be the > >> > right way forwards. > >> > > >> > Other parts will need upstreaming, I can do that as well. > >> > >> that would be great, thanks. > >> > >> >> and > >> >> [libphobos] Work around lack of dlpi_tls_modid before Solaris > >> >> 11.5 > >> >> https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01664.html > >> >> > >> > > >> > Johannes has already commented there, and he is right about needing a > >> > way to get tls data from DSOs. > >> > >> Understood. Maybe I can find a way to generalize the hack derived from > >> sections_ldc.d to TLS segments outside the executable. > >> > >> >> of course. Maybe even > >> >> > >> >> [libphobos] Work around Solaris ld bug linking __tls_get_addr on > >> >> 64-bit x86 > >> >> https://gcc.gnu.org/ml/gcc-patches/2019-01/msg01663.html > >> >> > >> >> will be needed depending on whether a proper ld fix makes it into > >> >> Solaris 11.5 or not. > >> > > >> > I'm not sure about this, but haven't looked at it properly just yet. > >> > >> I don't think you need concern yourself with this very much: it's just a > >> hack around a Solaris ld bug, suggested by the Solaris linker engineers > >> for the moment. Once the dlpi_tls_modid patch lands in Solaris 11.5 > >> (this week or next), I'll ask if they see a chance to have that bug > >> fixed in time for the Solaris 11.5 release. If so, nobody besides > >> myself will ever be exposed to this issue. > >> > > > > I've just given building gcc a try in an OpenIndiana VM, and get the > > following: > > > > ld: fatal: option -z has illegal argument 'relax=transtls' > > ld: fatal: flags processing errors > > collect2: error: ld returned 1 exit status > > > > $ ld --version > > ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1756 > > (illumos) > > > > My fatal mistake of course was not configuring with > > --with-ld=/usr/gnu/bin/ld, however it is notable that not all Solaris > > linkers support this relax=transtls option. > > I finally got back to this and did some experiments of my own: even the > latest Illumos ld doesn't implement -z relax=transtls, neither has it > fixed the underlying bug, so it's useless for 64-bit Illumos/x86. > > The following patch checks for those conditions (ld support for -z > relax=transtls or gld in use) and only enables libphobos if they are > met. > > I had to move the whole enable_libphobos/LIBPHOBOS_SUPPORTED block down > in configure.ac so it's able to use the results of the augmented > DRUNTIME_OS_LINK_SPEC. > > While I didn't test the patch on Illumos (gcc builds inside a VM are > slow), I tried it on Solaris 10/x86 with gas/ld and gas/gld (and an > improved version of the patch for PR d/88238) where it behaved as > expected. I've also included a previous version in a Solaris 11/x86 > bootstrap. >
OK, thanks for having a look into it. -- Iain
