mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
[PR ld/25062] arm: sign extend the addend of R_ARM_TLS_GOTDESC
On 64-bit host the 32-bit addend was loaded without sign extension into an unsigned long. bfd/ChangeLog: PR ld/25062 * elf32-arm.c (elf32_arm_final_link_relocate): Sign extend data. ld/ChangeLog: PR ld/25062 * testsuite/ld-arm/arm-elf.exp: Update. * testsuite/ld-arm/tls-gdesc-neg.d: New test. * testsuite/ld-arm/tls-gdesc-neg.s: New test.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2019-10-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
PR ld/25062
|
||||
* elf32-arm.c (elf32_arm_final_link_relocate): Sign extend data.
|
||||
|
||||
2019-09-30 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* elf-bfd.h (bfd_section_is_ctf): New inline function.
|
||||
|
@ -12027,9 +12027,9 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto,
|
||||
unsigned long data, insn;
|
||||
unsigned thumb;
|
||||
|
||||
data = bfd_get_32 (input_bfd, hit_data);
|
||||
data = bfd_get_signed_32 (input_bfd, hit_data);
|
||||
thumb = data & 1;
|
||||
data &= ~1u;
|
||||
data &= ~1ul;
|
||||
|
||||
if (thumb)
|
||||
{
|
||||
|
@ -1,3 +1,10 @@
|
||||
2019-10-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
PR ld/25062
|
||||
* testsuite/ld-arm/arm-elf.exp: Update.
|
||||
* testsuite/ld-arm/tls-gdesc-neg.d: New test.
|
||||
* testsuite/ld-arm/tls-gdesc-neg.s: New test.
|
||||
|
||||
2019-09-23 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* configure.ac (TESTCTFLIB): Set to the .so or .a, like TESTBFDLIB.
|
||||
|
@ -839,6 +839,11 @@ set armeabitests_nonacl {
|
||||
"" {tls-gdesc.s}
|
||||
{{readelf "-x .got" tls-gdesc-nlazy.g}}
|
||||
"tls-lib2-nlazy.so"}
|
||||
{"TLS gnu shared library negative addend"
|
||||
"--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
|
||||
"" {tls-gdesc-neg.s}
|
||||
{{objdump -fdw tls-gdesc-neg.d}}
|
||||
"tls-lib2-neg.so"}
|
||||
{"TLS long plt library"
|
||||
"-shared -T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000" ""
|
||||
"" {tls-longplt-lib.s}
|
||||
|
39
ld/testsuite/ld-arm/tls-gdesc-neg.d
Normal file
39
ld/testsuite/ld-arm/tls-gdesc-neg.d
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
tmpdir/tls-lib2-neg.so: file format elf32-littlearm
|
||||
architecture: armv.*, flags 0x[0-9a-f]+:
|
||||
HAS_SYMS, DYNAMIC, D_PAGED
|
||||
start address 0x[0-9a-f]+
|
||||
|
||||
Disassembly of section .plt:
|
||||
|
||||
00008164 <.plt>:
|
||||
8164: e52de004 push {lr} ; .*
|
||||
8168: e59fe004 ldr lr, \[pc, #4\] ; .*
|
||||
816c: e08fe00e add lr, pc, lr
|
||||
8170: e5bef008 ldr pc, \[lr, #8\]!
|
||||
8174: 000080d8 .word 0x000080d8
|
||||
8178: e08e0000 add r0, lr, r0
|
||||
817c: e5901004 ldr r1, \[r0, #4\]
|
||||
8180: e12fff11 bx r1
|
||||
8184: e52d2004 push {r2} ; .*
|
||||
8188: e59f200c ldr r2, \[pc, #12\] ; .*
|
||||
818c: e59f100c ldr r1, \[pc, #12\] ; .*
|
||||
8190: e79f2002 ldr r2, \[pc, r2\]
|
||||
8194: e081100f add r1, r1, pc
|
||||
8198: e12fff12 bx r2
|
||||
819c: 000080c8 .word 0x000080c8
|
||||
81a0: 000080b0 .word 0x000080b0
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
000081a4 <foo>:
|
||||
81a4: e59f0000 ldr r0, \[pc\] ; .*
|
||||
81a8: ea000000 b 81b0 <foo\+0xc>
|
||||
81ac: 000080a4 .word 0x000080a4
|
||||
81b0: fafffff0 blx 8178 <.plt\+0x14>
|
||||
|
||||
000081b4 <bar>:
|
||||
81b4: 4800 ldr r0, \[pc, #0\] ; .*
|
||||
81b6: e001 b.n 81bc <bar\+0x8>
|
||||
81b8: 00008097 .word 0x00008097
|
||||
81bc: f7ff efdc blx 8178 <.plt\+0x14>
|
29
ld/testsuite/ld-arm/tls-gdesc-neg.s
Normal file
29
ld/testsuite/ld-arm/tls-gdesc-neg.s
Normal file
@ -0,0 +1,29 @@
|
||||
.text
|
||||
.arm
|
||||
.globl foo
|
||||
.type foo, %function
|
||||
foo:
|
||||
ldr r0, 1f
|
||||
b 2f
|
||||
1:
|
||||
@ Negative addend for R_ARM_TLS_GOTDESC.
|
||||
.word tlsdata(tlsdesc) + (. - 2f + 0)
|
||||
2:
|
||||
blx tlsdata(tlscall)
|
||||
|
||||
.thumb
|
||||
.globl bar
|
||||
.type bar, %function
|
||||
bar:
|
||||
ldr r0, 1f
|
||||
b 2f
|
||||
1:
|
||||
@ Negative addend for R_ARM_TLS_GOTDESC.
|
||||
.word tlsdata(tlsdesc) + (. - 2f + 1)
|
||||
2:
|
||||
blx tlsdata(tlscall)
|
||||
|
||||
.section .tdata,"awT"
|
||||
.global tlsdata
|
||||
tlsdata:
|
||||
.space 4
|
Reference in New Issue
Block a user