diff options
author | Tom de Vries <tdevries@suse.de> | 2020-05-25 12:01:52 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-05-25 12:01:52 +0200 |
commit | 465e1b0f196faea1fc949863af023b762ef86188 (patch) | |
tree | b9f0d0b7589989f448cc93f54890ac962b6901f2 /gdb/testsuite | |
parent | 3c5a0e025bf0163ce6a540ac0a18a91f97e215a3 (diff) | |
download | gdb-465e1b0f196faea1fc949863af023b762ef86188.zip gdb-465e1b0f196faea1fc949863af023b762ef86188.tar.gz gdb-465e1b0f196faea1fc949863af023b762ef86188.tar.bz2 |
[gdb/testsuite] Fix exec_is_pie with gold linker
When running test-case gdb.base/break-interp.exp with target board gold, we
run into:
...
gdb compile failed, pie failed to generate PIE executable
...
The problem is that the proc exec_is_pie uses the PIE flag in the readelf -d
output, which doesn't seem to be set by the gold linker.
Instead, use the "Type" field in the readelf -h output.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2020-05-25 Tom de Vries <tdevries@suse.de>
PR testsuite/26031
* lib/gdb.exp (exec_is_pie): Test readelf -h output.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 93d5e70..d372b50 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2020-05-25 Tom de Vries <tdevries@suse.de> + PR testsuite/26031 + * lib/gdb.exp (exec_is_pie): Test readelf -h output. + +2020-05-25 Tom de Vries <tdevries@suse.de> + * boards/gold.exp: New file. 2020-05-23 Tom Tromey <tom@tromey.com> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index f7d20bd..7177be9 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5509,11 +5509,12 @@ proc exec_is_pie { executable } { return -1 } set readelf_program [gdb_find_readelf] - set res [catch {exec $readelf_program -d $executable} output] + set res [catch {exec $readelf_program -h $executable} output] if { $res != 0 } { return -1 } - set res [regexp -line {\(FLAGS_1\).*Flags:.* PIE($| )} $output] + set res [regexp -line {^[ \t]*Type:[ \t]*DYN \(Shared object file\)$} \ + $output] if { $res == 1 } { return 1 } |