bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/13671] gld creates i386 relocations not supported by Solaris ld.


From: hjl.tools at gmail dot com
Subject: [Bug ld/13671] gld creates i386 relocations not supported by Solaris ld.so.1
Date: Thu, 12 Jan 2023 18:31:46 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=13671

--- Comment #28 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Rainer Orth from comment #27)
> Created attachment 14577 [details]
> Augmented patch, incorporating review comments

expected_tls_le should be unsigned int.   The check will be

if (r_type_tls == expected_tls_le)

> Like so?  I wonder if it would be possible to move the declaration of
> expected_tls_le to its use.  Given that binutils now requires C99, that would
> certainly be clearer, but differ in style from the rest of the file.
> 
> Tested on i386-pc-solaris2.11 and i686-pc-linux-gnu as well as a full
> all-languages
> gcc bootstrap.
> 
> As an additional experiment, I've enabled ld-i386/tls.exp on Solaris/x86. 
> Before
> this patch, only two tests FAIL:
> 
> FAIL: TLS GD/LD -> IE transition without PLT
> FAIL: TLS GD/LD -> IE transition without PLT (-z now)
> 
> The error is the expected
> 
> Running: tmpdir/tls-1d > tmpdir/tls-1d.out
> ld.so.1: tls-1d: fatal: relocation error: R_386_UNKNOWN37: file
> tmpdir/tls-1d: symbol gd: offset size (0 bytes) is not supported
> 
> With the patch, those two tests continue to FAIL.  However, the error is
> different:
> 
> /var/gcc/binutils/i386/obj/binutils-2.40-branch-local/ld/tmpdir/ld/collect-
> ld: warning: /usr/lib/crtn.o: missing .note.GNU-stack section implies
> executable stack
> /var/gcc/binutils/i386/obj/binutils-2.40-branch-local/ld/tmpdir/ld/collect-
> ld: NOTE: This behaviour is deprecated and will be removed in a future
> version of the linker
> /var/gcc/binutils/i386/obj/binutils-2.40-branch-local/ld/tmpdir/ld/collect-
> ld: BFD (GNU Binutils) 2.39.90.20230111 assertion fail
> /vol/src/gnu/binutils/hg/binutils-2.40-branch/local/bfd/elf32-i386.c:3377
> /var/gcc/binutils/i386/obj/binutils-2.40-branch-local/ld/tmpdir/ld/collect-
> ld: BFD (GNU Binutils) 2.39.90.20230111 assertion fail
> /vol/src/gnu/binutils/hg/binutils-2.40-branch/local/bfd/elf32-i386.c:3377
> /var/gcc/binutils/i386/obj/binutils-2.40-branch-local/ld/tmpdir/ld/collect-
> ld: BFD (GNU Binutils) 2.39.90.20230111 assertion fail
> /vol/src/gnu/binutils/hg/binutils-2.40-branch/local/bfd/elf32-i386.c:3377
> collect2: error: ld returned 1 exit status
> 
> On top of that, there are four new failures
> 
> +FAIL: TLS GD/LD -> LE transition without PLT (dynamic)
> +FAIL: TLS GD/LD -> LE transition without PLT (dynamic, -z now)
> +FAIL: TLS GD/LD -> LE transition without PLT (PIE)
> +FAIL: TLS GD/LD -> LE transition without PLT (PIE, -z now)
> 
> which show the same error.

So TLS doesn't work for Solaris.

-- 
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]