diff options
Diffstat (limited to 'ld/testsuite/ld-i386')
-rw-r--r-- | ld/testsuite/ld-i386/combreloc.d | 18 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/combreloc.s | 22 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 2 |
3 files changed, 42 insertions, 0 deletions
diff --git a/ld/testsuite/ld-i386/combreloc.d b/ld/testsuite/ld-i386/combreloc.d new file mode 100644 index 0000000..762f481 --- /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 0000000..2a78a7c --- /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 680ced9..7f572da 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 |