From 0635c8759326e9431604b3359185cbf96740521d Mon Sep 17 00:00:00 2001 From: Walfred Tedeschi Date: Tue, 9 Feb 2016 11:36:15 +0100 Subject: [PATCH] Revert "Add a more helpful warning message to explain why some AArch64 relocations can overflow." This reverts commit 2ea53e003163338a403d5afbb2046cafb8f3abe9. --- bfd/ChangeLog | 6 ----- bfd/elfnn-aarch64.c | 35 ++++------------------------ ld/ChangeLog | 7 ------ ld/testsuite/ld-aarch64/aarch64-elf.exp | 6 ++--- ld/testsuite/ld-aarch64/reloc-overflow-1.s | 14 ----------- ld/testsuite/ld-aarch64/reloc-overflow-2.s | 5 ---- ld/testsuite/ld-aarch64/reloc-overflow-bad.d | 4 ---- 7 files changed, 6 insertions(+), 71 deletions(-) delete mode 100644 ld/testsuite/ld-aarch64/reloc-overflow-1.s delete mode 100644 ld/testsuite/ld-aarch64/reloc-overflow-2.s delete mode 100644 ld/testsuite/ld-aarch64/reloc-overflow-bad.d 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 - - * 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 * 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 - - * 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 * 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.* -- 2.7.4