[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/22721] [2.30, 2.31 regression] Solaris/x86 TLS transition failur

From: hjl.tools at gmail dot com
Subject: [Bug ld/22721] [2.30, 2.31 regression] Solaris/x86 TLS transition failures with linker plugin
Date: Thu, 18 Jan 2018 13:58:25 +0000


--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Rainer Orth from comment #2)
> > --- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
> > A couple questions:
> >
> > 1. Do all tests under ld/testsuite/ld-i386 pass on Solaris?
> No, but that's a preexisting condition:
> FAIL: Build libno-plt-1b.so
> FAIL: No PLT (dynamic 1a)
> FAIL: No PLT (dynamic 1b)
> FAIL: No PLT (dynamic 1c)
> FAIL: No PLT (static 1d)
> FAIL: No PLT (PIE 1e)
> FAIL: No PLT (PIE 1f)
> FAIL: No PLT (PIE 1g)
> FAIL: No PLT (static 1j)
> FAIL: No PLT (static 1d)
> FAIL: No PLT (static 1j)
> The static tests fail because there are no libc.a and libm.a on Solaris,
> so full-static linking just isn't possible.  Testing static linking when
> the platform doesn't support it is a testsuite bug. 

Please open a bug report.

> All other failures follow the same pattern:
> regexp_diff match failure
> regexp "^ +[a-f0-9]+:   8b 80 ([0-9a-f]{2} ){4}[        ]+mov
> +-0x[a-f0-9]+\(%eax\),%eax$"
> line   " 52a:   8b 80 10 00 00 00       mov    0x10(%eax),%eax"
> regexp_diff match failure
> regexp "^ +[a-f0-9]+:   ff a0 ([0-9a-f]{2} ){4}[        ]+jmp
> +\*-0x[0-9a-f]+\(%eax\)$"
> line   " 54a:   ff a0 10 00 00 00       jmp    *0x10(%eax)"
> FAIL: Build libno-plt-1b.so
> where i686-pc-linux-gnu has
>  48a:   8b 80 f8 ff ff ff       mov    -0x8(%eax),%eax
>  4aa:   ff a0 f8 ff ff ff       jmp    *-0x8(%eax)
> Maybe an -fno-omit-frame-pointer thing?

Can you add -fomit-frame-pointer to i386.exp to see if it works?

> The tls.exp tests there are only run on Linux/x86 at the moment.
> > 2. Does Solaris use the same TLS code sequences as Linux?
> Mostly.  See HAVE_AS_IX86_TLSGDPLT and HAVE_AS_IX86_TLSLDMPLT in gcc's
> i386.md.  They are only used if both assembler and linker support those
> relocs, which means when using as and ld only, so they are not relevant
> to this bug.
> For full documentation, see
> https://docs.oracle.com/cd/E53394_01/html/E54813/chapter8-1.html#scrolltoc
> > 3. Does GCC generate different TLS code sequences on Solaris?
> Not as far as the present bug is concerned, I believe.

Please do

1. Get users/hjl/lto-mixed/master branch and build/install it.
2. Pass -v -save-temps -Wl,-plugin-save-temps to gcc
This should save all temporary files used by ld LTO.
3. Create .gdbinit to set environment variables used by ld LTO with
output from "gcc -v".
4. Capture the failed ld LTO command line option.
5. Run ld under gdb to investigate why ld fails.

You are receiving this mail because:
You are on the CC list for the bug.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]