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.
24 lines
477 B
Plaintext
24 lines
477 B
Plaintext
/* Script for ld testsuite */
|
|
OUTPUT_ARCH(arm)
|
|
ENTRY(_start)
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
PROVIDE (__executable_start = 0x8000); . = 0x8000;
|
|
.text :
|
|
{
|
|
*(.before)
|
|
*(.text)
|
|
*(.after)
|
|
*(.ARM.extab*)
|
|
*(.glue_7)
|
|
*(.v4_bx)
|
|
} =0
|
|
.ARM.exidx : { *(.ARM.exidx*) }
|
|
. = 0x9000;
|
|
.got : { *(.got) *(.got.plt)}
|
|
. = 0x12340000;
|
|
.far : { *(.far) }
|
|
.ARM.attribues 0 : { *(.ARM.atttributes) }
|
|
}
|