From 2030e6d786607499a56eeda4a28d2e0c2ba585aa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 10 Oct 2002 07:49:11 +0000 Subject: [PATCH] * ld-i386/combreloc.s: New test. * ld-i386/combreloc.d: New test. * ld-i386/i386.exp (i386tests): Add it. --- ld/testsuite/ChangeLog | 6 ++++++ ld/testsuite/ld-i386/combreloc.d | 18 ++++++++++++++++++ ld/testsuite/ld-i386/combreloc.s | 22 ++++++++++++++++++++++ ld/testsuite/ld-i386/i386.exp | 2 ++ 4 files changed, 48 insertions(+) create mode 100644 ld/testsuite/ld-i386/combreloc.d create mode 100644 ld/testsuite/ld-i386/combreloc.s 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 + + * ld-i386/combreloc.s: New test. + * ld-i386/combreloc.d: New test. + * ld-i386/i386.exp (i386tests): Add it. + 2002-10-10 Alan Modra * 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 -- 2.30.2