bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/22570] ld fails to bind DTPMOD at link time for pie on mips


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/22570] ld fails to bind DTPMOD at link time for pie on mips
Date: Wed, 11 Jul 2018 16:46:23 +0000

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

--- Comment #5 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Maciej W. Rozycki <address@hidden>:

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

commit 9143e72c6d4ddefbcb41c0f6361ad140354145ef
Author: Maciej W. Rozycki <address@hidden>
Date:   Wed Jul 11 17:44:45 2018 +0100

    PR ld/22570: MIPS/BFD: Fix TLS relocation resolution for PIE executables

    Correct a commit 0e1862bb401f ("Add output_type to bfd_link_info") issue
    and use `bfd_link_dll' rather than `bfd_link_pic' in determining whether
    to fully resolve GD, LD and IE TLS relocations referring to symbols
    locally defined rather than deferring them to the load time by means of
    dynamic relocations.

    Such symbols cannot be preempted in PIE executables, which are
    necessarily PIC, and therefore their values (thread pointer offsets) are
    fixed at the static link time as is the associated module ID of the main
    executable.

    Given the `tlsbin-o32.s' and `tlsdyn-o32.s' sources from our test suite
    this removes the absolute TLS relocations from the static:

    DYNAMIC RELOCATION RECORDS
    OFFSET   TYPE              VALUE
    00000000 R_MIPS_NONE       *ABS*
    1000002c R_MIPS_TLS_TPREL32  *ABS*
    10000030 R_MIPS_TLS_DTPMOD32  *ABS*
    10000038 R_MIPS_TLS_DTPMOD32  *ABS*

    and the dynamic:

    DYNAMIC RELOCATION RECORDS
    OFFSET   TYPE              VALUE
    00000000 R_MIPS_NONE       *ABS*
    1000002c R_MIPS_TLS_TPREL32  *ABS*
    10000038 R_MIPS_TLS_DTPMOD32  *ABS*
    10000044 R_MIPS_TLS_DTPMOD32  *ABS*
    10000030 R_MIPS_TLS_DTPMOD32  tlsvar_gd
    10000034 R_MIPS_TLS_DTPREL32  tlsvar_gd
    10000040 R_MIPS_TLS_TPREL32  tlsvar_ie

    PIE executable respectively, as reported by `objdump -R', and fills the
    corresponding GOT slots with the values expected, as recorded with the
    test cases added.  The new output from `objdump -R' is:

    DYNAMIC RELOCATION RECORDS (none)

    and:

    DYNAMIC RELOCATION RECORDS
    OFFSET   TYPE              VALUE
    00000000 R_MIPS_NONE       *ABS*
    10000030 R_MIPS_TLS_DTPMOD32  tlsvar_gd
    10000034 R_MIPS_TLS_DTPREL32  tlsvar_gd
    10000040 R_MIPS_TLS_TPREL32  tlsvar_ie

    for the static and the dynamic executable respectively.

    2018-07-11  Maciej W. Rozycki  <address@hidden>
                Rich Felker  <address@hidden>

        bfd/
        PR ld/22570
        * elfxx-mips.c (mips_tls_got_relocs): Use `bfd_link_dll' rather
        than `bfd_link_pic' to determine whether dynamic relocations are
        to be produced.
        (mips_elf_initialize_tls_slots): Likewise.

        ld/
        PR ld/22570
        * testsuite/ld-mips-elf/tlsbin-pie-o32.d: New test.
        * testsuite/ld-mips-elf/tlsbin-pie-o32.got: New test.
        * testsuite/ld-mips-elf/tlsdyn-pie-o32.d: New test.
        * testsuite/ld-mips-elf/tlsdyn-pie-o32.got: New test.
        * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.

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