diff options
author | Nick Clifton <nickc@redhat.com> | 2016-02-09 09:56:21 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-02-09 10:47:54 +0000 |
commit | 027e9c750c20fe8031a2b6d6272cd57bbf445df5 (patch) | |
tree | 4239dc30b45ff76536a55578194b080124302ec1 /ld | |
parent | c23bbc1cdae6149de4175a75aa9bf9bcbc936fa4 (diff) | |
download | binutils-027e9c750c20fe8031a2b6d6272cd57bbf445df5.zip binutils-027e9c750c20fe8031a2b6d6272cd57bbf445df5.tar.gz binutils-027e9c750c20fe8031a2b6d6272cd57bbf445df5.tar.bz2 |
Add a more helpful warning message to explain why some AArch64 relocations can overflow.
bfd * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Add a more
helpful warning message to explain why certain AArch64 relocs
might overflow.
ld * 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.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/testsuite/ld-aarch64/aarch64-elf.exp | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-aarch64/reloc-overflow-1.s | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-aarch64/reloc-overflow-2.s | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-aarch64/reloc-overflow-bad.d | 4 |
5 files changed, 34 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 584a8dd..fb4d31f 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +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 939539e..d0b33cf 100644 --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp @@ -159,6 +159,8 @@ 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. @@ -281,9 +283,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 new file mode 100644 index 0000000..9f85fd8 --- /dev/null +++ b/ld/testsuite/ld-aarch64/reloc-overflow-1.s @@ -0,0 +1,14 @@ + .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 new file mode 100644 index 0000000..4956f01 --- /dev/null +++ b/ld/testsuite/ld-aarch64/reloc-overflow-2.s @@ -0,0 +1,5 @@ + .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 new file mode 100644 index 0000000..39f7e31 --- /dev/null +++ b/ld/testsuite/ld-aarch64/reloc-overflow-bad.d @@ -0,0 +1,4 @@ +#source: reloc-overflow-1.s +#source: reloc-overflow-2.s +#ld: -e0 +#error: .*One possible cause.* |