bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/13671] New: gld creates i386 relocations not supported by Solari


From: ro at TechFak dot Uni-Bielefeld.DE
Subject: [Bug ld/13671] New: gld creates i386 relocations not supported by Solaris ld.so.1
Date: Tue, 07 Feb 2012 18:27:44 +0000

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

             Bug #: 13671
           Summary: gld creates i386 relocations not supported by Solaris
                    ld.so.1
           Product: binutils
           Version: 2.22
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: address@hidden
        ReportedBy: address@hidden
    Classification: Unclassified
              Host: i386-pc-solaris2*
            Target: i386-pc-solaris2*
             Build: i386-pc-solaris2*


Recently, Solaris/x86 gcc bootstrap with gas, gld, and Go support included
started to fail when the Go backend, go1, couldn't be executed:

ld.so.1: go1: fatal: relocation error: R_386_UNKNOWN37: file
/var/gcc/regression/trunk/10-gcc-gas-gld/build/gcc/go1: symbol
_ZSt15__once_callable: offset size (0 bytes) is not supported
gccgo: internal compiler error: Killed (program go1)

In <sys/elf_386.h>, I find that R_386_UNKNOWN37 is R_386_TLS_TPOFF32, which is
not supported even on Solaris 11.  This relocation is not in the input objects.

In <sys/elf_386.h> I find the following correspondance:

#define      R_386_UNKNOWN24         24        R_386_TLS_GD_32
#define      R_386_UNKNOWN25         25        R_386_TLS_GD_PUSH
#define      R_386_UNKNOWN26         26        R_386_TLS_GD_CALL
#define      R_386_UNKNOWN27         27        R_386_TLS_GD_POP
#define      R_386_UNKNOWN28         28        R_386_TLS_LDM_32
#define      R_386_UNKNOWN29         29        R_386_TLS_LDM_PUSH
#define      R_386_UNKNOWN30         30        R_386_TLS_LDM_CALL
#define      R_386_UNKNOWN31         31        R_386_TLS_LDM_POP
#define      R_386_UNKNOWN33         33        R_386_TLS_IE_32
#define      R_386_UNKNOWN34         34        R_386_TLS_LE_32
#define      R_386_UNKNOWN37         37        R_386_TLS_TPOFF32

If I read bfd/elf32-i386.c correctly, only the last three can be generated by
gld on its own.  Given that Solaris ld.so.1 cannot handle them, they shouldn't
be generated when targetting Solaris/x86.

  Rainer

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- 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]