Revert "Add a more helpful warning message to explain why some AArch64 relocations...
authorWalfred Tedeschi <walfred.tedeschi@intel.com>
Tue, 9 Feb 2016 10:36:15 +0000 (11:36 +0100)
committerWalfred Tedeschi <walfred.tedeschi@intel.com>
Tue, 9 Feb 2016 10:36:15 +0000 (11:36 +0100)
This reverts commit 2ea53e003163338a403d5afbb2046cafb8f3abe9.

bfd/ChangeLog
bfd/elfnn-aarch64.c
ld/ChangeLog
ld/testsuite/ld-aarch64/aarch64-elf.exp
ld/testsuite/ld-aarch64/reloc-overflow-1.s [deleted file]
ld/testsuite/ld-aarch64/reloc-overflow-2.s [deleted file]
ld/testsuite/ld-aarch64/reloc-overflow-bad.d [deleted file]

index 3c2e8cb..88c663c 100644 (file)
@@ -1,9 +1,3 @@
-2016-02-09  Nick Clifton  <nickc@redhat.com>
-
-       * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Add a more
-       helpful warning message to explain why certain AArch64 relocs
-       might overflow.
-
 2016-02-05  Simon Marchi  <simon.marchi@ericsson.com>
 
        * pe-mips.c (coff_mips_reloc): Fix formatting.
index 99acab4..292470d 100644 (file)
@@ -6405,6 +6405,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
          break;
        }
 
+      if (!save_addend)
+       addend = 0;
+
+
       /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
          because such sections are not SEC_ALLOC and thus ld.so will
          not process them.  */
@@ -6444,34 +6448,6 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
                     name, input_bfd, input_section, rel->r_offset);
                  return FALSE;
                }
-             /* Overflow can occur when a variable is referenced with a type
-                that has a larger alignment than the type with which it was
-                declared. eg:
-                  file1.c: extern int foo; int a (void) { return foo; }
-                  file2.c: char bar, foo, baz;
-                If the variable is placed into a data section at an offset
-                that is incompatible with the larger alignment requirement
-                overflow will occur.  (Strictly speaking this is not overflow
-                but rather an alignment problem, but the bfd_reloc_ error
-                enum does not have a value to cover that situation).
-
-                Try to catch this situation here and provide a more helpful
-                error message to the user.  */
-             if (addend & ((1 << howto->rightshift) - 1)
-                 /* FIXME: Are we testing all of the appropriate reloc
-                    types here ?  */
-                 && (real_r_type == BFD_RELOC_AARCH64_LD_LO19_PCREL
-                     || real_r_type == BFD_RELOC_AARCH64_LDST16_LO12
-                     || real_r_type == BFD_RELOC_AARCH64_LDST32_LO12
-                     || real_r_type == BFD_RELOC_AARCH64_LDST64_LO12
-                     || real_r_type == BFD_RELOC_AARCH64_LDST128_LO12))
-               {
-                 info->callbacks->warning
-                   (info, _("One possible cause of this error is that the \
-symbol is being referenced in the indicated code as if it had a larger \
-alignment than was declared where it was defined."),
-                    name, input_bfd, input_section, rel->r_offset);
-               }
              break;
 
            case bfd_reloc_undefined:
@@ -6506,9 +6482,6 @@ alignment than was declared where it was defined."),
              break;
            }
        }
-
-      if (!save_addend)
-       addend = 0;
     }
 
   return TRUE;
index fb4d31f..584a8dd 100644 (file)
@@ -1,10 +1,3 @@
-2016-02-09  Nick Clifton  <nickc@redhat.com>
-
-       * testsuite/ld-aarch64/reloc-overflow-bad.d: New test.
-       * testsuite/ld-aarch64/reloc-overflow-1.s: New source file.
-       * testsuite/ld-aarch64/reloc-overflow-2.s: New source file.
-       * testsuite/ld-aarch64/aarch64-elf.exp: Run the new test.
-
 2016-02-04  Nick Clifton  <nickc@redhat.com>
 
        * testsuite/ld-arm/arm-elf.exp: Remove ARM NOREAD section tests.
index d0b33cf..939539e 100644 (file)
@@ -159,8 +159,6 @@ run_dump_test "emit-relocs-537"
 run_dump_test "emit-relocs-537-overflow"
 run_dump_test "emit-relocs-538"
 
-run_dump_test "reloc-overflow-bad"
-
 # test addend correctness when --emit-relocs specified for non-relocatable obj.
 run_dump_test "emit-relocs-local-addend"
 # test addend correctness when -r specified.
@@ -283,9 +281,9 @@ run_dump_test "plt_mapping_symbol"
 
 set aarch64elflinktests {
   {"ld-aarch64/so with global symbol" "-shared" "" "" {copy-reloc-so.s}
-    {} "copy-reloc-so.so"}
+  {} "copy-reloc-so.so"}
   {"ld-aarch64/exe with copy relocation" "-e0 tmpdir/copy-reloc-so.so" "" ""
-    {copy-reloc-exe.s} {{objdump -R copy-reloc.d}} "copy-reloc"}
+  {copy-reloc-exe.s} {{objdump -R copy-reloc.d}} "copy-reloc"}
 }
 
 run_ld_link_tests $aarch64elflinktests
diff --git a/ld/testsuite/ld-aarch64/reloc-overflow-1.s b/ld/testsuite/ld-aarch64/reloc-overflow-1.s
deleted file mode 100644 (file)
index 9f85fd8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-        .file   "1.c"
-        .text
-        .align  2
-        .p2align 3,,7
-        .global dec
-        .arch armv8-a+fp+simd
-        //.tune generic
-        .type   dec, %function
-dec:
-        adrp    x0, var_2
-        ldr     w0, [x0, #:lo12:var_2]
-        ret
-        .size   dec, .-dec
-        .ident  "GCC: (GNU) 6.0.0 20160208 (experimental) [trunk revision 233206]"
diff --git a/ld/testsuite/ld-aarch64/reloc-overflow-2.s b/ld/testsuite/ld-aarch64/reloc-overflow-2.s
deleted file mode 100644 (file)
index 4956f01..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-        .file   "2.c"
-        .comm   var_3,1,1
-        .comm   var_2,1,1
-        .comm   var_1,1,1
-        .ident  "GCC: (GNU) 6.0.0 20160208 (experimental) [trunk revision 233206]"
diff --git a/ld/testsuite/ld-aarch64/reloc-overflow-bad.d b/ld/testsuite/ld-aarch64/reloc-overflow-bad.d
deleted file mode 100644 (file)
index 39f7e31..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#source: reloc-overflow-1.s
-#source: reloc-overflow-2.s
-#ld: -e0
-#error: .*One possible cause.*