This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] testsuite: Fix "zeroed-threads" for -Wl,-z,relro [[commit] [patch 2/3] Fix threading internal error on corrupted memory [rediff]]


On Wed, 27 Apr 2011 14:36:07 +0200, Pedro Alves wrote:
> I just noticed I'm seeing this (kubuntu 10.10):
> 
> info threads
>   Id   Target Id         Frame 
>   3    LWP 32326         0x00002aaaab21920d in ?? ()
>   2    LWP 32379         0x00002aaaab21920d in ?? ()
> * 1    LWP 32516         thread2 (arg=0xdeadbeef) at ../../../src/gdb/testsuite/gdb.threads/pthreads.c:91
> (gdb) FAIL: gdb.threads/gcore-thread.exp: zeroed-threads cannot be listed

Thanks, I will check it if no comments appear.


Thanks,
Jan


gdb/testsuite/
2011-04-29  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.threads/gcore-thread.exp (objfile, opts): New variables.
	Try to compile the test using -Wl,-z,norelro first.
	(load_core): New variable libthread_db_seen, initialize it.
	(zeroed-threads cannot be listed): Protect it by XFAIL on
	!$libthread_db_seen.

--- a/gdb/testsuite/gdb.threads/gcore-thread.exp
+++ b/gdb/testsuite/gdb.threads/gcore-thread.exp
@@ -24,6 +24,7 @@ if $tracelevel then {
 # Single-threaded test case
 set testfile "gcore-thread"
 set srcfile  pthreads.c
+set objfile  ${objdir}/${subdir}/${testfile}.o
 set binfile  ${objdir}/${subdir}/${testfile}
 set corefile ${objdir}/${subdir}/${testfile}.test
 set core0file ${objdir}/${subdir}/${testfile}0.test
@@ -34,7 +35,15 @@ if [istarget "*-*-linux"] then {
     set target_cflags ""
 }
 
-if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}"]] != "" } {
+# Attempt to prevent -Wl,-z,relro which happens by default at least on
+# Kubuntu-10.10.  Due to PR corefiles/11804 will then GDB be unable to find
+# libpthread, therefore libthread_db will not fail as expected
+# on the test `zeroed-threads cannot be listed'.
+
+set opts [list debug "incdir=${objdir}"]
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${objfile}" object $opts] != ""
+    || ([gdb_compile_pthreads "${objfile}" "${binfile}" executable [concat $opts {additional_flags=-Wl,-z,norelro}] ] != ""
+        && [gdb_compile_pthreads "${objfile}" "${binfile}" executable $opts] != "") } {
     return -1
 }
 
@@ -139,9 +150,15 @@ clean_restart ${testfile}
 
 proc load_core { corefile } {
     global gdb_prompt
+    global libthread_db_seen
 
+    set libthread_db_seen 0
     gdb_test_multiple "core $corefile" \
 	"re-load generated corefile" {
+	    -re "\\\[Thread debugging using \[^ \r\n\]* enabled\\\]\r\n" {
+		set libthread_db_seen 1
+		exp_continue
+	    }
 	    -re " is not a core dump:.*\r\n$gdb_prompt $" {
 		fail "re-load generated corefile (bad file format)"
 		# No use proceeding from here.
@@ -189,6 +206,12 @@ gdb_test "info threads" ".*${nl}\\* ${horiz} thread2 .*" \
 # Test the uninitialized thread list.
 
 if {"$core0file" != "" && [load_core $core0file]} {
+    set test "zeroed-threads cannot be listed"
 
-    gdb_test "info threads" "Cannot find new threads: .*" "zeroed-threads cannot be listed"
+    if {!$libthread_db_seen} {
+	verbose -log "No libthread_db loaded - -Wl,-z,relro compilation?"
+	xfail $test
+    } else {
+	gdb_test "info threads" "Cannot find new threads: .*" $test
+    }
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]