[binutils-gdb] print-symbol-loading.exp: Allow libc symbols to be already loaded

Kevin Buettner kevinb@sourceware.org
Fri Jun 11 21:58:34 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=72c4daa36a3d35d578533d208668eb3ff9e7708f

commit 72c4daa36a3d35d578533d208668eb3ff9e7708f
Author: Kevin Buettner <kevinb@redhat.com>
Date:   Wed Jun 9 19:31:18 2021 -0700

    print-symbol-loading.exp: Allow libc symbols to be already loaded
    
    One consequence of changing libpthread_name_p() in solib.c to (also)
    match libc is that the symbols for libc will now be loaded by
    solib_add() in solib.c.  I think this is mostly harmless because
    we'll likely want these symbols to be loaded anyway, but it did cause
    two failures in gdb.base/print-symbol-loading.exp.
    
    Specifically...
    
    1)
    
    sharedlibrary .*
    (gdb) PASS: gdb.base/print-symbol-loading.exp: shlib off: load shared-lib
    
    now looks like this:
    
    sharedlibrary .*
    Symbols already loaded for /lib64/libc.so.6
    (gdb) PASS: gdb.base/print-symbol-loading.exp: shlib off: load shared-lib
    
    2)
    
    sharedlibrary .*
    Loading symbols for shared libraries: .*
    (gdb) PASS: gdb.base/print-symbol-loading.exp: shlib brief: load shared-lib
    
    now looks like this:
    
    sharedlibrary .*
    Loading symbols for shared libraries: .*
    Symbols already loaded for /lib64/libc.so.6
    (gdb) PASS: gdb.base/print-symbol-loading.exp: shlib brief: load shared-lib
    
    Fixing case #2 ended up being easier than #1.  #1 had been using
    gdb_test_no_output to correctly match this no-output case.  I
    ended up replacing it with gdb_test_multiple, matching the exact
    expected output for each of the two now acceptable cases.
    
    For case #2, I simply added an optional non-capturing group
    for the potential new output.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.base/print-symbol-loading.exp (proc test_load_shlib):
            Allow "Symbols already loaded for..." messages.

Diff:
---
 gdb/testsuite/ChangeLog                         |  5 +++++
 gdb/testsuite/gdb.base/print-symbol-loading.exp | 15 ++++++++++++---
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index fa22fc3bae9..5f9db54ad02 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2021-06-11  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/print-symbol-loading.exp (proc test_load_shlib):
+	Allow "Symbols already loaded for..." messages.
+
 2021-06-11  Kevin Buettner  <kevinb@redhat.com>
 
 	* gdb.base/execl-update-breakpoints.exp: Add regular
diff --git a/gdb/testsuite/gdb.base/print-symbol-loading.exp b/gdb/testsuite/gdb.base/print-symbol-loading.exp
index b8eb1c844bd..93ec43a3855 100644
--- a/gdb/testsuite/gdb.base/print-symbol-loading.exp
+++ b/gdb/testsuite/gdb.base/print-symbol-loading.exp
@@ -96,6 +96,7 @@ test_load_core full
 
 proc test_load_shlib { print_symbol_loading } {
     global binfile
+    global gdb_prompt
     with_test_prefix "shlib ${print_symbol_loading}" {
 	clean_restart ${binfile}
 	gdb_test_no_output "set auto-solib-add off"
@@ -106,12 +107,20 @@ proc test_load_shlib { print_symbol_loading } {
 	set test_name "load shared-lib"
 	switch ${print_symbol_loading} {
 	    "off" {
-		gdb_test_no_output "sharedlibrary .*" \
-		    ${test_name}
+		set cmd "sharedlibrary .*"
+		set cmd_regex [string_to_regexp $cmd]
+		gdb_test_multiple $cmd $test_name {
+		    -re "^$cmd_regex\r\n$gdb_prompt $" {
+			pass $test_name
+		    }
+		    -re "^$cmd_regex\r\nSymbols already loaded for\[^\r\n\]*\\/libc\\.\[^\r\n\]*\r\n$gdb_prompt $" {
+			pass $test_name
+		    }
+		}
 	    }
 	    "brief" {
 		gdb_test "sharedlibrary .*" \
-		    "Loading symbols for shared libraries: \\.\\*" \
+		    "Loading symbols for shared libraries: \\.\\*.*?(?:Symbols already loaded for .*?libc)?" \
 		    ${test_name}
 	    }
 	    "full" {


More information about the Gdb-cvs mailing list