bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/20308] Gold should support i386 TLS code sequences without PLT


From: cvs-commit at gcc dot gnu.org
Subject: [Bug gold/20308] Gold should support i386 TLS code sequences without PLT
Date: Wed, 29 Jun 2016 15:39:59 +0000

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

--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by H.J. Lu <address@hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b287eca391bbb10e709fb8ba9a56be166ab2ff1d

commit b287eca391bbb10e709fb8ba9a56be166ab2ff1d
Author: H.J. Lu <address@hidden>
Date:   Wed Jun 29 08:38:43 2016 -0700

    gold: Support 386 TLS code sequences without PLT

    There are extensions to 386 psABI:

    https://groups.google.com/forum/#!topic/ia32-abi/awsRSvJOJfs

    to call tls_get_addr via GOT:

    call address@hidden(%reg)

    where EBX register isn't required as GOT base.

    Since direct call is 4-byte long and indirect call, is 5-byte long, the
    extra one byte must be handled properly.

    For general dynamic model, 7-byte lea instruction before call
    instruction is replaced by 6-byte one to make room for indirect call.
    For local dynamic model, we simply use 5-byte indirect call.

    TLS linker optimization is updated to recognize new instruction
    patterns.  For local dynamic model to local exec model transition,
    we generate a 6-byte lea instruction as nop, instead of a 1-byte nop
    plus a 4-byte lea instruction.

        PR gold/20308
        * i386.cc (Target_i386::Relocate::relocate): Allow
        R_386_GOT32X relocation against ___tls_get_addr.
        (Target_i386::Relocate::tls_gd_to_ie): Support indirect
        call to __tls_get_addr.
        (Target_i386::Relocate::tls_gd_to_le): Likewise.
        (Target_i386::Relocate::tls_ld_to_le): Likewise.
        * testsuite/Makefile.am (check_PROGRAMS): Add pr20308a_test,
        pr20308b_test, pr20308c_test, pr20308d_test, pr20308e_test.
        (pr20308a_test_SOURCES): New.
        (pr20308a_test_DEPENDENCIES): Likewise.
        (pr20308a_test_CFLAGS): Likewise.
        (pr20308a_test_LDFLAGS): Likewise.
        (pr20308a_test_LDADD): Likewise.
        (pr20308b_test_SOURCES): Likewise.
        (pr20308b_test_DEPENDENCIES): Likewise.
        (pr20308b_test_CFLAGS): Likewise.
        (pr20308b_test_LDFLAGS): Likewise.
        (pr20308b_test_LDADD): Likewise.
        (pr20308c_test_SOURCES): Likewise.
        (pr20308c_test_DEPENDENCIES): Likewise.
        (pr20308c_test_CFLAGS): Likewise.
        (pr20308c_test_LDFLAGS): Likewise.
        (pr20308c_test_LDADD): Likewise.
        (pr20308d_test_SOURCES): Likewise.
        (pr20308d_test_DEPENDENCIES): Likewise.
        (pr20308d_test_CFLAGS): Likewise.
        (pr20308d_test_LDFLAGS): Likewise.
        (pr20308d_test_LDADD): Likewise.
        (pr20308e_test_SOURCES): Likewise.
        (pr20308e_test_DEPENDENCIES): Likewise.
        (pr20308e_test_CFLAGS): Likewise.
        (pr20308e_test_LDFLAGS): Likewise.
        (pr20308e_test_LDADD): Likewise.
        (pr20308a.so): Likewise.
        (pr20308b.so): Likewise.
        (pr20308_gd.o): Likewise.
        (pr20308_ld.o): Likewise.
        (MOSTLYCLEANFILES): Add pr20308a.so pr20308b.so.
        * testsuite/Makefile.in: Regenerated.
        * testsuite/pr20308_def.c: New file.
        * testsuite/pr20308_gd.S: Likewise.
        * testsuite/pr20308_ld.S: Likewise.
        * testsuite/pr20308_main.c: Likewise.

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