diff options
author | Tom de Vries <tdevries@suse.de> | 2020-12-14 17:05:11 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-12-14 17:05:11 +0100 |
commit | 519155c9f6804988e35c8537c4506e877176c9b1 (patch) | |
tree | 1229b2274dde661de0c669d3071e68476594710a /gdb/testsuite | |
parent | 153f6e6cb0266f8312ba85956b256ce1e3a2cb8e (diff) | |
download | gdb-519155c9f6804988e35c8537c4506e877176c9b1.zip gdb-519155c9f6804988e35c8537c4506e877176c9b1.tar.gz gdb-519155c9f6804988e35c8537c4506e877176c9b1.tar.bz2 |
[gdb/testsuite] Handle no glibc debuginfo in gdb.base/solib-corrupted.exp
When running test-case gdb.base/solib-corrupted.exp on SLE-11, I get:
...
(gdb) PASS: gdb.base/solib-corrupted.exp: normal list
p/x _r_debug->r_map->l_next = _r_debug->r_map^M
'_r_debug' has unknown type; cast it to its declared type^M
(gdb) FAIL: gdb.base/solib-corrupted.exp: make solibs looping
...
The reason that _r_debug has unknown type is that glibc debuginfo is not
installed. The test-case attempts to detect this but doesn't handle this
particular error string.
Fix this by adding the "unknown type" line to the regexp detecting missing
glibc debuginfo.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2020-12-14 Tom de Vries <tdevries@suse.de>
PR testsuite/26962
* gdb.base/solib-corrupted.exp: Handle "'_r_debug' has unknown type;
cast it to its declared type".
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/solib-corrupted.exp | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4bd4521..9a20e7e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2020-12-14 Tom de Vries <tdevries@suse.de> + PR testsuite/26962 + * gdb.base/solib-corrupted.exp: Handle "'_r_debug' has unknown type; + cast it to its declared type". + +2020-12-14 Tom de Vries <tdevries@suse.de> + PR testsuite/26951 * gdb.base/batch-preserve-term-settings.exp: Use "gdb-subshell$ " as shell prompt. diff --git a/gdb/testsuite/gdb.base/solib-corrupted.exp b/gdb/testsuite/gdb.base/solib-corrupted.exp index 5ee943c..902ef9c 100644 --- a/gdb/testsuite/gdb.base/solib-corrupted.exp +++ b/gdb/testsuite/gdb.base/solib-corrupted.exp @@ -64,10 +64,20 @@ if { [llength $probes] == 0 } { gdb_test "info sharedlibrary" "From * To .*" "normal list" +set no_glibc_debuginfo_re1 "No symbol \"_r_debug\" in current context\\." +set no_glibc_debuginfo_re2 \ + [concat \ + "Attempt to extract a component of a value that is not a structure" \ + " pointer\\."] +set no_glibc_debuginfo_re3 \ + "'_r_debug' has unknown type; cast it to its declared type" +set no_glibc_debuginfo_re \ + "($no_glibc_debuginfo_re1|$no_glibc_debuginfo_re2|$no_glibc_debuginfo_re3)" + # GDB checks there for matching L_PREV. set test "make solibs looping" gdb_test_multiple "p/x _r_debug->r_map->l_next = _r_debug->r_map" $test { - -re "(No symbol \"_r_debug\" in current context\\.|Attempt to extract a component of a value that is not a structure pointer\\.)\r\n$gdb_prompt $" { + -re "$no_glibc_debuginfo_re\r\n$gdb_prompt $" { # glibc debug info is not available and it is too difficult to find and # parse it from this testcase without the gdb supporting functions. xfail $test |