diff options
author | Paul Brook <paul@codesourcery.com> | 2005-12-12 17:03:40 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2005-12-12 17:03:40 +0000 |
commit | 39b41c9ca83ec4e504d90bd6e2137e67a27585e2 (patch) | |
tree | f013eec4e858d0da7385c4b83ce0181227ede26c /ld/testsuite/ld-arm/arm-call.d | |
parent | 4970f871a701ce55f5018f31bca1b478448c57ff (diff) | |
download | gdb-39b41c9ca83ec4e504d90bd6e2137e67a27585e2.zip gdb-39b41c9ca83ec4e504d90bd6e2137e67a27585e2.tar.gz gdb-39b41c9ca83ec4e504d90bd6e2137e67a27585e2.tar.bz2 |
2005-12-12 Paul Brook <paul@codesourcery.com>
bfd/
* bfd-in2.h: Regenerate.
* elf32-arm.c (elf32_arm_reloc_map): Add BFD_RELOC_ARM_PCREL_CALL and
BFD_RELOC_ARM_PCREL_JUMP.
(check_use_blx): New function.
(bfd_elf32_arm_process_before_allocation): Don't allocate glue if
using BLX.
(elf32_arm_final_link_relocate): Perform bl<->blx conversion for
R_ARM_CALL and R_ARM_THM.
(elf32_arm_get_eabi_attr_int): New function.
(elf32_arm_size_dynamic_sections): Call check_use_blx.
* libbfd.h: Regenerate.
* reloc.c: Add BFD_RELOC_ARM_PCREL_CALL and BFD_RELOC_ARM_PCREL_JUMP.
gas/
* config/tc-arm.c (do_branch): Generate EABI branch relocations.
(do_bl): New function.
(do_blx): Generate BFD_RELOC_ARM_PCREL_CALL relocation.
(do_t_blx): Generate BFD_RELOC_THUMB_PCREL_BRANCH23.
(insns): Use do_bl.
(md_pcrel_from_section): Add BFD_RELOC_ARM_PCREL_CALL and
BFD_RELOC_ARM_PCREL_JUMP.
(md_apply_fix): Merge BFD_RELOC_ARM_PCREL_BRANCH and
BFD_RELOC_ARM_PCREL_BLX cases. Handle BFD_RELOC_ARM_PCREL_CALL and
BFD_RELOC_ARM_PCREL_JUMP.
(tc_gen_reloc): Handle BFD_RELOC_ARM_PCREL_CALL and
BFD_RELOC_ARM_PCREL_JUMP.
gas/testsuite/
* gas/arm/pic.d: Allow R_ARM_CALL relocations.
include/elf/
* arm.h (elf32_arm_get_eabi_attr_int): Add prototype.
ld/testsuite/
* ld-arm/arm-call.d: New test.
* ld-arm/arm-call1.s: New file.
* ld-arm/arm-call1.s: New file.
* ld-arm/arm-elf.exp: Add arm-call and mixed-app-v5.
* ld-arm/arm.ld: Add .glue_7 and .ARM.attribues.
* ld-arm/mixed-app-v5.d: New file.
* ld-arm/mixed-app.r: Tweak expected output.
Diffstat (limited to 'ld/testsuite/ld-arm/arm-call.d')
-rw-r--r-- | ld/testsuite/ld-arm/arm-call.d | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/arm-call.d b/ld/testsuite/ld-arm/arm-call.d new file mode 100644 index 0000000..fd4cd13 --- /dev/null +++ b/ld/testsuite/ld-arm/arm-call.d @@ -0,0 +1,58 @@ + +.*: file format.* + +Disassembly of section .text: + +00008000 <_start>: + 8000: eb00000d bl 803c <arm> + 8004: fa00000d blx 8040 <t1> + 8008: fb00000c blx 8042 <t2> + 800c: fb00000d blx 804a <t5> + 8010: fa00000a blx 8040 <t1> + 8014: fb000009 blx 8042 <t2> + 8018: ea00000f b 805c <__t1_from_arm> + 801c: ea000011 b 8068 <__t2_from_arm> + 8020: 1b00000d blne 805c <__t1_from_arm> + 8024: 1b00000f blne 8068 <__t2_from_arm> + 8028: 1b000003 blne 803c <arm> + 802c: eb000002 bl 803c <arm> + 8030: faffffff blx 8034 <thumblocal> + +00008034 <thumblocal>: + 8034: 4770 bx lr + +00008036 <t3>: + 8036: 4770 bx lr + +00008038 <t4>: + 8038: 4770 bx lr + 803a: 46c0 nop \(mov r8, r8\) + +0000803c <arm>: + 803c: e12fff1e bx lr + +00008040 <t1>: + 8040: 4770 bx lr + +00008042 <t2>: + 8042: f7ff fff8 bl 8036 <t3> + 8046: f7ff fff7 bl 8038 <t4> + +0000804a <t5>: + 804a: f000 f801 bl 8050 <local_thumb> + 804e: 46c0 nop \(mov r8, r8\) + +00008050 <local_thumb>: + 8050: f7ff fff1 bl 8036 <t3> + 8054: f7ff efd4 blx 8000 <_start> + 8058: f7ff efd2 blx 8000 <_start> + +0000805c <__t1_from_arm>: + 805c: e59fc000 ldr ip, \[pc, #0\] ; 8064 <__t1_from_arm\+0x8> + 8060: e12fff1c bx ip + 8064: 00008041 andeq r8, r0, r1, asr #32 + +00008068 <__t2_from_arm>: + 8068: e59fc000 ldr ip, \[pc, #0\] ; 8070 <__t2_from_arm\+0x8> + 806c: e12fff1c bx ip + 8070: 00008043 andeq r8, r0, r3, asr #32 |