summaryrefslogtreecommitdiffstats
path: root/ld
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2009-03-14 09:33:39 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2009-03-14 09:33:39 +0000
commit5b49f6dc399d611d8d8a10e2e2c922f38e6bb038 (patch)
treef096af83ad80c8bac6b59c53333d58be80bf0843 /ld
parentc4037431e0ee0a46a4b8717ee6de97546143995b (diff)
downloadppe42-binutils-5b49f6dc399d611d8d8a10e2e2c922f38e6bb038.tar.gz
ppe42-binutils-5b49f6dc399d611d8d8a10e2e2c922f38e6bb038.zip
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.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog12
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.dnd4
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.drd9
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.nd8
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-dso.rd9
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.nd8
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1-rel.rd9
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1.ex3
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1.im1
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1a.s9
-rw-r--r--ld/testsuite/ld-powerpc/aix-no-dup-syms-1b.s9
-rw-r--r--ld/testsuite/ld-powerpc/aix52.exp12
12 files changed, 93 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 0edc58b31c..81a65990b8 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,17 @@
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+ * 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 <r.sandiford@uk.ibm.com>
+
* 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 0000000000..1fccdeb839
--- /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 0000000000..f262febd42
--- /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 0000000000..be25ff37c3
--- /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 0000000000..d17151ba41
--- /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 0000000000..e2bdbc4b8a
--- /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 0000000000..436ad9841d
--- /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 0000000000..8f1fe4d696
--- /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 0000000000..257cc5642c
--- /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 0000000000..3138670771
--- /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 0000000000..c5fcf38df9
--- /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 10e2031195..6cd26fe8f5 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}
OpenPOWER on IntegriCloud