From: Nick Clifton Date: Fri, 19 Jun 2015 11:14:33 +0000 (+0100) Subject: Import fix for PR 18481 which corrects the generation of relocs for R_ARM_TLS_LE32. X-Git-Tag: binutils-2_25_1~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d2ffcbd7f75eea32d67dde90e773c7b6d13a685b;p=thirdparty%2Fbinutils-gdb.git Import fix for PR 18481 which corrects the generation of relocs for R_ARM_TLS_LE32. PR 18481 bfd * elf32-arm.c (R_ARM_TLS_LE32): Set the special function to NULL. gas * config/tc-arm.c (md_apply_fix): Add support for ADR in thumb mode against a nearby symbol. tests * gas/arm/tls.s: Add tests of the tpoff pseudo with a local symbol. * gas/arm/tls.d: Update expected output. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 90f657050af..d39fdddd477 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2015-06-19 Nick Clifton + + PR 18481 + * elf32-arm.c (R_ARM_TLS_LE32): Set the special function to NULL. + 2015-05-05 Jiong Wang Apply from master: diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 76902510ca8..9fd5720b8b3 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -1606,7 +1606,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] = FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield,/* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + NULL, /* special_function */ "R_ARM_TLS_LE32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ diff --git a/gas/ChangeLog b/gas/ChangeLog index 75a2531af79..8aea85258a5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-06-19 Nick Clifton + + PR gas/18541 + * config/tc-arm.c (md_apply_fix): Add support for ADR in thumb + mode against a nearby symbol. + 2015-06-17 Renlin Li Applied from master. @@ -12,7 +18,7 @@ 2015-05-05 Renlin Li * config/tc-aarch64.c (aarch64_init_frag): Always generate mapping - symbols. + symbols. 2015-06-04 Matthew Wahab diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 1714ec81e2d..2ab8bbea7e5 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -23247,7 +23247,6 @@ tc_gen_reloc (asection *section, fixS *fixp) case BFD_RELOC_ARM_SBREL32: case BFD_RELOC_ARM_PREL31: case BFD_RELOC_ARM_TARGET2: - case BFD_RELOC_ARM_TLS_LE32: case BFD_RELOC_ARM_TLS_LDO32: case BFD_RELOC_ARM_PCREL_CALL: case BFD_RELOC_ARM_PCREL_JUMP: @@ -23285,6 +23284,7 @@ tc_gen_reloc (asection *section, fixS *fixp) case BFD_RELOC_ARM_TLS_GOTDESC: case BFD_RELOC_ARM_TLS_GD32: + case BFD_RELOC_ARM_TLS_LE32: case BFD_RELOC_ARM_TLS_IE32: case BFD_RELOC_ARM_TLS_LDM32: /* BFD will include the symbol's address in the addend. diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 0cc42946808..173630bf71b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2015-06-19 Nick Clifton + + PR gas/18481 + * gas/arm/tls.s: Add tests of the tpoff pseudo with a local + symbol. + * gas/arm/tls.d: Update expected output. + 2015-06-17 Renlin Li Applied from master. diff --git a/gas/testsuite/gas/arm/tls.d b/gas/testsuite/gas/arm/tls.d index 727f8e4e0b9..4d7e7244b2a 100644 --- a/gas/testsuite/gas/arm/tls.d +++ b/gas/testsuite/gas/arm/tls.d @@ -47,3 +47,21 @@ Disassembly of section .text: 3c: R_ARM_TLS_LE32 td 40: 00000017 .word 0x00000017 40: R_ARM_TLS_GOTDESC te +0+44 : + 44: fffffff4 .word 0xfffffff4 + 44: R_ARM_TLS_LE32 tbase + 48: fffffff8 .word 0xfffffff8 + 48: R_ARM_TLS_LE32 tbase + 4c: fffffffc .word 0xfffffffc + 4c: R_ARM_TLS_LE32 tbase + 50: 00000000 .word 0x00000000 + 50: R_ARM_TLS_LE32 tbase + 54: 00000004 .word 0x00000004 + 54: R_ARM_TLS_LE32 tbase + 58: 00000008 .word 0x00000008 + 58: R_ARM_TLS_LE32 tbase + 5c: 0000000c .word 0x0000000c + 5c: R_ARM_TLS_LE32 tbase + 60: 00000000 .word 0x00000000 + 60: R_ARM_TLS_LE32 tbase +#pass diff --git a/gas/testsuite/gas/arm/tls.s b/gas/testsuite/gas/arm/tls.s index 96a25f56f88..346ac98c0e9 100644 --- a/gas/testsuite/gas/arm/tls.s +++ b/gas/testsuite/gas/arm/tls.s @@ -36,3 +36,26 @@ thumb_fn: .word tc(gottpoff) + (. - 1b - 8) .word td(tpoff) 1: .word te(tlsdesc) + (. - 2b + 1) + + @ PR 18481 + .text +foo: + .word tbase(tpoff)-12 + .word tbase(tpoff)-8 + .word tbase(tpoff)-4 + .word tbase(tpoff)+0 + .word tbase(tpoff)+4 + .word tbase(tpoff)+8 + .word tbase(tpoff)+12 + .word tbase(tpoff) + + .section .tdata,"awT",%progbits +tbase = . + 12 + .word -12 + .word -8 + .word -4 + .word 0 + .word 4 + .word 8 + .word 12 + .word 0