mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
1cb83cac9a
Correct an issue with commit0f20cc3522
("TLS support for MIPS"), <https://sourceware.org/ml/binutils/2005-02/msg00607.html>, where a condition used to determine whether to use a dynamic symbol for GD, LD and IE TLS dynamic relocations against a symbol that has been defined locally has been incorrectly reversed. It's executables rather than dynamic shared objects where no symbol is required, because such symbols cannot be preempted and therefore their values (thread pointer offsets) are fixed at the static link time as is the associated module ID of the main executable, so the original condition should have been `shared' instead of `!shared'. This wrong condition was then later converted from `!shared' to `!bfd_link_pic', with commit0e1862bb40
("Add output_type to bfd_link_info"). Use the correct `bfd_link_dll' condition then, and adjust code for the dynamic symbol index possibly being -1 as with symbols that have been forced local, removing unnecessary dynamic relocations from dynamic regular executables. PIE executables are unaffected as the existing condition excluded them by chance due to the conversion mentioned above. Adjust test cases accordingly. bfd/ * elfxx-mips.c (mips_tls_got_relocs): Use `bfd_link_dll' rather than `!bfd_link_pic' in determining the dynamic symbol index. Avoid the index of -1. (mips_elf_initialize_tls_slots): Likewise. Flatten code by moving `dyn' to the beginning of the function block. ld/ * testsuite/ld-mips-elf/tlsdyn-o32.d: Update test for dynamic relocation removal. * testsuite/ld-mips-elf/tlsdyn-o32.got: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-1.d: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-1.got: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-2.d: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-2.got: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-3.d: Likewise. * testsuite/ld-mips-elf/tlsdyn-o32-3.got: Likewise.
55 lines
1.4 KiB
Makefile
55 lines
1.4 KiB
Makefile
|
|
.*: file format elf32-tradbigmips
|
|
|
|
Disassembly of section .text:
|
|
|
|
.* <__start>:
|
|
.*: 3c1c0fc0 lui gp,0xfc0
|
|
.*: 279c7c00 addiu gp,gp,31744
|
|
.*: 0399e021 addu gp,gp,t9
|
|
.*: 27bdfff0 addiu sp,sp,-16
|
|
.*: afbe0008 sw s8,8\(sp\)
|
|
.*: 03a0f025 move s8,sp
|
|
.*: afbc0000 sw gp,0\(sp\)
|
|
.*: 8f998018 lw t9,-32744\(gp\)
|
|
.*: 27848034 addiu a0,gp,-32716
|
|
.*: 0320f809 jalr t9
|
|
.*: 00000000 nop
|
|
.*: 8fdc0000 lw gp,0\(s8\)
|
|
.*: 00000000 nop
|
|
.*: 8f998018 lw t9,-32744\(gp\)
|
|
.*: 27848020 addiu a0,gp,-32736
|
|
.*: 0320f809 jalr t9
|
|
.*: 00000000 nop
|
|
.*: 8fdc0000 lw gp,0\(s8\)
|
|
.*: 00000000 nop
|
|
.*: 8f998018 lw t9,-32744\(gp\)
|
|
.*: 27848028 addiu a0,gp,-32728
|
|
.*: 0320f809 jalr t9
|
|
.*: 00000000 nop
|
|
.*: 8fdc0000 lw gp,0\(s8\)
|
|
.*: 00401025 move v0,v0
|
|
.*: 3c030000 lui v1,0x0
|
|
.*: 24638000 addiu v1,v1,-32768
|
|
.*: 00621821 addu v1,v1,v0
|
|
.*: 7c02283b rdhwr v0,\$5
|
|
.*: 8f83801c lw v1,-32740\(gp\)
|
|
.*: 00000000 nop
|
|
.*: 00621821 addu v1,v1,v0
|
|
.*: 8f838030 lw v1,-32720\(gp\)
|
|
.*: 00000000 nop
|
|
.*: 00621821 addu v1,v1,v0
|
|
.*: 7c02283b rdhwr v0,\$5
|
|
.*: 3c030000 lui v1,0x0
|
|
.*: 24639004 addiu v1,v1,-28668
|
|
.*: 00621821 addu v1,v1,v0
|
|
.*: 03c0e825 move sp,s8
|
|
.*: 8fbe0008 lw s8,8\(sp\)
|
|
.*: 03e00008 jr ra
|
|
.*: 27bd0010 addiu sp,sp,16
|
|
|
|
.* <__tls_get_addr>:
|
|
.*: 03e00008 jr ra
|
|
.*: 00000000 nop
|
|
...
|