diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 11:07:06 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-03-15 11:07:54 -0700 |
commit | 4c10bbaa0912742322f10d9d5bb630ba4e15dfa7 (patch) | |
tree | 4da4677185d00b755043d03f5781dd316029926c /ld/testsuite/ld-x86-64 | |
parent | 1eb2dbb8d73c344e199fd04531ec3f649e2835b2 (diff) | |
download | gdb-4c10bbaa0912742322f10d9d5bb630ba4e15dfa7.zip gdb-4c10bbaa0912742322f10d9d5bb630ba4e15dfa7.tar.gz gdb-4c10bbaa0912742322f10d9d5bb630ba4e15dfa7.tar.bz2 |
Add -z noreloc-overflow option to x86-64 ld
Add -z noreloc-overflow command-line option to the x86-64 ELF linker to
disable relocation overflow check. This can be used to avoid relocation
overflow check if there will be no dynamic relocation overflow at
run-time.
bfd/
PR ld/19807
* elf64-x86-64.c (elf_x86_64_relocate_section): Check
no_reloc_overflow_check to diable R_X86_64_32/R_X86_64_32S
relocation overflow check.
include/
PR ld/19807
* bfdlink.h (bfd_link_info): Add no_reloc_overflow_check.
ld/
PR ld/19807
* Makefile.am (ELF_X86_DEPS): Add
$(srcdir)/emulparams/reloc_overflow.sh.
* Makefile.in: Regenerated.
* NEWS: Mention -z noreloc-overflow.
* ld.texinfo: Document -z noreloc-overflow.
* emulparams/elf32_x86_64.sh: Source
${srcdir}/emulparams/reloc_overflow.sh.
* emulparams/elf_x86_64.sh: Likewise.
* emulparams/reloc_overflow.sh: New file.
* testsuite/ld-x86-64/pr19807-1.s: New file.
* testsuite/ld-x86-64/pr19807-1a.d: Likewise.
* testsuite/ld-x86-64/pr19807-1b.d: Likewise.
* testsuite/ld-x86-64/pr19807-2.s: Likewise.
* testsuite/ld-x86-64/pr19807-2a.d: Likewise.
* testsuite/ld-x86-64/pr19807-2b.d: Likewise.
* testsuite/ld-x86-64/pr19807-2c.d: Likewise.
* testsuite/ld-x86-64/pr19807-2d.d: Likewise.
* testsuite/ld-x86-64/pr19807-2e.d: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/19807 tests.
Diffstat (limited to 'ld/testsuite/ld-x86-64')
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-1.s | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-1a.d | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-1b.d | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2.s | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2a.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2b.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2c.d | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2d.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr19807-2e.d | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/x86-64.exp | 7 |
10 files changed, 95 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/pr19807-1.s b/ld/testsuite/ld-x86-64/pr19807-1.s new file mode 100644 index 0000000..0870f6a --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-1.s @@ -0,0 +1,8 @@ + .globl _start + .type _start, @function +_start: + movq $foo, %rax + .size _start, .-_start + .data +foo: + .quad 0 diff --git a/ld/testsuite/ld-x86-64/pr19807-1a.d b/ld/testsuite/ld-x86-64/pr19807-1a.d new file mode 100644 index 0000000..f3c5390 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-1a.d @@ -0,0 +1,13 @@ +#source: pr19807-1.s +#as: --64 +#ld: -pie -melf_x86_64 -z noreloc-overflow +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 c7 c0 ([0-9a-f]{2} ){4} mov \$0x[a-f0-9]+,%rax +#pass diff --git a/ld/testsuite/ld-x86-64/pr19807-1b.d b/ld/testsuite/ld-x86-64/pr19807-1b.d new file mode 100644 index 0000000..6af4985 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-1b.d @@ -0,0 +1,13 @@ +#source: pr19807-1.s +#as: --x32 +#ld: -pie -melf32_x86_64 -z noreloc-overflow +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: 48 c7 c0 ([0-9a-f]{2} ){4} mov \$0x[a-f0-9]+,%rax +#pass diff --git a/ld/testsuite/ld-x86-64/pr19807-2.s b/ld/testsuite/ld-x86-64/pr19807-2.s new file mode 100644 index 0000000..2b309f2 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2.s @@ -0,0 +1,8 @@ + .globl _start + .type _start, @function +_start: + movl $foo, %eax + .size _start, .-_start + .data +foo: + .quad 0 diff --git a/ld/testsuite/ld-x86-64/pr19807-2a.d b/ld/testsuite/ld-x86-64/pr19807-2a.d new file mode 100644 index 0000000..1357d72 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2a.d @@ -0,0 +1,4 @@ +#source: pr19807-2.s +#as: --64 +#ld: -pie -melf_x86_64 +#error: .*relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC diff --git a/ld/testsuite/ld-x86-64/pr19807-2b.d b/ld/testsuite/ld-x86-64/pr19807-2b.d new file mode 100644 index 0000000..a781b30 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2b.d @@ -0,0 +1,8 @@ +#source: pr19807-2.s +#as: --x32 +#ld: -pie -melf32_x86_64 +#readelf: -r --wide + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Sym. Value Symbol's Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+ diff --git a/ld/testsuite/ld-x86-64/pr19807-2c.d b/ld/testsuite/ld-x86-64/pr19807-2c.d new file mode 100644 index 0000000..83ac641 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2c.d @@ -0,0 +1,13 @@ +#source: pr19807-2.s +#as: --x32 +#ld: -pie -melf32_x86_64 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: b8 ([0-9a-f]{2} ){4} mov \$0x[a-f0-9]+,%eax +#pass diff --git a/ld/testsuite/ld-x86-64/pr19807-2d.d b/ld/testsuite/ld-x86-64/pr19807-2d.d new file mode 100644 index 0000000..1171283 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2d.d @@ -0,0 +1,8 @@ +#source: pr19807-2.s +#as: --64 +#ld: -pie -melf_x86_64 -z noreloc-overflow +#readelf: -r --wide + +Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Symbol's Value Symbol's Name \+ Addend +[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+ diff --git a/ld/testsuite/ld-x86-64/pr19807-2e.d b/ld/testsuite/ld-x86-64/pr19807-2e.d new file mode 100644 index 0000000..f26616a --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr19807-2e.d @@ -0,0 +1,13 @@ +#source: pr19807-2.s +#as: --64 +#ld: -pie -melf_x86_64 -z noreloc-overflow +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +[a-f0-9]+ <_start>: +[ ]*[a-f0-9]+: b8 ([0-9a-f]{2} ){4} mov \$0x[a-f0-9]+,%eax +#pass diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 49f9fa3..8f29761 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -247,6 +247,13 @@ run_dump_test "largecomm-1e" run_dump_test "largecomm-1f" run_dump_test "pr19539a" run_dump_test "pr19539b" +run_dump_test "pr19807-1a" +run_dump_test "pr19807-1b" +run_dump_test "pr19807-2a" +run_dump_test "pr19807-2b" +run_dump_test "pr19807-2c" +run_dump_test "pr19807-2d" +run_dump_test "pr19807-2e" if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} { return |