[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/20989] New: Every 64-bit Solaris 12/SPARC executable dies with S
From: |
ro at gcc dot gnu.org |
Subject: |
[Bug ld/20989] New: Every 64-bit Solaris 12/SPARC executable dies with SIGILL |
Date: |
Thu, 22 Dec 2016 13:55:14 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=20989
Bug ID: 20989
Summary: Every 64-bit Solaris 12/SPARC executable dies with
SIGILL
Product: binutils
Version: 2.27
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: ro at gcc dot gnu.org
Target Milestone: ---
Host: sparc-sun-solaris2.12
Target: sparc-sun-solaris2.12
Build: sparc-sun-solaris2.12
For some time, Solaris 12 provides its own set of CRTs. Cf.
https://gcc.gnu.org/ml/gcc-patches/2015-09/msg01638.html
for some backgroup. When recently the __start_crt_compiler function in crt1.o
was changed from
[29] 0 0 FUNC WEAK D 0 UNDEF __start_crt_compiler
to
[29] 0 0 FUNC WEAK H 0 UNDEF __start_crt_compiler
(i.e. hidden visibility), every single 64-bit executable started to die with
SIGILL if linked with gld. Both 32-bit and /bin/ld are fine instead.
Here's what I found: /usr/lib/sparcv9/crt1.o has
__start_crt+0x64: 40 00 00 00 call +0x0
<__start_crt+0x64>
Relocation Section: .rela.text
index type offset value addend section symbol
[20] R_SPARC_WPLT30 0xe4 0 0 .text
__start_crt_compiler
__start_crt starts at .text+0x80
[30] 0x80 0xa4 FUNC GLOB D 0 .text __start_crt
[29] 0 0 FUNC WEAK H 0 UNDEF __start_crt_compiler
When linking with /bin/ld, the resulting executable turns into:
__start_crt+0x64: 40 00 00 00 call +0x0
<__start_crt+0x64>
[76] 0x100000b80 0xa4 FUNC GLOB D 0 .text __start_crt
[32] 0 0 FUNC LOCL H 0 ABS
__start_crt_compiler
while when I use gld instead, I get
__start_crt+0x64: 7f ff fe 4f call -0x6c4 <0x100000000>
[53] 0x100000660 0xa4 FUNC GLOB D 0 .text __start_crt
Rainer
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/20989] New: Every 64-bit Solaris 12/SPARC executable dies with SIGILL,
ro at gcc dot gnu.org <=