From 10e79639cc08c050b8fa97c0a5af102683a11e3c Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 28 Nov 2014 11:21:48 +0800 Subject: [PATCH] Match library name prefixed with sysroot We enable systemtap probe in glibc recently, and see the following gdb fail, (gdb) set solib-absolute-prefix /. ... Stopped due to shared library event:^M Inferior loaded /./foo/bar/gdb.base/break-probes-solib.so ... (gdb) FAIL: gdb.base/break-probes.exp: run til our library loads (the program exited) $binfile_lib is /foo/bar/gdb.base/break-probes-solib.so, but the sysroot is prefixed in solib.c:solib_find, as comments described: Global variable GDB_SYSROOT is used as a prefix directory to search for shared libraries if they have an absolute path. so the output becomes "/./foo/bar/gdb.base/break-probes-solib.so", which is still correct. However, the test repeatedly continue the program and tries to match $binfile_lib, finally, the program exits and the test fails. This patch is to adjust the pattern to match $sysroot$binfile_lib instead of $binfile_lib. gdb/testsuite: 2014-11-28 Yao Qi * gdb.base/break-probes.exp: Match library name prefixed with sysroot. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/break-probes.exp | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 16fa87d304e..32f66c80cf9 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-28 Yao Qi + + * gdb.base/break-probes.exp: Match library name prefixed with + sysroot. + 2014-11-27 Simon Marchi * gdb.python/py-linetable.exp: Escape properly sorted(fset) diff --git a/gdb/testsuite/gdb.base/break-probes.exp b/gdb/testsuite/gdb.base/break-probes.exp index e25ea91546c..77fe7326374 100644 --- a/gdb/testsuite/gdb.base/break-probes.exp +++ b/gdb/testsuite/gdb.base/break-probes.exp @@ -58,13 +58,21 @@ gdb_test_multiple "bt" $test { } if { $using_probes } { + set sysroot "" + set test "show sysroot" + gdb_test_multiple $test $test { + -re "The current system root is \"(.*)\"\..*${gdb_prompt} $" { + set sysroot $expect_out(1,string) + } + } + # Run til it loads our library set test "run til our library loads" set not_loaded_library 1 while { $not_loaded_library } { set not_loaded_library 0 gdb_test_multiple "c" $test { - -re "Inferior loaded $binfile_lib\\M.*$gdb_prompt $" { + -re "Inferior loaded $sysroot$binfile_lib\\M.*$gdb_prompt $" { pass $test } -re "Stopped due to shared library event\\M.*$gdb_prompt $" { -- 2.30.2