2009-06-10 Philip Blundell <philb@gnu.org>
authorPhil Blundell <philb@gnu.org>
Fri, 12 Jun 2009 14:26:08 +0000 (14:26 +0000)
committerPhil Blundell <philb@gnu.org>
Fri, 12 Jun 2009 14:26:08 +0000 (14:26 +0000)
* elf32-arm.c (elf32_arm_fix_exidx_coverage): Avoid crash if
elf_sec->this_hdr == NULL.

bfd/ChangeLog
bfd/elf32-arm.c

index b6945c994806a27d529fc8cd2226877823c4b7c7..7f1ce47acd06e2d25e8a6abdbbd91e5686087b3a 100644 (file)
@@ -1,3 +1,8 @@
+2009-06-10  Philip Blundell  <philb@gnu.org>
+
+       * elf32-arm.c (elf32_arm_fix_exidx_coverage): Avoid crash if
+       elf_sec->this_hdr == NULL.
+
 2009-06-12  Tristan Gingold  <gingold@adacore.com>
 
        * reloc.c: Add BFD_RELOC_MACH_O_SECTDIFF and BFD_RELOC_MACH_O_PAIR.
index 2a2d4611ab5310c5081c8f7b4be22b8cf1364d1c..df4be8bb9c08fb014c5a1f3f996214018c8a6d41 100644 (file)
@@ -3175,11 +3175,12 @@ arm_type_of_stub (struct bfd_link_info *info,
 
          /* We have an extra 2-bytes reach because of
             the mode change (bit 24 (H) of BLX encoding).  */
-         if (branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2)
-             || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)
-             || ((r_type == R_ARM_CALL) && !globals->use_blx)
-             || (r_type == R_ARM_JUMP24)
-             || (r_type == R_ARM_PLT32))
+         if ((branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2)
+               || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)
+               || ((r_type == R_ARM_CALL) && !globals->use_blx)
+               || (r_type == R_ARM_JUMP24)
+               || (r_type == R_ARM_PLT32))
+              && !use_plt)
            {
              stub_type = (info->shared | globals->pic_veneer)
                /* PIC stubs.  */
@@ -8960,7 +8961,7 @@ elf32_arm_fix_exidx_coverage (asection **text_section_order,
          struct bfd_elf_section_data *elf_sec = elf_section_data (sec);
          Elf_Internal_Shdr *hdr = &elf_sec->this_hdr;
          
-         if (hdr->sh_type != SHT_ARM_EXIDX)
+         if (!hdr || hdr->sh_type != SHT_ARM_EXIDX)
            continue;
          
          if (elf_sec->linked_to)