summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-10-10 07:49:11 +0000
committerJakub Jelinek <jakub@redhat.com>2002-10-10 07:49:11 +0000
commit2030e6d786607499a56eeda4a28d2e0c2ba585aa (patch)
treed1a1f437c53e27ab5b2a7fdf27ade9476eac4901
parent967c0d836c8acc7fa86dd490c483f850dbadb851 (diff)
downloadbinutils-gdb-2030e6d786607499a56eeda4a28d2e0c2ba585aa.tar.gz
* ld-i386/combreloc.s: New test.
* ld-i386/combreloc.d: New test. * ld-i386/i386.exp (i386tests): Add it.
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-i386/combreloc.d18
-rw-r--r--ld/testsuite/ld-i386/combreloc.s22
-rw-r--r--ld/testsuite/ld-i386/i386.exp2
4 files changed, 48 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index f55976317e9..3a681f687ea 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2002-10-10 Jakub Jelinek <jakub@redhat.com>
+
+ * ld-i386/combreloc.s: New test.
+ * ld-i386/combreloc.d: New test.
+ * ld-i386/i386.exp (i386tests): Add it.
+
2002-10-10 Alan Modra <amodra@bigpond.net.au>
* ld-i386/i386.exp (reloc): Turn off combreloc.
diff --git a/ld/testsuite/ld-i386/combreloc.d b/ld/testsuite/ld-i386/combreloc.d
new file mode 100644
index 00000000000..762f48126cc
--- /dev/null
+++ b/ld/testsuite/ld-i386/combreloc.d
@@ -0,0 +1,18 @@
+# Test that orphan reloc sections are merged into .rel.dyn with
+# -z combreloc.
+#source: combreloc.s
+#as: --32
+#ld: -shared -melf_i386 -z combreloc
+#readelf: -r
+#target: i?86-*-*
+
+Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+ Offset Info Type Sym.Value Sym. Name
+[0-9a-f]+ [0-9a-f]+01 R_386_32 [0-9a-f]+ _start
+[0-9a-f]+ [0-9a-f]+01 R_386_32 [0-9a-f]+ _start
+[0-9a-f]+ [0-9a-f]+01 R_386_32 [0-9a-f]+ _start
+[0-9a-f]+ [0-9a-f]+06 R_386_GLOB_DAT [0-9a-f]+ _start
+
+Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries:
+ Offset Info Type Sym.Value Sym. Name
+[0-9a-f]+ [0-9a-f]+07 R_386_JUMP_SLOT [0-9a-f]+ foo
diff --git a/ld/testsuite/ld-i386/combreloc.s b/ld/testsuite/ld-i386/combreloc.s
new file mode 100644
index 00000000000..2a78a7ce9b5
--- /dev/null
+++ b/ld/testsuite/ld-i386/combreloc.s
@@ -0,0 +1,22 @@
+ .text
+ .globl _start, foo
+ .type _start,@function
+_start:
+ pushl %ebp
+ movl %esp, %ebp
+ pushl %ebx
+ call 1f
+1: popl %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+ movl _start@GOT(%ebx), %eax
+ movl (%eax), %eax
+ call foo@PLT
+ movl (%esp), %ebx
+ leave
+foo: ret
+ .data
+ .long _start
+ .section "__libc_subfreeres", "aw", @progbits
+ .long _start
+ .section "__libc_atexit", "aw", @progbits
+ .long _start
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 680ced91c54..7f572da729a 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -59,6 +59,8 @@ set i386tests {
{{objdump -drj.text tlsindntpoff.dd}} "tlsindntpoff"}
{"Reloc section order" "-shared -melf_i386 -z nocombreloc" "--32"
{reloc.s} {{objdump -hw reloc.d}} "reloc.so"}
+ {"-z combreloc relocation sections" "-shared -melf_i386 -z combreloc"
+ "--32" {combreloc.s} {{readelf -r combreloc.d}} "combreloc.so"}
}
run_ld_link_tests $i386tests