From 22a8f80ef54b90cbdd345ec24dd7ad89033062a5 Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Fri, 15 May 2009 00:08:12 +0000 Subject: 2009-05-15 Andrew Stubbs Paul Brook bfd/ * elf32-arm.c (elf32_arm_fix_exidx_coverage): Don't attempt to fix discarded sections. ld/testsuite/ * ld-arm/arm-elf.exp: Add unwind-5. * ld-arm/discard-unwind.ld: New file. * ld-arm/unwind-5.d: New test. * ld-arm/unwind-5.s: New test. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-arm.c | 4 ++++ ld/testsuite/ChangeLog | 8 ++++++++ ld/testsuite/ld-arm/arm-elf.exp | 1 + ld/testsuite/ld-arm/discard-unwind.ld | 19 +++++++++++++++++++ ld/testsuite/ld-arm/unwind-5.d | 7 +++++++ ld/testsuite/ld-arm/unwind-5.s | 12 ++++++++++++ 7 files changed, 57 insertions(+) create mode 100644 ld/testsuite/ld-arm/discard-unwind.ld create mode 100644 ld/testsuite/ld-arm/unwind-5.d create mode 100644 ld/testsuite/ld-arm/unwind-5.s diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 64119e4..cf4b73f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2009-05-15 Andrew Stubbs + Paul Brook + + * elf32-arm.c (elf32_arm_fix_exidx_coverage): Don't attempt to + fix discarded sections. + 2009-05-14 Ulrich Weigand * elf32-spu.c (mark_overlay_section): Move .init and .fini diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index e73b2b6..1dbac1d 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -8352,6 +8352,10 @@ elf32_arm_fix_exidx_coverage (asection **text_section_order, continue; } + /* Skip /DISCARD/ sections. */ + if (bfd_is_abs_section (exidx_sec->output_section)) + continue; + hdr = &elf_section_data (exidx_sec)->this_hdr; if (hdr->sh_type != SHT_ARM_EXIDX) continue; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index b9100b6..215d2e4 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2009-05-15 Andrew Stubbs + Paul Brook + + * ld-arm/arm-elf.exp: Add unwind-5. + * ld-arm/discard-unwind.ld: New file. + * ld-arm/unwind-5.d: New test. + * ld-arm/unwind-5.s: New test. + 2009-05-14 Ulrich Weigand * ld-spu/icache1.d: Update for compact stubs. diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index 054a187..4e8a933 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -396,3 +396,4 @@ run_dump_test "unwind-1" run_dump_test "unwind-2" run_dump_test "unwind-3" run_dump_test "unwind-4" +run_dump_test "unwind-5" diff --git a/ld/testsuite/ld-arm/discard-unwind.ld b/ld/testsuite/ld-arm/discard-unwind.ld new file mode 100644 index 0000000..d8f6524 --- /dev/null +++ b/ld/testsuite/ld-arm/discard-unwind.ld @@ -0,0 +1,19 @@ +/* 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 + /DISCARD/ : { *(.ARM.exidx*) } + .ARM.attribues 0 : { *(.ARM.atttributes) } +} diff --git a/ld/testsuite/ld-arm/unwind-5.d b/ld/testsuite/ld-arm/unwind-5.d new file mode 100644 index 0000000..4928874 --- /dev/null +++ b/ld/testsuite/ld-arm/unwind-5.d @@ -0,0 +1,7 @@ +#ld: -T discard-unwind.ld +#objdump: -s + +.*: file format.* + +# Check we don't crash when discarding unwind info. +#... diff --git a/ld/testsuite/ld-arm/unwind-5.s b/ld/testsuite/ld-arm/unwind-5.s new file mode 100644 index 0000000..d15677d --- /dev/null +++ b/ld/testsuite/ld-arm/unwind-5.s @@ -0,0 +1,12 @@ + .syntax unified + .text + .global __aeabi_unwind_cpp_pr0 + .type __aeabi_unwind_cpp_pr0, %function +__aeabi_unwind_cpp_pr0: + .global _start + .type _start, %function +_start: + .fnstart + .save {r4, lr} + bx lr + .fnend -- cgit v1.1