diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2006-02-28 07:17:33 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2006-02-28 07:17:33 +0000 |
commit | b9201bb360fe2368016c579c18d77c4501a39c97 (patch) | |
tree | 6937937c5b68e1df3280b7cf5536c583440e8cc9 | |
parent | 5ae0bfb60a576344d7f701605346282c1144499e (diff) | |
download | ppe42-binutils-b9201bb360fe2368016c579c18d77c4501a39c97.tar.gz ppe42-binutils-b9201bb360fe2368016c579c18d77c4501a39c97.zip |
ld/testsuite/
* ld-i386/vxworks1-lib.s, ld-i386/vxworks1-lib.dd,
* ld-i386/vxworks1-lib.rd, ld-i386/vxworks1.s, ld-i386/vxworks1.dd,
* ld-i386/vxworks1.rd, ld-i386/vxworks1.ld: New test.
* ld-i386/i386.exp: Run it.
-rw-r--r-- | ld/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1-lib.dd | 41 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1-lib.rd | 11 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1-lib.s | 28 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1.dd | 38 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1.ld | 24 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1.rd | 20 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/vxworks1.s | 14 |
9 files changed, 197 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 7e533d68eb..c9f439581d 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2006-02-28 Richard Sandiford <richard@codesourcery.com> + * ld-i386/vxworks1-lib.s, ld-i386/vxworks1-lib.dd, + * ld-i386/vxworks1-lib.rd, ld-i386/vxworks1.s, ld-i386/vxworks1.dd, + * ld-i386/vxworks1.rd, ld-i386/vxworks1.ld: New test. + * ld-i386/i386.exp: Run it. + +2006-02-28 Richard Sandiford <richard@codesourcery.com> + * ld-i386/emit-relocs.s, ld-i386/emit-relocs.d: New test. * ld-i386/i386.exp: Run it. diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index f0c0d5249a..d5087d57d5 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -19,6 +19,20 @@ # Test i386 linking; all types of relocs. This tests the assembler and # tools like objdump as well as the linker. +if {[istarget "i?86-*-vxworks"]} { + set i386tests { + {"VxWorks shared library test 1" "-shared -Tvxworks1.ld" + "" {vxworks1-lib.s} + {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}} + "libvxworks1.so"} + {"VxWorks dynamic executable test 1" \ + "tmpdir/libvxworks1.so -Tvxworks1.ld -q" "" {vxworks1.s} + {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}} + "vxworks1"} + } + run_ld_link_tests $i386tests +} + if { !([istarget "i?86-*-elf*"] || ([istarget "i?86-*-linux*"] && ![istarget "*-*-*aout*"] diff --git a/ld/testsuite/ld-i386/vxworks1-lib.dd b/ld/testsuite/ld-i386/vxworks1-lib.dd new file mode 100644 index 0000000000..d8725d0d46 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1-lib.dd @@ -0,0 +1,41 @@ + +.*: file format .* + +Disassembly of section \.plt: + +00080300 <_PROCEDURE_LINKAGE_TABLE_>: + 80300: ff b3 04 00 00 00 pushl 0x4\(%ebx\) + 80306: ff a3 08 00 00 00 jmp \*0x8\(%ebx\) + 8030c: 90 nop + 8030d: 90 nop + 8030e: 90 nop + 8030f: 90 nop + +00080310 <sexternal@plt>: + 80310: ff a3 0c 00 00 00 jmp \*0xc\(%ebx\) + 80316: 68 00 00 00 00 push \$0x0 + 8031b: e9 e0 ff ff ff jmp 80300 <_PROCEDURE_LINKAGE_TABLE_> + +00080320 <sglobal@plt>: + 80320: ff a3 10 00 00 00 jmp \*0x10\(%ebx\) + 80326: 68 08 00 00 00 push \$0x8 + 8032b: e9 d0 ff ff ff jmp 80300 <_PROCEDURE_LINKAGE_TABLE_> +Disassembly of section \.text: + +00080400 <foo>: + 80400: 53 push %ebx + 80401: 8b 1d 00 00 00 00 mov 0x0,%ebx + 80407: 8b 99 00 00 00 00 mov 0x0\(%ecx\),%ebx + 8040d: 8b 83 14 00 00 00 mov 0x14\(%ebx\),%eax + 80413: ff 00 incl \(%eax\) + 80415: e8 0c 00 00 00 call 80426 <slocal> + 8041a: e8 01 ff ff ff call 80320 <sglobal@plt> + 8041f: e8 ec fe ff ff call 80310 <sexternal@plt> + 80424: 5b pop %ebx + 80425: c3 ret + +00080426 <slocal>: + 80426: c3 ret + +00080427 <sglobal>: + 80427: c3 ret diff --git a/ld/testsuite/ld-i386/vxworks1-lib.rd b/ld/testsuite/ld-i386/vxworks1-lib.rd new file mode 100644 index 0000000000..aa0365a173 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1-lib.rd @@ -0,0 +1,11 @@ + +Relocation section '\.rel\.plt' at offset 0x1218 contains 2 entries: + Offset Info Type Sym\.Value Sym\. Name +0008110c 00000507 R_386_JUMP_SLOT 00000000 sexternal +00081110 00000807 R_386_JUMP_SLOT 00080427 sglobal + +Relocation section '\.rel\.dyn' at offset 0x1200 contains 3 entries: + Offset Info Type Sym\.Value Sym\. Name +00080403 00000601 R_386_32 00000000 __GOTT_BASE__ +00080409 00000701 R_386_32 00000000 __GOTT_INDEX__ +00081114 00000406 R_386_GLOB_DAT 00080000 x diff --git a/ld/testsuite/ld-i386/vxworks1-lib.s b/ld/testsuite/ld-i386/vxworks1-lib.s new file mode 100644 index 0000000000..d2bbac074d --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1-lib.s @@ -0,0 +1,28 @@ + .text + .globl foo + .type foo, @function +foo: + push %ebx + movl __GOTT_BASE__, %ebx + movl __GOTT_INDEX__(%ecx), %ebx + movl x@GOT(%ebx), %eax + incl (%eax) + call slocal@plt + call sglobal@plt + call sexternal@plt + pop %ebx + ret + .size foo, .-foo + + .type slocal, @function +slocal: + ret + .size slocal, .-slocal + + .globl sglobal + .type sglobal, @function +sglobal: + ret + .size sglobal, .-sglobal + + .comm x,4,4 diff --git a/ld/testsuite/ld-i386/vxworks1.dd b/ld/testsuite/ld-i386/vxworks1.dd new file mode 100644 index 0000000000..770d138031 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1.dd @@ -0,0 +1,38 @@ + +.*: file format .* + +Disassembly of section \.plt: + +00080200 <_PROCEDURE_LINKAGE_TABLE_>: + 80200: ff 35 04 11 08 00 pushl 0x81104 + 80202: R_386_32 _GLOBAL_OFFSET_TABLE_ + 80206: ff 25 08 11 08 00 jmp \*0x81108 + 80208: R_386_32 _GLOBAL_OFFSET_TABLE_ + 8020c: 90 nop + 8020d: 90 nop + 8020e: 90 nop + 8020f: 90 nop + +00080210 <sglobal@plt>: + 80210: ff 25 0c 11 08 00 jmp \*0x8110c + 80212: R_386_32 _GLOBAL_OFFSET_TABLE_ + 80216: 68 00 00 00 00 push \$0x0 + 8021b: e9 e0 ff ff ff jmp 80200 <_PROCEDURE_LINKAGE_TABLE_> + +00080220 <foo@plt>: + 80220: ff 25 10 11 08 00 jmp \*0x81110 + 80222: R_386_32 _GLOBAL_OFFSET_TABLE_ + 80226: 68 08 00 00 00 push \$0x8 + 8022b: e9 d0 ff ff ff jmp 80200 <_PROCEDURE_LINKAGE_TABLE_> +Disassembly of section \.text: + +00080300 <_start>: + 80300: e8 1b ff ff ff call 80220 <foo@plt> + 80301: R_386_PLT32 \.plt + 80305: e8 05 00 00 00 call 8030f <sexternal> + 80306: R_386_PLT32 sexternal + 8030a: e9 01 ff ff ff jmp 80210 <sglobal@plt> + 8030b: R_386_PLT32 \.plt + +0008030f <sexternal>: + 8030f: c3 ret diff --git a/ld/testsuite/ld-i386/vxworks1.ld b/ld/testsuite/ld-i386/vxworks1.ld new file mode 100644 index 0000000000..26f34e5b80 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1.ld @@ -0,0 +1,24 @@ +SECTIONS +{ + . = 0x80000; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + + . = ALIGN (0x100); + .rel.dyn : { *(.rel.dyn) } + .rel.plt : { *(.rel.plt) } + + . = ALIGN (0x100); + .plt : { *(.plt) } + + . = ALIGN (0x100); + .text : { *(.text) } + + . = ALIGN (0x1000); + .dynamic : { *(.dynamic) } + + . = ALIGN (0x100); + .got : { *(.got.plt) *(.got) } +} diff --git a/ld/testsuite/ld-i386/vxworks1.rd b/ld/testsuite/ld-i386/vxworks1.rd new file mode 100644 index 0000000000..2f971a42d4 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1.rd @@ -0,0 +1,20 @@ + +Relocation section '\.rel\.plt' at offset .* contains 2 entries: + Offset Info Type Sym\.Value Sym\. Name +0008110c .*07 R_386_JUMP_SLOT 00000000 sglobal +00081110 .*07 R_386_JUMP_SLOT 00000000 foo + +Relocation section '\.rel\.text' at offset .* contains 3 entries: + Offset Info Type Sym.Value Sym. Name +00080301 .*04 R_386_PLT32 00080200 .plt +00080306 .*04 R_386_PLT32 0008030f sexternal +0008030b .*04 R_386_PLT32 00080200 .plt + +Relocation section '\.rel\.plt\.unloaded' at offset .* contains 6 entries: + Offset Info Type Sym\.Value Sym\. Name +00080202 .*01 R_386_32 00081100 _GLOBAL_OFFSET_TABLE_ +00080208 .*01 R_386_32 00081100 _GLOBAL_OFFSET_TABLE_ +00080212 .*01 R_386_32 00081100 _GLOBAL_OFFSET_TABLE_ +0008110c .*01 R_386_32 00080200 _PROCEDURE_LINKAGE_TAB.* +00080222 .*01 R_386_32 00081100 _GLOBAL_OFFSET_TABLE_ +00081110 .*01 R_386_32 00080200 _PROCEDURE_LINKAGE_TAB.* diff --git a/ld/testsuite/ld-i386/vxworks1.s b/ld/testsuite/ld-i386/vxworks1.s new file mode 100644 index 0000000000..5cb68af989 --- /dev/null +++ b/ld/testsuite/ld-i386/vxworks1.s @@ -0,0 +1,14 @@ + .text + .globl _start + .type _start,@function +_start: + call foo@plt + call sexternal@plt + jmp sglobal@plt + .size _start, .-_start + + .globl sexternal + .type sexternal,@function +sexternal: + ret + .size sexternal, .-sexternal |