Fix test-case ld-elf/pr19617b
[deliverable/binutils-gdb.git] / bfd / reloc.c
index 17c470e909d23eaf0d1d62b9abfed991744908c9..a1683d8df5785ec7cd7d49a6f58478a282374f67 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD support for handling relocation entries.
-   Copyright (C) 1990-2015 Free Software Foundation, Inc.
+   Copyright (C) 1990-2016 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -2943,6 +2943,8 @@ ENUMX
   BFD_RELOC_PPC64_ADDR16_HIGHA
 ENUMX
   BFD_RELOC_PPC64_ADDR64_LOCAL
+ENUMX
+  BFD_RELOC_PPC64_ENTRY
 ENUMDOC
   Power(rs6000) and PowerPC relocations.
 
@@ -3269,6 +3271,17 @@ ENUM
 ENUMDOC
   ARM support for STT_GNU_IFUNC.
 
+ENUM
+  BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC
+ENUMX
+  BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC
+ENUMX
+  BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC
+ENUMX
+  BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC
+ENUMDOC
+  Thumb1 relocations to support execute-only code.
+
 ENUM
   BFD_RELOC_ARM_IMMEDIATE
 ENUMX
@@ -7926,6 +7939,7 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
   if (reloc_count > 0)
     {
       arelent **parent;
+
       for (parent = reloc_vector; *parent != NULL; parent++)
        {
          char *error_message = NULL;
@@ -7933,6 +7947,16 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
          bfd_reloc_status_type r;
 
          symbol = *(*parent)->sym_ptr_ptr;
+         /* PR ld/19628: A specially crafted input file
+            can result in a NULL symbol pointer here.  */
+         if (symbol == NULL)
+           {
+             link_info->callbacks->einfo
+               (_("%X%P: %B(%A): error: relocation for offset %V has no value\n"),
+                abfd, input_section, (* parent)->address);
+             goto error_return;
+           }
+
          if (symbol->section && discarded_section (symbol->section))
            {
              bfd_byte *p;
This page took 0.035655 seconds and 4 git commands to generate.