diff options
author | Paul Brook <paul@codesourcery.com> | 2007-03-20 20:19:07 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2007-03-20 20:19:07 +0000 |
commit | 27e55c4d0b94f5d358385b9641d26b84ee611768 (patch) | |
tree | eaacfbddbcc1ecc50c48870fa35865384a46de2c /ld/testsuite | |
parent | bf21ed7807b864b6f137d093bbf0164b443b504b (diff) | |
download | gdb-27e55c4d0b94f5d358385b9641d26b84ee611768.zip gdb-27e55c4d0b94f5d358385b9641d26b84ee611768.tar.gz gdb-27e55c4d0b94f5d358385b9641d26b84ee611768.tar.bz2 |
2007-03-20 Paul Brook <paul@codesourcery.com>
ld/
* emultempl/armelf.em (pic_veneer): New variable.
(PARSE_AND_LIST_PROLOGUE): Add OPTION_PIC_VENEER.
(PARSE_AND_LIST_ARGS_CASES): Ditto.
(PARSE_AND_LIST_LONGOPTS): Add "pic-veneer".
(PARSE_AND_LIST_OPTIONS): Ditto.
* ld.texinfo: Document --pic-veneer.
ld/testsuite/
* ld-arm/arm-elf.exp (ld-arm/arm-elf.exp): Add arm-pic-veneer.
* ld-arm/arm-pic-veneer.d: New test.
* ld-arm/arm-pic-veneer.s: New test.
bfd/
* bfd-in.h (bfd_elf32_arm_set_target_relocs): Update prototype.
* bfd-in2.h: Regenerate.
* elf32-arm.c (elf32_arm_link_hash_table): Add pic_veneer.
(record_arm_to_thumb_glue): Use globals->pic_veneer.
(elf32_arm_create_thumb_stub): Ditto.
(bfd_elf32_arm_set_target_relocs): Set globals->pic_veneer.
Diffstat (limited to 'ld/testsuite')
-rw-r--r-- | ld/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/arm-elf.exp | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/arm-pic-veneer.d | 17 | ||||
-rw-r--r-- | ld/testsuite/ld-arm/arm-pic-veneer.s | 14 |
4 files changed, 40 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index d6fb653..20f932a 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-03-20 Paul Brook <paul@codesourcery.com> + + * ld-arm/arm-elf.exp (ld-arm/arm-elf.exp): Add arm-pic-veneer. + * ld-arm/arm-pic-veneer.d: New test. + * ld-arm/arm-pic-veneer.s: New test. + 2007-03-08 Richard Sandiford <richard@codesourcery.com> * ld-elf/extract-symbol-1.ld (data): Explicitly set the start address diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index b4e8438..5844266 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -156,6 +156,9 @@ set armelftests { {"Unwinding and -gc-sections" "-gc-sections" "" {gc-unwind.s} {{objdump -sj.data gc-unwind.d}} "gc-unwind"} + {"arm-pic-veneer" "-static -T arm.ld --pic-veneer" "" {arm-pic-veneer.s} + {{objdump -d arm-pic-veneer.d}} + "arm-pic-veneer"} } run_ld_link_tests $armelftests diff --git a/ld/testsuite/ld-arm/arm-pic-veneer.d b/ld/testsuite/ld-arm/arm-pic-veneer.d new file mode 100644 index 0000000..cbd5822 --- /dev/null +++ b/ld/testsuite/ld-arm/arm-pic-veneer.d @@ -0,0 +1,17 @@ + +.*: file format.* + +Disassembly of section .text: + +00008000 <_start>: + 8000: ea000000 b 8008 <__foo_from_arm> + +00008004 <foo>: + 8004: 46c0 nop \(mov r8, r8\) + 8006: 4770 bx lr + +00008008 <__foo_from_arm>: + 8008: e59fc004 ldr ip, \[pc, #4\] ; 8014 <__foo_from_arm\+0xc> + 800c: e08cc00f add ip, ip, pc + 8010: e12fff1c bx ip + 8014: fffffff1 undefined instruction 0xfffffff1 diff --git a/ld/testsuite/ld-arm/arm-pic-veneer.s b/ld/testsuite/ld-arm/arm-pic-veneer.s new file mode 100644 index 0000000..9e09ed6 --- /dev/null +++ b/ld/testsuite/ld-arm/arm-pic-veneer.s @@ -0,0 +1,14 @@ +.text +.arm +.global _start +.type _start, %function +_start: +b foo + +.thumb +.global foo +.type foo, %function +foo: +nop +bx lr + |