mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-06 23:50:09 +08:00
LD/testsuite: Fix undefined symbol tests for MIPS and S+core targets
Fix commit 647d4de92e06 ("Test undefined symbols in shared libraries") and remove "undefined symbols in shared lib (dyn reloc)" test failures for MIPS and S+core targets. This test assumes 3 dynamic relocation entries, however the respective psABIs define an extra single dummy *_NONE relocation at the beginning of the dynamic relocation table, which results in test output like the following for MIPS: Relocation section '.rel.dyn' at offset 0x33c contains 4 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_MIPS_NONE 00010364 00000903 R_MIPS_REL32 00000000 undef_pfun 00010360 00000a03 R_MIPS_REL32 00000000 undef_data 00010368 00000b03 R_MIPS_REL32 00000000 undef_notype and S+core: Relocation section '.rel.dyn' at offset 0x274 contains 4 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_SCORE_NONE 5ffe0464 00000e12 R_SCORE_REL32 00000000 undef_notype 5ffe045c 00000f12 R_SCORE_REL32 00000000 undef_data 5ffe0460 00001012 R_SCORE_REL32 00000000 undef_pfun targets respectively, and also n64 MIPS targets pad relocation triplets they use with extra *_NONE relocations, resulting in output like this: Relocation section '.rel.dyn' at offset 0x4c0 contains 4 entries: Offset Info Type Sym. Value Sym. Name 000000000000 000000000000 R_MIPS_NONE Type2: R_MIPS_NONE Type3: R_MIPS_NONE 000000010508 000900001203 R_MIPS_REL32 0000000000000000 undef_pfun Type2: R_MIPS_64 Type3: R_MIPS_NONE 000000010500 000a00001203 R_MIPS_REL32 0000000000000000 undef_data Type2: R_MIPS_64 Type3: R_MIPS_NONE 000000010510 000b00001203 R_MIPS_REL32 0000000000000000 undef_notype Type2: R_MIPS_64 Type3: R_MIPS_NONE Expect the right number of *_NONE relocations then, and adjust the total number of relocations expected accordingly. ld/ * testsuite/ld-undefined/undefined.exp: Correct the dyn reloc test for MIPS and S+core targets.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2017-09-26 Maciej W. Rozycki <macro@imgtec.com>
|
||||||
|
|
||||||
|
* testsuite/ld-undefined/undefined.exp: Correct the dyn reloc
|
||||||
|
test for MIPS and S+core targets.
|
||||||
|
|
||||||
2017-09-22 H.J. Lu <hongjiu.lu@intel.com>
|
2017-09-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/22150
|
PR ld/22150
|
||||||
|
@ -195,10 +195,30 @@ if { ![is_elf_format] || ![check_shared_lib_support]} then {
|
|||||||
set exec_output [run_host_cmd "$READELF" "-r tmpdir/fundef.so"]
|
set exec_output [run_host_cmd "$READELF" "-r tmpdir/fundef.so"]
|
||||||
set exec_output [prune_warnings $exec_output]
|
set exec_output [prune_warnings $exec_output]
|
||||||
|
|
||||||
# we ought to get two .rel{a}.plt and three .rel{a}.dyn relocs
|
# We ought to get two .rel{a}.plt and three .rel{a}.dyn relocs,
|
||||||
|
# except for MIPS targets whose psABI mandates an extra
|
||||||
|
# R_MIPS_NONE relocation, also used to pad n64 relocation
|
||||||
|
# triplets, and S+core targets using an extra R_SCORE_NONE
|
||||||
|
# relocation, so adjust for that.
|
||||||
|
switch -glob $target_triplet {
|
||||||
|
"mips64*-*-openbsd*" {
|
||||||
|
set none_count 6
|
||||||
|
set reloc_count 4
|
||||||
|
}
|
||||||
|
"mips*" -
|
||||||
|
"score*" {
|
||||||
|
set none_count 1
|
||||||
|
set reloc_count 4
|
||||||
|
}
|
||||||
|
"*" {
|
||||||
|
set none_count 0
|
||||||
|
set reloc_count 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if { ($asflags == "" || [regexp ".* contains 2 .*" $exec_output])
|
if { ($asflags == "" || [regexp ".* contains 2 .*" $exec_output])
|
||||||
&& [regexp ".* contains 3 .*" $exec_output]
|
&& [regexp ".* contains $reloc_count .*" $exec_output]
|
||||||
&& ![regexp "_NONE" $exec_output]} then {
|
&& [regexp -all "_NONE" $exec_output] == $none_count } then {
|
||||||
pass "$testname (dyn reloc)"
|
pass "$testname (dyn reloc)"
|
||||||
} else {
|
} else {
|
||||||
fail "$testname (dyn reloc)"
|
fail "$testname (dyn reloc)"
|
||||||
|
Reference in New Issue
Block a user