Fix elf64-ppc.c electric fence warning
[deliverable/binutils-gdb.git] / bfd / coff-x86_64.c
index 2a21bb8be691a0d9e16e923dcb52780ded361096..fb5971d633f39cdd6fe6071100e4c2566f2d02c7 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for AMD 64 COFF files.
-   Copyright (C) 2006-2014 Free Software Foundation, Inc.
+   Copyright (C) 2006-2015 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -143,6 +143,16 @@ coff_amd64_reloc (bfd *abfd,
        reloc_howto_type *howto = reloc_entry->howto;
        unsigned char *addr = (unsigned char *) data + reloc_entry->address;
 
+       /* FIXME: We do not have an end address for data, so we cannot
+          accurately range check any addresses computed against it.
+          cf: PR binutils/17512: file: 1085-1761-0.004.
+          For now we do the best that we can.  */
+       if (addr < (unsigned char *) data || addr > ((unsigned char *) data) + input_section->size)
+         {
+           bfd_set_error (bfd_error_bad_value);
+           return bfd_reloc_notsupported;
+         }
+
        switch (howto->size)
          {
          case 0:
@@ -177,7 +187,8 @@ coff_amd64_reloc (bfd *abfd,
            break;
 
          default:
-           abort ();
+           bfd_set_error (bfd_error_bad_value);
+           return bfd_reloc_notsupported;
          }
       }
 
@@ -488,7 +499,7 @@ static reloc_howto_type howto_table[] =
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
                                                                \
     if (coffsym != NULL                                                \
        && coffsym->native->u.syment.n_scnum == 0)              \
This page took 0.024587 seconds and 4 git commands to generate.