* elf64-aarch64.c (elf64_aarch64_check_relocs): Move relocation
authorNick Clifton <nickc@redhat.com>
Mon, 29 Apr 2013 08:33:51 +0000 (08:33 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 29 Apr 2013 08:33:51 +0000 (08:33 +0000)
error check up and add error message.

bfd/ChangeLog
bfd/elf64-aarch64.c

index 12a44f48f1a305575ff23ddac69565f5c2daff38..14abe010a8fa6f24af800b74d9b0903cb465834b 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-29  Will Newton  <will.newton@linaro.org>
+
+       * elf64-aarch64.c (elf64_aarch64_check_relocs): Move relocation
+       error check up and add error message.
+
 2013-04-26  Will Newton  <will.newton@linaro.org>
 
        * elf64-aarch64.c (elf64_aarch64_check_relocs): Remove dead code.
index 9a6d8b4a6af0dd10974ff318da6fe0ae9d7ba5cc..e3cae9565013385b004344485f1fb756602b7478 100644 (file)
@@ -4306,6 +4306,14 @@ elf64_aarch64_relocate_section (bfd *output_bfd,
       bfd_reloc.howto = elf64_aarch64_howto_from_type (r_type);
       howto = bfd_reloc.howto;
 
+      if (howto == NULL)
+       {
+         (*_bfd_error_handler)
+           (_("%B: unrecognized relocation (0x%x) in section `%A'"),
+            input_bfd, input_section, r_type);
+         return FALSE;
+       }
+
       h = NULL;
       sym = NULL;
       sec = NULL;
@@ -4330,12 +4338,6 @@ elf64_aarch64_relocate_section (bfd *output_bfd,
                return FALSE;
            }
 
-         if (r_type >= R_AARCH64_dyn_max)
-           {
-             bfd_set_error (bfd_error_bad_value);
-             return FALSE;
-           }
-
          relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
        }
       else