bug-binutils
[Top][All Lists]
Advanced

[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.


reply via email to

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