From 5b49f6dc399d611d8d8a10e2e2c922f38e6bb038 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sat, 14 Mar 2009 09:33:39 +0000 Subject: include/coff/ * xcoff.h (XCOFF_ALLOCATED): New flag. bfd/ * xcofflink.c (xcoff_mark): When walking the relocations, only mark the target symbol or the target section, not both. (xcoff_final_definition_p): New function. (xcoff_keep_symbol_p): Use it to check whether an external XCOFF symbol is a valid definition of the associated output symbol. Use XCOFF_ALLOCATED to stop the same hash table entry having two output symbols. (bfd_xcoff_size_dynamic_sections): Set XCOFF_ALLOCATED when keeping a symbol. (xcoff_link_input_bfd): Use xcoff_final_definition_p. ld/testsuite/ * ld-powerpc/aix-no-dup-syms-1a.s, ld-powerpc/aix-no-dup-syms-1b.s, ld-powerpc/aix-no-dup-syms-1.ex, ld-powerpc/aix-no-dup-syms-1.im, ld-powerpc/aix-no-dup-syms-1-dso.dnd, ld-powerpc/aix-no-dup-syms-1-dso.drd, ld-powerpc/aix-no-dup-syms-1-dso.nd, ld-powerpc/aix-no-dup-syms-1-dso.rd, ld-powerpc/aix-no-dup-syms-1-rel.nd, ld-powerpc/aix-no-dup-syms-1-rel.rd: New tests. * ld-powerpc/aix52.exp: Run them. --- ld/testsuite/ChangeLog | 12 ++++++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd | 4 ++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd | 9 +++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd | 8 ++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd | 9 +++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd | 8 ++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd | 9 +++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex | 3 +++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im | 1 + ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s | 9 +++++++++ ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s | 9 +++++++++ ld/testsuite/ld-powerpc/aix52.exp | 12 ++++++++++++ 12 files changed, 93 insertions(+) create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s create mode 100644 ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s (limited to 'ld') diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 0edc58b..81a6599 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,5 +1,17 @@ 2009-03-14 Richard Sandiford + * ld-powerpc/aix-no-dup-syms-1a.s, ld-powerpc/aix-no-dup-syms-1b.s, + ld-powerpc/aix-no-dup-syms-1.ex, ld-powerpc/aix-no-dup-syms-1.im, + ld-powerpc/aix-no-dup-syms-1-dso.dnd, + ld-powerpc/aix-no-dup-syms-1-dso.drd, + ld-powerpc/aix-no-dup-syms-1-dso.nd, + ld-powerpc/aix-no-dup-syms-1-dso.rd, + ld-powerpc/aix-no-dup-syms-1-rel.nd, + ld-powerpc/aix-no-dup-syms-1-rel.rd: New tests. + * ld-powerpc/aix52.exp: Run them. + +2009-03-14 Richard Sandiford + * ld-powerpc/aix-abs-branch-1.nd, ld-powerpc/aix-abs-reloc-1.nd: New tests. * ld-powerpc/aix52.exp: Run them. diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd new file mode 100644 index 0000000..1fccdeb --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd @@ -0,0 +1,4 @@ + * U foo +0*10000000 D x +0*10000004 D x1 +0*10000014 D x2 diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd new file mode 100644 index 0000000..f262feb --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd @@ -0,0 +1,9 @@ + +.* + +DYNAMIC RELOCATION RECORDS +OFFSET * TYPE * VALUE +0*10000004 R_POS(|_32) * \.data +0*10000008 R_POS(|_32) * foo +0*10000014 R_POS(|_32) * \.data +0*10000018 R_POS(|_32) * foo diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd new file mode 100644 index 0000000..be25ff3 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd @@ -0,0 +1,8 @@ + * U foo +0*10000000 d x +0*10000000 D x +0*10000010 d x +0*10000004 d x1 +0*10000004 D x1 +0*10000014 d x2 +0*10000014 D x2 diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd new file mode 100644 index 0000000..d17151b --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd @@ -0,0 +1,9 @@ + +.* + +RELOCATION RECORDS FOR \[\.data\]: +OFFSET * TYPE * VALUE +0+04 R_POS(|_32) * x\+0xf*f0000000 +0+08 R_POS(|_32) * foo +0+14 R_POS(|_32) * x\+0xf*effffff0 +0+18 R_POS(|_32) * foo diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd new file mode 100644 index 0000000..e2bdbc4 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd @@ -0,0 +1,8 @@ + + U foo +0+00 d x +0+00 D x +0+10 d x +0+04 d x1 +0+04 D x1 +0+14 d x2 +0+14 D x2 diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd new file mode 100644 index 0000000..436ad98 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd @@ -0,0 +1,9 @@ + +.* + +RELOCATION RECORDS FOR \[\.data\]: +OFFSET * TYPE * VALUE +0+04 R_POS(|_32) * x +0+08 R_POS(|_32) * foo +0+14 R_POS(|_32) * x\+0xf+0 +0+18 R_POS(|_32) * foo diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex new file mode 100644 index 0000000..8f1fe4d --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex @@ -0,0 +1,3 @@ +x +x1 +x2 diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im @@ -0,0 +1 @@ +foo diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s new file mode 100644 index 0000000..3138670 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s @@ -0,0 +1,9 @@ + .globl x + .csect x[RW] +x: + .long 4 + .globl x1 + .csect x1[RW] +x1: + .long x + .long foo diff --git a/ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s new file mode 100644 index 0000000..c5fcf38 --- /dev/null +++ b/ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s @@ -0,0 +1,9 @@ + .globl x + .csect x[RW] +x: + .long 8 + .globl x2 + .csect x2[RW] +x2: + .long x + .long foo diff --git a/ld/testsuite/ld-powerpc/aix52.exp b/ld/testsuite/ld-powerpc/aix52.exp index 10e2031..6cd26fe 100644 --- a/ld/testsuite/ld-powerpc/aix52.exp +++ b/ld/testsuite/ld-powerpc/aix52.exp @@ -96,6 +96,18 @@ set aix52tests { {{objdump -h aix-core-sec-3.hd}} "aix-core-sec-3.so"} + {"Duplicate symbol check 1 (rel)" "-r" + "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s} + {{nm {} aix-no-dup-syms-1-rel.nd} {objdump -r aix-no-dup-syms-1-rel.rd}} + "aix-no-dup-syms-1.o"} + + {"Duplicate symbol check 1 (shared)" + "-shared --allow-multiple-definition -bI:aix-no-dup-syms-1.im -bE:aix-no-dup-syms-1.ex" + "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s} + {{nm {} aix-no-dup-syms-1-dso.nd} {objdump -r aix-no-dup-syms-1-dso.rd} + {nm -D aix-no-dup-syms-1-dso.dnd} {objdump -R aix-no-dup-syms-1-dso.drd}} + "aix-no-dup-syms-1.so"} + {"Glink test 1" "-shared -bE:aix-glink-1.ex --unresolved-symbols=ignore-all" "" {aix-glink-1.s} -- cgit v1.1