mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
[gdb/testsuite] Fix gdb.dwarf2/dwp-symlink.exp with target board fission-dwp
There are two test-cases that only run when the target board produces .dwp files, gdb.dwarf2/dwp-sepdebug.exp and gdb.dwarf2/dwp-symlink.exp. When running those test-cases with target board fission-dwp, I run into: ... (gdb) ptype main^M warning: Could not find DWO CU dwp-symlink0.dwo(0x496f1a7405c37a61) \ referenced by CU at offset 0xa6 [in module dwp-symlink]^M type = <unknown return type> ()^M (gdb) FAIL: gdb.dwarf2/dwp-symlink.exp: binary default, dwp at symlink ... coming from: ... # This case cannot work. gdb_test "ptype main" {type = int \(\)} "binary default, dwp at symlink" ... I had a bit of difficulty understanding what the test-case does/tries to do, so to build some understanding I reproduced the behaviour outside of the test-case: ... $ cat start.c void _start (void) {} $ gcc -gsplit-dwarf start.c -nostdlib $ gdb -q -batch a.out -ex "print _start" $1 = {void (void)} 0x400144 <_start> $ dwp -e a.out $ rm start.dwo $ gdb -q -batch a.out -ex "print _start" $1 = {void (void)} 0x400144 <_start> $ ln -s a.out b.out $ gdb -q -batch b.out -ex "print _start" $1 = {void (void)} 0x400144 <_start> $ mv a.out.dwp b.out.dwp $ gdb -q -batch b.out -ex "print _start" $1 = {void (void)} 0x400144 <_start> $ gdb -q -batch a.out -ex "print _start" During symbol reading: Could not find DWO CU start.dwo(0x8bdfd613387aa145) \ referenced by CU at offset 0x0 [in module a.out] warning: Could not find DWO CU start.dwo(0x8bdfd613387aa145) \ referenced by CU at offset 0x0 [in module a.out] $1 = {<text variable, no debug info>} 0x400144 <_start> ... and agreed, that cannot work: the DWO CU required in a.out is in b.out.dwp, and there's no way to find b.out.dwp starting from a.out. The fact that a FAIL is produced is incorrect, gdb does nothing wrong. Fix this by checking for the warning text instead. While we're at it, fix this PATH as well: ... (gdb) cd /data/vries/gdb/leap-15-5/build/gdb/testsuite/outputs/gdb.dwarf2/dwp-symlink^M Working directory /data/vries/gdb/leap-15-5/build/gdb/testsuite/outputs/gdb.dwarf2/dwp-symlink.^M (gdb) PASS: gdb.dwarf2/dwp-symlink.exp: cd \ /data/vries/gdb/leap-15-5/build/gdb/testsuite/outputs/gdb.dwarf2/dwp-symlink PATH: gdb.dwarf2/dwp-symlink.exp: cd \ /data/vries/gdb/leap-15-5/build/gdb/testsuite/outputs/gdb.dwarf2/dwp-symlink ... While we're at it, use string_to_regexp to simplify the test-case. Tested on x86_64-linux, with target board fission-dwp.
This commit is contained in:
parent
2bba460587
commit
4be75f1fad
@ -45,11 +45,13 @@ if [remote_file host exists [standard_output_file $thelink.dwp]] {
|
|||||||
|
|
||||||
clean_restart "$testfile"
|
clean_restart "$testfile"
|
||||||
|
|
||||||
gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary default, dwp default"
|
set main_type_re [string_to_regexp "type = int (int, char **)"]
|
||||||
|
|
||||||
|
gdb_test "ptype main" $main_type_re "binary default, dwp default"
|
||||||
|
|
||||||
clean_restart "$thelink"
|
clean_restart "$thelink"
|
||||||
|
|
||||||
gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary symlink, dwp default"
|
gdb_test "ptype main" $main_type_re "binary symlink, dwp default"
|
||||||
|
|
||||||
gdb_exit
|
gdb_exit
|
||||||
remote_exec host "mv -f [standard_output_file ${testfile}.dwp] [standard_output_file ${thelink}.dwp]"
|
remote_exec host "mv -f [standard_output_file ${testfile}.dwp] [standard_output_file ${thelink}.dwp]"
|
||||||
@ -64,12 +66,13 @@ if ![remote_file host exists [standard_output_file ${thelink}.dwp]] {
|
|||||||
|
|
||||||
clean_restart "$testfile"
|
clean_restart "$testfile"
|
||||||
|
|
||||||
# This case cannot work.
|
gdb_test "ptype main" \
|
||||||
gdb_test "ptype main" {type = int \(\)} "binary default, dwp at symlink"
|
"Could not find DWO CU .*" \
|
||||||
|
"binary default, dwp at symlink"
|
||||||
|
|
||||||
clean_restart "$thelink"
|
clean_restart "$thelink"
|
||||||
|
|
||||||
gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary symlink, dwp at symlink"
|
gdb_test "ptype main" $main_type_re "binary symlink, dwp at symlink"
|
||||||
|
|
||||||
# Verify we can still find the dwp if we change directories and we specified
|
# Verify we can still find the dwp if we change directories and we specified
|
||||||
# a relative path for the program.
|
# a relative path for the program.
|
||||||
@ -77,7 +80,9 @@ gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary symlink, dwp at sy
|
|||||||
# This is clean_restart, but specifying a relative path to the binary.
|
# This is clean_restart, but specifying a relative path to the binary.
|
||||||
clean_restart
|
clean_restart
|
||||||
gdb_test "cd [file dirname [standard_output_file ${thelink}]]" \
|
gdb_test "cd [file dirname [standard_output_file ${thelink}]]" \
|
||||||
"Working directory .*"
|
"Working directory .*" \
|
||||||
|
"cd to dir containing binary"
|
||||||
|
|
||||||
gdb_load "./${thelink}"
|
gdb_load "./${thelink}"
|
||||||
|
|
||||||
gdb_test "cd .." "Working directory .*"
|
gdb_test "cd .." "Working directory .*"
|
||||||
|
Loading…
Reference in New Issue
Block a user