aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2010-01-23 12:05:33 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2010-01-23 12:05:33 +0000
commitc865e45b1b6d482d20b3f6096d5227216db0e451 (patch)
tree22f683e1c80498b296b3c10cd2a906f305cce9cc /ld/testsuite/ld-powerpc
parentd35e937f74be8b03c594eb2b070db34c4e0541d6 (diff)
downloadgdb-c865e45b1b6d482d20b3f6096d5227216db0e451.zip
gdb-c865e45b1b6d482d20b3f6096d5227216db0e451.tar.gz
gdb-c865e45b1b6d482d20b3f6096d5227216db0e451.tar.bz2
bfd/
* coff-rs6000.c (xcoff_howto_table): Change size to 0 and bitsize to 1. (_bfd_xcoff_reloc_type_lookup): Handle BFD_RELOC_NONE. * coff64-rs6000.c (xcoff64_howto_table): Change size to 0 and bitsize to 1. (xcoff64_reloc_type_lookup): Handle BFD_RELOC_NONE. gas/ * write.h (fix_at_start): Declare. * write.c (fix_new_internal): Add at_beginning parameter. Use it instead of REVERSE_SORT_RELOCS. Fix the handling of seg_fix_tailP for the at_beginning/REVERSE_SORT_RELOCS case. (fix_new, fix_new_exp): Update accordingly. (fix_at_start): New function. * config/tc-ppc.c (md_pseudo_table): Add .ref to the OBJ_XCOFF section. (ppc_ref): New function, for OBJ_XCOFF. (md_apply_fix): Handle BFD_RELOC_NONE for OBJ_XCOFF. * config/te-i386aix.h (REVERSE_SORT_RELOCS): Remove #undef. gas/testsuite/ * gas/ppc/xcoff-ref-1.s, gas/ppc/xcoff-ref-1.l: New test. * gas/ppc/aix.exp: Run it. ld/testsuite/ * ld-powerpc/aix-ref-1-32.od, ld-powerpc/aix-ref-1-64.od, ld-powerpc/aix-ref-1.s: New tests. * ld-powerpc/aix52.exp: Run them.
Diffstat (limited to 'ld/testsuite/ld-powerpc')
-rw-r--r--ld/testsuite/ld-powerpc/aix-ref-1-32.od30
-rw-r--r--ld/testsuite/ld-powerpc/aix-ref-1-64.od30
-rw-r--r--ld/testsuite/ld-powerpc/aix-ref-1.s57
-rw-r--r--ld/testsuite/ld-powerpc/aix52.exp5
4 files changed, 122 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/aix-ref-1-32.od b/ld/testsuite/ld-powerpc/aix-ref-1-32.od
new file mode 100644
index 0000000..1ba90ec
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-ref-1-32.od
@@ -0,0 +1,30 @@
+
+.*
+
+
+Disassembly of section \.text:
+
+.* <foo1>:
+.*: 60 00 00 00 oril r0,r0,0
+ .*: R_REF foo2\+.*
+.*: 80 22 00 00 l r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+.*: 4e 80 00 20 br
+
+.* <foo2>:
+.*: 60 00 00 00 oril r0,r0,0
+ .*: R_REF foo6\+.*
+ .*: R_REF foo4\+.*
+.*: 80 22 00 00 l r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+
+.* <foo4>:
+.*: 60 00 00 00 oril r0,r0,0
+.*: 80 22 00 00 l r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+
+.* <foo6>:
+.*: 60 00 00 00 oril r0,r0,0
+.*: 80 22 00 00 l r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+ \.\.\.
diff --git a/ld/testsuite/ld-powerpc/aix-ref-1-64.od b/ld/testsuite/ld-powerpc/aix-ref-1-64.od
new file mode 100644
index 0000000..9cc6e9d
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-ref-1-64.od
@@ -0,0 +1,30 @@
+
+.*
+
+
+Disassembly of section \.text:
+
+.* <foo1>:
+ .*: 60 00 00 00 nop
+ .*: R_REF foo2\+.*
+ .*: e8 22 00 00 ld r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+ .*: 4e 80 00 20 blr
+
+.* <foo2>:
+ .*: 60 00 00 00 nop
+ .*: R_REF foo6\+.*
+ .*: R_REF foo4\+.*
+ .*: e8 22 00 00 ld r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+
+.* <foo4>:
+ .*: 60 00 00 00 nop
+ .*: e8 22 00 00 ld r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+
+.* <foo6>:
+ .*: 60 00 00 00 nop
+ .*: e8 22 00 00 ld r1,0\(r2\)
+ .*: R_TOC stuff\+.*
+ \.\.\.
diff --git a/ld/testsuite/ld-powerpc/aix-ref-1.s b/ld/testsuite/ld-powerpc/aix-ref-1.s
new file mode 100644
index 0000000..33445a6
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-ref-1.s
@@ -0,0 +1,57 @@
+ .macro loadtoc,sym
+ .if size == 32
+ lwz 1,\sym(2)
+ .else
+ ld 1,\sym(2)
+ .endif
+ .endm
+
+ .toc
+LC01: .tc stuff[TC],stuff[RW]
+
+ .globl foo1
+ .csect foo1[pr]
+foo1:
+ .align 8
+ nop
+ loadtoc LC01
+
+ .globl foo2
+ .csect foo2[pr]
+foo2:
+ nop
+ loadtoc LC01
+ .ref foo4 , foo6
+
+ .globl foo3
+ .csect foo3[pr]
+foo3:
+ nop
+ loadtoc LC01
+
+ .globl foo4
+ .csect foo4[pr]
+foo4:
+ nop
+ loadtoc LC01
+
+ .globl foo5
+ .csect foo5[pr]
+foo5:
+ nop
+ loadtoc LC01
+ .ref foo3
+
+ .globl foo6
+ .csect foo6[pr]
+foo6:
+ nop
+ loadtoc LC01
+
+ .csect foo1[pr]
+ blr
+ .ref foo2
+
+ .csect stuff[rw]
+stuff:
+ .long 1
diff --git a/ld/testsuite/ld-powerpc/aix52.exp b/ld/testsuite/ld-powerpc/aix52.exp
index d608490..2f00cff 100644
--- a/ld/testsuite/ld-powerpc/aix52.exp
+++ b/ld/testsuite/ld-powerpc/aix52.exp
@@ -196,6 +196,11 @@ set aix52tests {
"" {aix-rel-1.s}
{{objdump -hr aix-rel-1.od}} "aix-rel-1.ro"}
+ {".ref test 1" "-efoo1"
+ "" {aix-ref-1.s}
+ {{objdump -dr aix-ref-1-SIZE.od}}
+ "aix-ref-1"}
+
{"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}}