On Tue, 7 May 2019 at 10:15, Rainer Orth <r...@cebitec.uni-bielefeld.de> wrote:
>
> Hi Iain,
>
> > On Tue, 19 Feb 2019 at 13:58, Rainer Orth <r...@cebitec.uni-bielefeld.de> 
> > 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

Reply via email to