Blame SOURCES/gdb-rhbz1971095-libthread_db-update-4of5.patch

4a80f0
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
4a80f0
From: Kevin Buettner <kevinb@redhat.com>
4a80f0
Date: Wed, 9 Jun 2021 19:31:18 -0700
4a80f0
Subject: gdb-rhbz1971095-libthread_db-update-4of5.patch
4a80f0
4a80f0
;; Backport "print-symbol-loading.exp: Allow libc symbols to be already loaded"
4a80f0
;; (Kevin Buettner, RH BZ 1971095)
4a80f0
4a80f0
One consequence of changing libpthread_name_p() in solib.c to (also)
4a80f0
match libc is that the symbols for libc will now be loaded by
4a80f0
solib_add() in solib.c.  I think this is mostly harmless because
4a80f0
we'll likely want these symbols to be loaded anyway, but it did cause
4a80f0
two failures in gdb.base/print-symbol-loading.exp.
4a80f0
4a80f0
Specifically...
4a80f0
4a80f0
1)
4a80f0
4a80f0
sharedlibrary .*
4a80f0
(gdb) PASS: gdb.base/print-symbol-loading.exp: shlib off: load shared-lib
4a80f0
4a80f0
now looks like this:
4a80f0
4a80f0
sharedlibrary .*
4a80f0
Symbols already loaded for /lib64/libc.so.6
4a80f0
(gdb) PASS: gdb.base/print-symbol-loading.exp: shlib off: load shared-lib
4a80f0
4a80f0
2)
4a80f0
4a80f0
sharedlibrary .*
4a80f0
Loading symbols for shared libraries: .*
4a80f0
(gdb) PASS: gdb.base/print-symbol-loading.exp: shlib brief: load shared-lib
4a80f0
4a80f0
now looks like this:
4a80f0
4a80f0
sharedlibrary .*
4a80f0
Loading symbols for shared libraries: .*
4a80f0
Symbols already loaded for /lib64/libc.so.6
4a80f0
(gdb) PASS: gdb.base/print-symbol-loading.exp: shlib brief: load shared-lib
4a80f0
4a80f0
Fixing case #2 ended up being easier than #1.  #1 had been using
4a80f0
gdb_test_no_output to correctly match this no-output case.  I
4a80f0
ended up replacing it with gdb_test_multiple, matching the exact
4a80f0
expected output for each of the two now acceptable cases.
4a80f0
4a80f0
For case #2, I simply added an optional non-capturing group
4a80f0
for the potential new output.
4a80f0
4a80f0
gdb/testsuite/ChangeLog:
4a80f0
4a80f0
	* gdb.base/print-symbol-loading.exp (proc test_load_shlib):
4a80f0
	Allow "Symbols already loaded for..." messages.
4a80f0
4a80f0
diff --git a/gdb/testsuite/gdb.base/print-symbol-loading.exp b/gdb/testsuite/gdb.base/print-symbol-loading.exp
4a80f0
--- a/gdb/testsuite/gdb.base/print-symbol-loading.exp
4a80f0
+++ b/gdb/testsuite/gdb.base/print-symbol-loading.exp
4a80f0
@@ -96,6 +96,7 @@ test_load_core full
4a80f0
 
4a80f0
 proc test_load_shlib { print_symbol_loading } {
4a80f0
     global binfile
4a80f0
+    global gdb_prompt
4a80f0
     with_test_prefix "shlib ${print_symbol_loading}" {
4a80f0
 	clean_restart ${binfile}
4a80f0
 	gdb_test_no_output "set auto-solib-add off"
4a80f0
@@ -106,12 +107,20 @@ proc test_load_shlib { print_symbol_loading } {
4a80f0
 	set test_name "load shared-lib"
4a80f0
 	switch ${print_symbol_loading} {
4a80f0
 	    "off" {
4a80f0
-		gdb_test_no_output "sharedlibrary .*" \
4a80f0
-		    ${test_name}
4a80f0
+		set cmd "sharedlibrary .*"
4a80f0
+		set cmd_regex [string_to_regexp $cmd]
4a80f0
+		gdb_test_multiple $cmd $test_name {
4a80f0
+		    -re "^$cmd_regex\r\n$gdb_prompt $" {
4a80f0
+			pass $test_name
4a80f0
+		    }
4a80f0
+		    -re "^$cmd_regex\r\nSymbols already loaded for\[^\r\n\]*\\/libc\\.\[^\r\n\]*\r\n$gdb_prompt $" {
4a80f0
+			pass $test_name
4a80f0
+		    }
4a80f0
+		}
4a80f0
 	    }
4a80f0
 	    "brief" {
4a80f0
 		gdb_test "sharedlibrary .*" \
4a80f0
-		    "Loading symbols for shared libraries: \\.\\*" \
4a80f0
+		    "Loading symbols for shared libraries: \\.\\*.*?(?:Symbols already loaded for .*?libc)?" \
4a80f0
 		    ${test_name}
4a80f0
 	    }
4a80f0
 	    "full" {