binutils/testsuite: Fix a crash with STN_UNDEF in relocation
Verify that `strip' completes successfully and a correct relocation entry is copied for a relocation encountered with the STN_UNDEF symbol index. binutils/ * testsuite/binutils-all/strip-15.d: New test. * testsuite/binutils-all/strip-15rel.s: New test source. * testsuite/binutils-all/strip-15rela.s: New test source. * testsuite/binutils-all/strip-15mips64.s: New test source. * testsuite/binutils-all/objcopy.exp: Run the new test.
This commit is contained in:
parent
aec2e0d252
commit
d52e3d06e5
@ -1,3 +1,11 @@
|
||||
2018-04-09 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* testsuite/binutils-all/strip-15.d: New test.
|
||||
* testsuite/binutils-all/strip-15rel.s: New test source.
|
||||
* testsuite/binutils-all/strip-15rela.s: New test source.
|
||||
* testsuite/binutils-all/strip-15mips64.s: New test source.
|
||||
* testsuite/binutils-all/objcopy.exp: Run the new test.
|
||||
|
||||
2018-04-09 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* testsuite/binutils-all/strip-14.d: New test.
|
||||
|
@ -1123,6 +1123,11 @@ if [is_elf_format] {
|
||||
[list as "--defsym RELOC=${reloc}"] \
|
||||
[list as [expr {[is_elf64 tmpdir/bintest.o] \
|
||||
? "--defsym ELF64=1" : ""}]]]
|
||||
run_dump_test "strip-15" [list \
|
||||
[list source strip-15${reloc_format}.s] \
|
||||
[list as "--defsym RELOC=${reloc}"] \
|
||||
[list as [expr {[is_elf64 tmpdir/bintest.o] \
|
||||
? "--defsym ELF64=1" : ""}]]]
|
||||
|
||||
# This requires STB_GNU_UNIQUE support with OSABI set to GNU.
|
||||
if { [supports_gnu_unique] } {
|
||||
|
8
binutils/testsuite/binutils-all/strip-15.d
Normal file
8
binutils/testsuite/binutils-all/strip-15.d
Normal file
@ -0,0 +1,8 @@
|
||||
#PROG: strip
|
||||
#strip: -g
|
||||
#readelf: -r
|
||||
|
||||
Relocation section '\.rela?\.text' at offset .* contains 2 entries:
|
||||
*Offset * Info * Type * Sym\. *Value * Sym\. *Name(?: * \+ * Addend)?
|
||||
0+00 * 0+0(?:1|32|103) * R_[^ ]* *(?: * 55aa)?
|
||||
#pass
|
14
binutils/testsuite/binutils-all/strip-15mips64.s
Normal file
14
binutils/testsuite/binutils-all/strip-15mips64.s
Normal file
@ -0,0 +1,14 @@
|
||||
.text
|
||||
foo:
|
||||
.dc.l 0x12345678
|
||||
|
||||
.section .rela.text
|
||||
.dc.a 0
|
||||
.dc.l 0x00000000
|
||||
.dc.b 0, 0, 0, RELOC
|
||||
.dc.a 0x000055aa
|
||||
|
||||
.dc.a 0
|
||||
.dc.l 0
|
||||
.dc.b 0, 0, 0, 0
|
||||
.dc.a 0
|
23
binutils/testsuite/binutils-all/strip-15rel.s
Normal file
23
binutils/testsuite/binutils-all/strip-15rel.s
Normal file
@ -0,0 +1,23 @@
|
||||
.text
|
||||
foo:
|
||||
.dc.l 0x12345678
|
||||
|
||||
.section .rel.text
|
||||
.ifdef ELF64
|
||||
|
||||
.dc.a 0
|
||||
.dc.a RELOC
|
||||
|
||||
.dc.a 0
|
||||
.dc.a 0
|
||||
.else
|
||||
|
||||
# Some targets, such as `m68hc11-*', use 16-bit addresses.
|
||||
# With them `.dc.a' emits 16-bit quantities, so we need to use
|
||||
# `.dc.l' for 32-bit relocation data.
|
||||
.dc.l 0
|
||||
.dc.l RELOC
|
||||
|
||||
.dc.l 0
|
||||
.dc.l 0
|
||||
.endif
|
27
binutils/testsuite/binutils-all/strip-15rela.s
Normal file
27
binutils/testsuite/binutils-all/strip-15rela.s
Normal file
@ -0,0 +1,27 @@
|
||||
.text
|
||||
foo:
|
||||
.dc.l 0x12345678
|
||||
|
||||
.section .rela.text
|
||||
.ifdef ELF64
|
||||
|
||||
.dc.a 0
|
||||
.dc.a RELOC
|
||||
.dc.a 0x00000000000055aa
|
||||
|
||||
.dc.a 0
|
||||
.dc.a 0
|
||||
.dc.a 0
|
||||
.else
|
||||
|
||||
# Some targets, such as `h8300-*' or `ip2k-*', use 16-bit addresses.
|
||||
# With them `.dc.a' emits 16-bit quantities, so we need to use
|
||||
# `.dc.l' for 32-bit relocation data.
|
||||
.dc.l 0
|
||||
.dc.l RELOC
|
||||
.dc.l 0x000055aa
|
||||
|
||||
.dc.l 0
|
||||
.dc.l 0
|
||||
.dc.l 0
|
||||
.endif
|
Loading…
Reference in New Issue
Block a user