OSDN Git Service

2009-05-15 Andrew Stubbs <ams@codesourcery.com>
authorPaul Brook <paul@codesourcery.com>
Fri, 15 May 2009 00:08:12 +0000 (00:08 +0000)
committerPaul Brook <paul@codesourcery.com>
Fri, 15 May 2009 00:08:12 +0000 (00:08 +0000)
Paul Brook  <paul@codesourcery.com>

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
bfd/elf32-arm.c
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/discard-unwind.ld [new file with mode: 0644]
ld/testsuite/ld-arm/unwind-5.d [new file with mode: 0644]
ld/testsuite/ld-arm/unwind-5.s [new file with mode: 0644]

index 64119e4..cf4b73f 100644 (file)
@@ -1,3 +1,9 @@
+2009-05-15  Andrew Stubbs  <ams@codesourcery.com>
+       Paul Brook  <paul@codesourcery.com>
+
+       * elf32-arm.c (elf32_arm_fix_exidx_coverage): Don't attempt to
+       fix discarded sections.
+
 2009-05-14  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * elf32-spu.c (mark_overlay_section): Move .init and .fini
index e73b2b6..1dbac1d 100644 (file)
@@ -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;
index b9100b6..215d2e4 100644 (file)
@@ -1,3 +1,11 @@
+2009-05-15  Andrew Stubbs  <ams@codesourcery.com>
+       Paul Brook  <paul@codesourcery.com>
+
+       * 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  <uweigand@de.ibm.com>
 
        * ld-spu/icache1.d: Update for compact stubs.
index 054a187..4e8a933 100644 (file)
@@ -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 (file)
index 0000000..d8f6524
--- /dev/null
@@ -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 (file)
index 0000000..4928874
--- /dev/null
@@ -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 (file)
index 0000000..d15677d
--- /dev/null
@@ -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