Match library name prefixed with sysroot

Message ID 1416382825-29407-1-git-send-email-yao@codesourcery.com
State New, archived
Headers

Commit Message

Yao Qi Nov. 19, 2014, 7:40 a.m. UTC
  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-19  Yao Qi  <yao@codesourcery.com>

	* gdb.base/break-probes.exp: Match library name prefixed with
	sysroot.
---
 gdb/testsuite/gdb.base/break-probes.exp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
  

Comments

Yao Qi Nov. 28, 2014, 3:23 a.m. UTC | #1
Yao Qi <yao@codesourcery.com> writes:

> gdb/testsuite:
>
> 2014-11-19  Yao Qi  <yao@codesourcery.com>
>
> 	* gdb.base/break-probes.exp: Match library name prefixed with
> 	sysroot.

I've pushed it in.
  

Patch

diff --git a/gdb/testsuite/gdb.base/break-probes.exp b/gdb/testsuite/gdb.base/break-probes.exp
index e25ea91..77fe7326 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 $" {