From b3d1832c347fbfdf0c816aaa8910fc327c929b02 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 1 Apr 2009 19:27:38 +0000 Subject: bfd/ * xcofflink.c (xcoff_link_create_extra_sections): Don't create a .loader section for relocatable links. (xcoff_need_ldrel_p): New function. (xcoff_mark): Use it. (bfd_xcoff_link_count_reloc): Only count loader relocs if there's a loader section. (xcoff_build_ldsym): New function, split out from... (xcoff_build_ldsyms): ...here. Rename to... (xcoff_post_gc_symbol): ...this. Only export symbols, and only call xcoff_build_ldsym, if there's a loader section. (xcoff_build_loader_section): New function, extracted verbatim from... (bfd_xcoff_size_dynamic_sections): ...here. Only call it if there's a loader section. Only add an __rtinit loader symbol if there's a loader section. Update after above name change. (xcoff_symbol_section, xcoff_create_ldrel): New functions. (bfd_link_input_bfd): Use xcoff_need_ldrel_p, xcoff_symbol_section and xcoff_create_ldrel. (xcoff_write_global_symbol): Use xcoff_create_ldrel. (xcoff_reloc_link_order): Likewise, but only call it if there's a loader section. Use xcoff_symbol_section. (_bfd_xcoff_bfd_final_link): Only use fdinfo.ldrel and fdinfo.ldsym if there's a loader section. ld/testsuite/ * ld-powerpc/aix-rel-1.s, ld-powerpc/aix-rel-1.od: New test. * ld-powerpc/aix52.exp: Run it. --- ld/testsuite/ld-powerpc/aix-rel-1.od | 22 ++++++++++++++++++++++ ld/testsuite/ld-powerpc/aix-rel-1.s | 5 +++++ ld/testsuite/ld-powerpc/aix52.exp | 4 ++++ 3 files changed, 31 insertions(+) create mode 100644 ld/testsuite/ld-powerpc/aix-rel-1.od create mode 100644 ld/testsuite/ld-powerpc/aix-rel-1.s (limited to 'ld') diff --git a/ld/testsuite/ld-powerpc/aix-rel-1.od b/ld/testsuite/ld-powerpc/aix-rel-1.od new file mode 100644 index 0000000..0d9f2bb --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-rel-1.od @@ -0,0 +1,22 @@ + +.* + +# It doesn't matter whether .text, .bss and .debug are listed, as long as +# they're empty. The important thing is that .loader shouldn't appear +# at all. +Sections: + *Idx Name * Size .* + *0 \.text * 0+0 .* + *ALLOC, LOAD, CODE + *1 \.data * 0+8 .* + *CONTENTS, ALLOC, LOAD, RELOC, DATA + *2 \.bss * 0+0 .* + *ALLOC + *3 \.debug * 0+0 .* + +RELOCATION RECORDS FOR \[\.data\]: +OFFSET * TYPE * VALUE +0+0 R_POS(|_32) * \.puts +0+4 R_POS(|_32) * foobar + + diff --git a/ld/testsuite/ld-powerpc/aix-rel-1.s b/ld/testsuite/ld-powerpc/aix-rel-1.s new file mode 100644 index 0000000..9891ba8 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-rel-1.s @@ -0,0 +1,5 @@ + .globl foo + .csect foo[RW] +foo: + .long .puts + .long foobar diff --git a/ld/testsuite/ld-powerpc/aix52.exp b/ld/testsuite/ld-powerpc/aix52.exp index fb2307a..c88ba9b 100644 --- a/ld/testsuite/ld-powerpc/aix52.exp +++ b/ld/testsuite/ld-powerpc/aix52.exp @@ -171,6 +171,10 @@ set aix52tests { {{objdump -d aix-glink-2-SIZE.dd}} "aix-glink-2"} + {"Relocatable test 1" "-r" + "" {aix-rel-1.s} + {{objdump -hr aix-rel-1.od}} "aix-rel-1.ro"} + {"Weak test 1 (rel)" "-r" "" {aix-weak-1a.s aix-weak-1b.s} {{nm {} aix-weak-1-rel.nd} {objdump -h aix-weak-1-rel.hd}} -- cgit v1.1