From c8a1f2548b56bc210c8bcb067e91de8132f56d67 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Wed, 27 May 2009 13:31:24 +0000 Subject: bfd/ * elf32-ppc.c (ppc_elf_relax_section): Work with a partial link. * bout.c (b_out_bfd_relax_section): Reject relocatable links. * elf32-m10300.c (mn10300_elf_relax_section): Likewise. * elf32-avr.c (elf32_avr_relax_section): Likewise. * elf32-frv.c (elf32_avr_relax_section): Likewise. * elf32-xtensa.c (elf_xtensa_relax_section): Likewise. * elf64-mmix.c (mmix_elf_relax_section): Likewise. * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_relax_section): Likewise. * reloc.c (bfd_generic_relax_section): Likewise. * reloc16.c (bfd_coff_reloc16_relax_section): Likewise. * vms.c (vms_bfd_relax_section): Likewise. ld/ * ldmain.c (main): Don't reject --relax -r. * ld.texinfo (PowerPC ELF32): Document behaviour of relaxing partial links. ld/testsuite/ * ld-powerpc/vxworks-relax-2.s: New. * ld-powerpc/vxworks-relax-2.rd: New. * ld-powerpc/powerpc.exp: Add it. --- ld/ChangeLog | 6 ++++++ ld/ld.texinfo | 5 ++++- ld/ldmain.c | 2 -- ld/testsuite/ChangeLog | 6 ++++++ ld/testsuite/ld-powerpc/powerpc.exp | 5 +++++ ld/testsuite/ld-powerpc/vxworks-relax-2.rd | 11 +++++++++++ ld/testsuite/ld-powerpc/vxworks-relax-2.s | 14 ++++++++++++++ 7 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 ld/testsuite/ld-powerpc/vxworks-relax-2.rd create mode 100644 ld/testsuite/ld-powerpc/vxworks-relax-2.s (limited to 'ld') diff --git a/ld/ChangeLog b/ld/ChangeLog index b996d65..9c02e69 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2009-05-26 Nathan Sidwell + + * ldmain.c (main): Don't reject --relax -r. + * ld.texinfo (PowerPC ELF32): Document behaviour of relaxing + partial links. + 2009-05-26 Nick Clifton * po/id.po: Updated Indonesian translation. diff --git a/ld/ld.texinfo b/ld/ld.texinfo index fbda265..57286ba 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -6284,7 +6284,10 @@ displacement, which may result in @command{ld} giving @samp{--relax} enables the generation of trampolines that can access the entire 32-bit address space. These trampolines are inserted at section boundaries, so may not themselves be reachable if an input -section exceeds 33M in size. +section exceeds 33M in size. You may combine @samp{-r} and +@samp{--relax} to add trampolines in a partial link. In that case +both branches to undefined symbols and inter-section branches are also +considered potentially out of range, and trampolines inserted. @cindex PowerPC ELF32 options @table @option diff --git a/ld/ldmain.c b/ld/ldmain.c index 7cb4fc9..3b8fed6 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -294,8 +294,6 @@ main (int argc, char **argv) { if (command_line.check_section_addresses < 0) command_line.check_section_addresses = 0; - if (command_line.relax) - einfo (_("%P%F: --relax and -r may not be used together\n")); if (link_info.shared) einfo (_("%P%F: -r and -shared may not be used together\n")); } diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 06b10c3..9d54d03 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-05-26 Nathan Sidwell + + * ld-powerpc/vxworks-relax-2.s: New. + * ld-powerpc/vxworks-relax-2.rd: New. + * ld-powerpc/powerpc.exp: Add it. + 2009-05-22 Hans-Peter Nilsson * ld-scripts/rgn-over7.d: Adjust expected message for recent change. diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 2ed41f2..bc63a46 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -54,6 +54,11 @@ if {[istarget "*-*-vxworks"]} { "-mregnames" {vxworks-relax.s} {{readelf --relocs vxworks-relax.rd}} "vxworks-relax"} + {"VxWorks relocatable relax test" + "-Tvxworks1.ld -r --relax -q" + "-mregnames" {vxworks-relax-2.s} + {{readelf --relocs vxworks-relax-2.rd}} + "vxworks-relax-2"} } run_ld_link_tests $ppcvxtests run_dump_test "vxworks1-static" diff --git a/ld/testsuite/ld-powerpc/vxworks-relax-2.rd b/ld/testsuite/ld-powerpc/vxworks-relax-2.rd new file mode 100644 index 0000000..02eb964 --- /dev/null +++ b/ld/testsuite/ld-powerpc/vxworks-relax-2.rd @@ -0,0 +1,11 @@ + +Relocation section '.rela.text' at offset 0x[0-9a-f]+ contains 8 entries: + Offset Info Type Sym.Value Sym. Name \+ Addend +00000016 00000106 R_PPC_ADDR16_HA 00000000 .text \+ 4000034 +0000001a 00000104 R_PPC_ADDR16_LO 00000000 .text \+ 4000034 +00000006 00000106 R_PPC_ADDR16_HA 00000000 .text \+ 4000034 +0000000a 00000104 R_PPC_ADDR16_LO 00000000 .text \+ 4000034 +00000026 00000506 R_PPC_ADDR16_HA 00000000 undefined \+ 0 +0000002a 00000504 R_PPC_ADDR16_LO 00000000 undefined \+ 0 +0400003e 00000606 R_PPC_ADDR16_HA 00000000 _start \+ 0 +04000042 00000604 R_PPC_ADDR16_LO 00000000 _start \+ 0 diff --git a/ld/testsuite/ld-powerpc/vxworks-relax-2.s b/ld/testsuite/ld-powerpc/vxworks-relax-2.s new file mode 100644 index 0000000..4e58124 --- /dev/null +++ b/ld/testsuite/ld-powerpc/vxworks-relax-2.s @@ -0,0 +1,14 @@ + .globl _start +_start: + bl elsewhere + lis 9,elsewhere@ha + la 0,elsewhere@l(9) + bl undefined + + + .section .far,"ax",@progbits +elsewhere: + bl _start + + .section .pad + .space 0x4000000 -- cgit v1.1