diff options
author | Paul Brook <paul@codesourcery.com> | 2009-05-05 14:18:30 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2009-05-05 14:18:30 +0000 |
commit | 2468f9c95d416f2880a007190d3bf6c475d279c2 (patch) | |
tree | abc67d2909c8e50810239b241dba5d1021c602d8 /ld/testsuite/ld-arm/unwind-4.s | |
parent | fb14de7bbddf9dc2f97af953b95b5aa5ea9889c4 (diff) | |
download | binutils-gdb-2468f9c95d416f2880a007190d3bf6c475d279c2.tar.gz |
2009-05-05 Paul Brook <paul@codesourcery.com>
bfd/
* bfd-in.h (elf32_arm_fix_exidx_coverage): Add prototype.
* bfd-in2.h: Regenerate.
* elf32-arm.c (arm_unwind_edit_type, arm_unwind_table_edit): Define.
(_arm_elf_section_data): Add text and exidx fields.
(add_unwind_table_edit, get_arm_elf_section_data, adjust_exidx_size,
insert_cantunwind_after, elf32_arm_fix_exidx_coverage, offset_prel31,
copy_exidx_entry): New functions.
(elf32_arm_write_section): Fixup .ARM.exidx contents.
ld/
* emultempl/armelf.em (compare_output_sec_vma): New function.
(gld${EMULATION_NAME}_finish): Add exidx munging code.
ld/testsuite/
* ld-arm/arm.ld: Add .ARM.exidx and .ARM.extab.
* ld-arm/arm-elf.exp: Add unwind-[1-4].
* ld-arm/unwind-1.d: New test.
* ld-arm/unwind-1.s: New test.
* ld-arm/unwind-2.d: New test.
* ld-arm/unwind-2.s: New test.
* ld-arm/unwind-3.d: New test.
* ld-arm/unwind-3.s: New test.
* ld-arm/unwind-4.d: New test.
* ld-arm/unwind-4.s: New test.
Diffstat (limited to 'ld/testsuite/ld-arm/unwind-4.s')
-rw-r--r-- | ld/testsuite/ld-arm/unwind-4.s | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/unwind-4.s b/ld/testsuite/ld-arm/unwind-4.s new file mode 100644 index 00000000000..015311bbb06 --- /dev/null +++ b/ld/testsuite/ld-arm/unwind-4.s @@ -0,0 +1,49 @@ + .syntax unified + .text + @ out of line table entry + .global _start + .type _start, %function +_start: + .fnstart + .save {r4, lr} + .vsave {d0} + .vsave {d4} + bl _before + .fnend + + @ entry that can be merged + .fnstart + .save {r4, lr} + bx lr + .fnend + + @ Section that will be placed first + .section .before, "xa" + .type _before, %function +_before: + .fnstart + .save {r4, lr} + bx lr + .fnend + + @ section that will be placed last + .section .after, "xa" + .global __aeabi_unwind_cpp_pr0 + .type __aeabi_unwind_cpp_pr0, %function +__aeabi_unwind_cpp_pr0: + .fnstart + .save {r4, lr} + bx lr + .fnend + @ final function is cantunwind, so output table size is smaller + @ than sum of input sections + .global __aeabi_unwind_cpp_pr1 + .type __aeabi_unwind_cpp_pr1, %function +__aeabi_unwind_cpp_pr1: + .fnstart + .cantunwind + bx lr + .fnend + + .section .far + .word 0 |