Message ID | 5177A5BF.8080406@linaro.org |
---|---|
State | Accepted |
Headers | show |
Will Newton <will.newton@linaro.org> writes: > bfd/ChangeLog: > > 2013-04-24 Will Newton <will.newton@linaro.org> > > * elf32-arm.c (elf32_arm_populate_plt_entry): Call > elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. > > ld/testsuite/ChangeLog: > > 2013-04-24 Will Newton <will.newton@linaro.org> > > * ld-arm/arm-elf.exp: Add IFUNC test 17. > * ld-arm/ifunc-17.dd: New file. > * ld-arm/ifunc-17.gd: Likewise. > * ld-arm/ifunc-17.rd: Likewise. > * ld-arm/ifunc-17.s: Likweise. > * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. > * ld-arm/ifunc-2.rd: Likewise. > * ld-arm/ifunc-5.rd: Likewise. > * ld-arm/ifunc-6.rd: Likewise. Looks good, thanks. OK if no ARM maintainer objects in 48 hours. Richard
On 26 April 2013 09:59, Richard Sandiford <rdsandiford@googlemail.com> wrote: > Will Newton <will.newton@linaro.org> writes: >> bfd/ChangeLog: >> >> 2013-04-24 Will Newton <will.newton@linaro.org> >> >> * elf32-arm.c (elf32_arm_populate_plt_entry): Call >> elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. >> >> ld/testsuite/ChangeLog: >> >> 2013-04-24 Will Newton <will.newton@linaro.org> >> >> * ld-arm/arm-elf.exp: Add IFUNC test 17. >> * ld-arm/ifunc-17.dd: New file. >> * ld-arm/ifunc-17.gd: Likewise. >> * ld-arm/ifunc-17.rd: Likewise. >> * ld-arm/ifunc-17.s: Likweise. >> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >> * ld-arm/ifunc-2.rd: Likewise. >> * ld-arm/ifunc-5.rd: Likewise. >> * ld-arm/ifunc-6.rd: Likewise. > > Looks good, thanks. OK if no ARM maintainer objects in 48 hours. Thanks, applied. -- Will Newton Toolchain Working Group, Linaro
On 29 April 2013 10:51, Will Newton <will.newton@linaro.org> wrote: > On 26 April 2013 09:59, Richard Sandiford <rdsandiford@googlemail.com> wrote: >> Will Newton <will.newton@linaro.org> writes: >>> bfd/ChangeLog: >>> >>> 2013-04-24 Will Newton <will.newton@linaro.org> >>> >>> * elf32-arm.c (elf32_arm_populate_plt_entry): Call >>> elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. >>> >>> ld/testsuite/ChangeLog: >>> >>> 2013-04-24 Will Newton <will.newton@linaro.org> >>> >>> * ld-arm/arm-elf.exp: Add IFUNC test 17. >>> * ld-arm/ifunc-17.dd: New file. >>> * ld-arm/ifunc-17.gd: Likewise. >>> * ld-arm/ifunc-17.rd: Likewise. >>> * ld-arm/ifunc-17.s: Likweise. >>> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >>> * ld-arm/ifunc-2.rd: Likewise. >>> * ld-arm/ifunc-5.rd: Likewise. >>> * ld-arm/ifunc-6.rd: Likewise. >> >> Looks good, thanks. OK if no ARM maintainer objects in 48 hours. > > Thanks, applied. Tristan, is this ok for the 2.23 branch? Thanks, -- Will Newton Toolchain Working Group, Linaro
On 29 April 2013 15:58, Hans-Peter Nilsson <hans-peter.nilsson@axis.com> wrote: >> From: Will Newton <will.newton@linaro.org> >> Date: Wed, 24 Apr 2013 11:28:31 +0200 > >> ld/testsuite/ChangeLog: >> >> 2013-04-24 Will Newton <will.newton@linaro.org> >> >> * ld-arm/arm-elf.exp: Add IFUNC test 17. >> * ld-arm/ifunc-17.dd: New file. >> * ld-arm/ifunc-17.gd: Likewise. >> * ld-arm/ifunc-17.rd: Likewise. >> * ld-arm/ifunc-17.s: Likweise. >> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >> * ld-arm/ifunc-2.rd: Likewise. >> * ld-arm/ifunc-5.rd: Likewise. >> * ld-arm/ifunc-6.rd: Likewise. > > Please fix the FAIL introduced for arm-eabi: > > ... > Target is arm-unknown-eabi > Host is x86_64-unknown-linux-gnu > ... > Running /tmp/hpautotest-binutils/bsrc/src/ld/testsuite/ld-arm/arm-elf.exp ... > FAIL: IFUNC test 17 Thanks for noticing this. I will post a patch. -- Will Newton Toolchain Working Group, Linaro
On 29 April 2013 15:36, Will Newton <will.newton@linaro.org> wrote: > On 29 April 2013 10:51, Will Newton <will.newton@linaro.org> wrote: >> On 26 April 2013 09:59, Richard Sandiford <rdsandiford@googlemail.com> wrote: >>> Will Newton <will.newton@linaro.org> writes: >>>> bfd/ChangeLog: >>>> >>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>> >>>> * elf32-arm.c (elf32_arm_populate_plt_entry): Call >>>> elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. >>>> >>>> ld/testsuite/ChangeLog: >>>> >>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>> >>>> * ld-arm/arm-elf.exp: Add IFUNC test 17. >>>> * ld-arm/ifunc-17.dd: New file. >>>> * ld-arm/ifunc-17.gd: Likewise. >>>> * ld-arm/ifunc-17.rd: Likewise. >>>> * ld-arm/ifunc-17.s: Likweise. >>>> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >>>> * ld-arm/ifunc-2.rd: Likewise. >>>> * ld-arm/ifunc-5.rd: Likewise. >>>> * ld-arm/ifunc-6.rd: Likewise. >>> >>> Looks good, thanks. OK if no ARM maintainer objects in 48 hours. >> >> Thanks, applied. > > Tristan, is this ok for the 2.23 branch? Ping? Is this patch (and the follow-up that fixes the arm-eabi testsuite failure) ok for the 2.23 branch? Thanks, -- Will Newton Toolchain Working Group, Linaro
On May 28, 2013, at 9:50 AM, Will Newton <will.newton@linaro.org> wrote: > On 29 April 2013 15:36, Will Newton <will.newton@linaro.org> wrote: >> On 29 April 2013 10:51, Will Newton <will.newton@linaro.org> wrote: >>> On 26 April 2013 09:59, Richard Sandiford <rdsandiford@googlemail.com> wrote: >>>> Will Newton <will.newton@linaro.org> writes: >>>>> bfd/ChangeLog: >>>>> >>>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>>> >>>>> * elf32-arm.c (elf32_arm_populate_plt_entry): Call >>>>> elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. >>>>> >>>>> ld/testsuite/ChangeLog: >>>>> >>>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>>> >>>>> * ld-arm/arm-elf.exp: Add IFUNC test 17. >>>>> * ld-arm/ifunc-17.dd: New file. >>>>> * ld-arm/ifunc-17.gd: Likewise. >>>>> * ld-arm/ifunc-17.rd: Likewise. >>>>> * ld-arm/ifunc-17.s: Likweise. >>>>> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >>>>> * ld-arm/ifunc-2.rd: Likewise. >>>>> * ld-arm/ifunc-5.rd: Likewise. >>>>> * ld-arm/ifunc-6.rd: Likewise. >>>> >>>> Looks good, thanks. OK if no ARM maintainer objects in 48 hours. >>> >>> Thanks, applied. >> >> Tristan, is this ok for the 2.23 branch? > > Ping? > > Is this patch (and the follow-up that fixes the arm-eabi testsuite > failure) ok for the 2.23 branch? Yes, this is OK for 2.23 (although I am not sure there will be a new 2.23 release) Tristan.
On 28 May 2013 14:43, Tristan Gingold <gingold@adacore.com> wrote: > > On May 28, 2013, at 9:50 AM, Will Newton <will.newton@linaro.org> wrote: > >> On 29 April 2013 15:36, Will Newton <will.newton@linaro.org> wrote: >>> On 29 April 2013 10:51, Will Newton <will.newton@linaro.org> wrote: >>>> On 26 April 2013 09:59, Richard Sandiford <rdsandiford@googlemail.com> wrote: >>>>> Will Newton <will.newton@linaro.org> writes: >>>>>> bfd/ChangeLog: >>>>>> >>>>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>>>> >>>>>> * elf32-arm.c (elf32_arm_populate_plt_entry): Call >>>>>> elf32_arm_add_dynreloc when emitting R_ARM_IRELATIVE relocs. >>>>>> >>>>>> ld/testsuite/ChangeLog: >>>>>> >>>>>> 2013-04-24 Will Newton <will.newton@linaro.org> >>>>>> >>>>>> * ld-arm/arm-elf.exp: Add IFUNC test 17. >>>>>> * ld-arm/ifunc-17.dd: New file. >>>>>> * ld-arm/ifunc-17.gd: Likewise. >>>>>> * ld-arm/ifunc-17.rd: Likewise. >>>>>> * ld-arm/ifunc-17.s: Likweise. >>>>>> * ld-arm/ifunc-1.rd: Reorder relocs to match linker output. >>>>>> * ld-arm/ifunc-2.rd: Likewise. >>>>>> * ld-arm/ifunc-5.rd: Likewise. >>>>>> * ld-arm/ifunc-6.rd: Likewise. >>>>> >>>>> Looks good, thanks. OK if no ARM maintainer objects in 48 hours. >>>> >>>> Thanks, applied. >>> >>> Tristan, is this ok for the 2.23 branch? >> >> Ping? >> >> Is this patch (and the follow-up that fixes the arm-eabi testsuite >> failure) ok for the 2.23 branch? > > Yes, this is OK for 2.23 (although I am not sure there will be a new 2.23 release) Thanks, applied. -- Will Newton Toolchain Working Group, Linaro
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 9fff630..eabf6f1 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -7695,8 +7695,13 @@ elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info, sgot->contents + got_offset); } - loc = srel->contents + plt_index * RELOC_SIZE (htab); - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); + if (dynindx == -1) + elf32_arm_add_dynreloc (output_bfd, info, srel, &rel); + else + { + loc = srel->contents + plt_index * RELOC_SIZE (htab); + SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); + } } /* Some relocations map to different relocations depending on the diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index f13fae5..c488e3c 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -451,6 +451,11 @@ set armelftests_nonacl { {objdump {-s -j.data -j.got} ifunc-16.gd} {readelf -r ifunc-16.rd}} "ifunc-16"} + {"IFUNC test 17" "" "" "" {ifunc-17.s} + {{objdump -d ifunc-17.dd} + {objdump {-s -j.data -j.got} ifunc-17.gd} + {readelf -r ifunc-17.rd}} + "ifunc-17"} } run_ld_link_tests $armelftests_common diff --git a/ld/testsuite/ld-arm/ifunc-1.rd b/ld/testsuite/ld-arm/ifunc-1.rd index 75e6d70..2644123 100644 --- a/ld/testsuite/ld-arm/ifunc-1.rd +++ b/ld/testsuite/ld-arm/ifunc-1.rd @@ -4,5 +4,5 @@ There is no dynamic section in this file\. Relocation section '\.rel\.dyn' at offset 0x8000 contains 3 entries: Offset Info Type Sym\.Value Sym\. Name 0001100c ......a0 R_ARM_IRELATIVE -00011010 ......a0 R_ARM_IRELATIVE 00011014 ......a0 R_ARM_IRELATIVE +00011010 ......a0 R_ARM_IRELATIVE diff --git a/ld/testsuite/ld-arm/ifunc-17.dd b/ld/testsuite/ld-arm/ifunc-17.dd new file mode 100644 index 0000000..f23a249 --- /dev/null +++ b/ld/testsuite/ld-arm/ifunc-17.dd @@ -0,0 +1,25 @@ + +.* + + +Disassembly of section \.iplt: + +00008084 <.iplt>: +#------------------------------------------------------------------------------ +#------ appfunc1's .iplt entry +#------------------------------------------------------------------------------ + 8084: e28fc600 add ip, pc, #0, 12 + 8088: e28cca08 add ip, ip, #8, 20 ; 0x8000 + 808c: e5bcf01c ldr pc, \[ip, #28\]! + +Disassembly of section \.text: + +00008090 <appfunc1>: + 8090: 46f7 mov pc, lr + +00008092 <appfunc2>: + 8092: 46f7 mov pc, lr + +00008094 <_start>: + 8094: f7ff eff6 blx 8084 <appfunc1-0xc> + 8098: 00000010 \.word 0x00000010 diff --git a/ld/testsuite/ld-arm/ifunc-17.gd b/ld/testsuite/ld-arm/ifunc-17.gd new file mode 100644 index 0000000..4a12eb8 --- /dev/null +++ b/ld/testsuite/ld-arm/ifunc-17.gd @@ -0,0 +1,10 @@ + +.* + +Contents of section \.got: +#------------------------------------------------------------------------------ +#------ 000100a8: 0x8091 (appfunc1) +#------ 000100ac: 0x8093 (appfunc2) +#------------------------------------------------------------------------------ + 1009c 00000000 00000000 00000000 91800000 .* + 100ac 93800000 .* diff --git a/ld/testsuite/ld-arm/ifunc-17.rd b/ld/testsuite/ld-arm/ifunc-17.rd new file mode 100644 index 0000000..a93fd64 --- /dev/null +++ b/ld/testsuite/ld-arm/ifunc-17.rd @@ -0,0 +1,5 @@ + +Relocation section '\.rel\.dyn' at offset 0x74 contains 2 entries: + Offset Info Type Sym\.Value Sym\. Name +000100a8 ......a0 R_ARM_IRELATIVE +000100ac ......a0 R_ARM_IRELATIVE diff --git a/ld/testsuite/ld-arm/ifunc-17.s b/ld/testsuite/ld-arm/ifunc-17.s new file mode 100644 index 0000000..75c4c56 --- /dev/null +++ b/ld/testsuite/ld-arm/ifunc-17.s @@ -0,0 +1,24 @@ + .syntax unified + .arch armv6t2 + + .global appfunc1 + .type appfunc1,%gnu_indirect_function + .thumb +appfunc1: + mov pc,lr + .size appfunc1,.-appfunc1 + + .global appfunc2 + .type appfunc2,%gnu_indirect_function + .thumb +appfunc2: + mov pc,lr + .size appfunc2,.-appfunc2 + + .global _start + .type _start,%function + .thumb +_start: + bl appfunc1(PLT) + .word appfunc2(GOT) + .size _start,.-_start diff --git a/ld/testsuite/ld-arm/ifunc-2.rd b/ld/testsuite/ld-arm/ifunc-2.rd index 92b000a..7bbabf4 100644 --- a/ld/testsuite/ld-arm/ifunc-2.rd +++ b/ld/testsuite/ld-arm/ifunc-2.rd @@ -5,9 +5,9 @@ Relocation section '\.rel\.dyn' at offset 0x8000 contains 8 entries: Offset Info Type Sym\.Value Sym\. Name 0001100c ......a0 R_ARM_IRELATIVE 00011010 ......a0 R_ARM_IRELATIVE +00011020 ......a0 R_ARM_IRELATIVE +00011028 ......a0 R_ARM_IRELATIVE 00011014 ......a0 R_ARM_IRELATIVE 00011018 ......a0 R_ARM_IRELATIVE 0001101c ......a0 R_ARM_IRELATIVE -00011020 ......a0 R_ARM_IRELATIVE 00011024 ......a0 R_ARM_IRELATIVE -00011028 ......a0 R_ARM_IRELATIVE diff --git a/ld/testsuite/ld-arm/ifunc-5.rd b/ld/testsuite/ld-arm/ifunc-5.rd index 75e6d70..2644123 100644 --- a/ld/testsuite/ld-arm/ifunc-5.rd +++ b/ld/testsuite/ld-arm/ifunc-5.rd @@ -4,5 +4,5 @@ There is no dynamic section in this file\. Relocation section '\.rel\.dyn' at offset 0x8000 contains 3 entries: Offset Info Type Sym\.Value Sym\. Name 0001100c ......a0 R_ARM_IRELATIVE -00011010 ......a0 R_ARM_IRELATIVE 00011014 ......a0 R_ARM_IRELATIVE +00011010 ......a0 R_ARM_IRELATIVE diff --git a/ld/testsuite/ld-arm/ifunc-6.rd b/ld/testsuite/ld-arm/ifunc-6.rd index 0fbfec5..04c18a9 100644 --- a/ld/testsuite/ld-arm/ifunc-6.rd +++ b/ld/testsuite/ld-arm/ifunc-6.rd @@ -3,7 +3,7 @@ There is no dynamic section in this file\. Relocation section '\.rel\.dyn' at offset 0x8000 contains 4 entries: Offset Info Type Sym\.Value Sym\. Name -0001100c ......a0 R_ARM_IRELATIVE +00011018 ......a0 R_ARM_IRELATIVE 00011010 ......a0 R_ARM_IRELATIVE +0001100c ......a0 R_ARM_IRELATIVE 00011014 ......a0 R_ARM_IRELATIVE -00011018 ......a0 R_ARM_IRELATIVE