aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2004-07-08 15:43:00 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2004-07-08 15:43:00 +0000
commit17a6716ad03a8b735c7b8afb36aa3b00665d6f34 (patch)
treed30d15f73bb7f01f360256d658a5963564d3670a /ld
parent855bd88ab87f67a9ca044d6caabc004bc2a409c2 (diff)
downloadgdb-17a6716ad03a8b735c7b8afb36aa3b00665d6f34.zip
gdb-17a6716ad03a8b735c7b8afb36aa3b00665d6f34.tar.gz
gdb-17a6716ad03a8b735c7b8afb36aa3b00665d6f34.tar.bz2
* ld-mips-elf/reloc-merge-lo16.{s,d,ld}: New test.
* ld-mips-elf/mips-elf.exp: Run it.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp1
-rw-r--r--ld/testsuite/ld-mips-elf/reloc-merge-lo16.d16
-rw-r--r--ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld9
-rw-r--r--ld/testsuite/ld-mips-elf/reloc-merge-lo16.s28
5 files changed, 59 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 8aa98f2..4069b4b 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-08 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * ld-mips-elf/reloc-merge-lo16.{s,d,ld}: New test.
+ * ld-mips-elf/mips-elf.exp: Run it.
+
2004-07-02 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* ld-elf/frame.exp: Don't run on sh*-*-elf*.
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index 36fae9b..f0c2b84 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -74,3 +74,4 @@ if $has_newabi {
}
}
run_dump_test "reloc-2"
+run_dump_test "reloc-merge-lo16"
diff --git a/ld/testsuite/ld-mips-elf/reloc-merge-lo16.d b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.d
new file mode 100644
index 0000000..f6e7ef8
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.d
@@ -0,0 +1,16 @@
+#name: MIPS ELF lo16 merge
+#source: reloc-merge-lo16.s
+#ld: -Treloc-merge-lo16.ld
+#objdump: -td --prefix-addresses --show-raw-insn
+
+# Test lo16 reloc calculation with string merging.
+
+.*: +file format .*mips.*
+#...
+0+80fe70 l .rodata 0+000000 g
+0+400000 g F .text 0+000000 __start
+#...
+0+400000 <[^>]*> 3c020081 lui v0,0x81
+0+400004 <[^>]*> 2443fe70 addiu v1,v0,-400
+0+400008 <[^>]*> 2442fe70 addiu v0,v0,-400
+ \.\.\.
diff --git a/ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld
new file mode 100644
index 0000000..4d487dd
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld
@@ -0,0 +1,9 @@
+ENTRY(__start)
+SECTIONS
+{
+ . = 0x0400000;
+ .text : { *(.text) }
+ . = 0x0800000;
+ .rodata : { *(.rodata.*) }
+ /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/reloc-merge-lo16.s b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.s
new file mode 100644
index 0000000..33158b1
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reloc-merge-lo16.s
@@ -0,0 +1,28 @@
+ .section .rodata.str1.4,"aMS", @progbits, 1
+ .macro fillstr char
+ .rept 0x3fff - \char
+ .byte \char
+ .endr
+ .byte 0
+ .endm
+ fillstr 'a'
+ fillstr 'h'
+ fillstr 'c'
+ fillstr 'd'
+ fillstr 'g'
+ fillstr 'f'
+g:
+ fillstr 'g'
+ fillstr 'h'
+
+ .text
+ .globl __start
+ .ent __start
+ .type __start, @function
+__start:
+ lui $2, %hi(g)
+ addiu $3, $2, %lo(g)
+ addiu $2, $2, %lo(g)
+ .end __start
+
+ .space 16