aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalfred Tedeschi <walfred.tedeschi@intel.com>2016-02-09 11:36:15 +0100
committerWalfred Tedeschi <walfred.tedeschi@intel.com>2016-02-09 11:36:15 +0100
commit0635c8759326e9431604b3359185cbf96740521d (patch)
tree7c4fbae9fde2f975bfc77a87fc3f592d154336b0
parent222cab58b7ed37df6e01dacb0932f400a2588137 (diff)
downloadgdb-0635c8759326e9431604b3359185cbf96740521d.zip
gdb-0635c8759326e9431604b3359185cbf96740521d.tar.gz
gdb-0635c8759326e9431604b3359185cbf96740521d.tar.bz2
Revert "Add a more helpful warning message to explain why some AArch64 relocations can overflow."
This reverts commit 2ea53e003163338a403d5afbb2046cafb8f3abe9.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elfnn-aarch64.c35
-rw-r--r--ld/ChangeLog7
-rw-r--r--ld/testsuite/ld-aarch64/aarch64-elf.exp6
-rw-r--r--ld/testsuite/ld-aarch64/reloc-overflow-1.s14
-rw-r--r--ld/testsuite/ld-aarch64/reloc-overflow-2.s5
-rw-r--r--ld/testsuite/ld-aarch64/reloc-overflow-bad.d4
7 files changed, 6 insertions, 71 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3c2e8cb..88c663c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 99acab4..292470df 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -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;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index fb4d31f..584a8dd 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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.
diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
index d0b33cf..939539e 100644
--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
+++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
@@ -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
index 9f85fd8..0000000
--- a/ld/testsuite/ld-aarch64/reloc-overflow-1.s
+++ /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
index 4956f01..0000000
--- a/ld/testsuite/ld-aarch64/reloc-overflow-2.s
+++ /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
index 39f7e31..0000000
--- a/ld/testsuite/ld-aarch64/reloc-overflow-bad.d
+++ /dev/null
@@ -1,4 +0,0 @@
-#source: reloc-overflow-1.s
-#source: reloc-overflow-2.s
-#ld: -e0
-#error: .*One possible cause.*