* ld-mips-elf/reloc-merge-lo16.{s,d,ld}: New test.
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 8 Jul 2004 15:43:00 +0000 (15:43 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Thu, 8 Jul 2004 15:43:00 +0000 (15:43 +0000)
* ld-mips-elf/mips-elf.exp: Run it.

ld/testsuite/ChangeLog
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/reloc-merge-lo16.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld [new file with mode: 0644]
ld/testsuite/ld-mips-elf/reloc-merge-lo16.s [new file with mode: 0644]

index 8aa98f296ed49b81d0cfbb1c429ee057fb621a40..4069b4b556d1248719bfa9297048b9e2c5aead9f 100644 (file)
@@ -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*.
index 36fae9b64217e14470da980d1264ff137a311232..f0c2b84aa0614ecb2a65954eb5dad3ef95446543 100644 (file)
@@ -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 (file)
index 0000000..f6e7ef8
--- /dev/null
@@ -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 (file)
index 0000000..4d487dd
--- /dev/null
@@ -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 (file)
index 0000000..33158b1
--- /dev/null
@@ -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