aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2011-07-15 14:11:22 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2011-07-15 14:11:22 +0000
commit756d88a7fe366e16ca9239bf12550d6a643cfa19 (patch)
tree37af238eb29e07d49e4cbeb1c29e5053bfee6562
parent31f83dc55a3f0040a82d078d780bcd3efb06c5b7 (diff)
downloadfsf-binutils-gdb-756d88a7fe366e16ca9239bf12550d6a643cfa19.zip
fsf-binutils-gdb-756d88a7fe366e16ca9239bf12550d6a643cfa19.tar.gz
fsf-binutils-gdb-756d88a7fe366e16ca9239bf12550d6a643cfa19.tar.bz2
* lib/gdb.exp (gdb_compile_shlib_pthreads): New helper.
* gdb.threads/tls-shared.exp: Use it. Call gdb_load_shlibs.
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.threads/tls-shared.exp46
-rw-r--r--gdb/testsuite/lib/gdb.exp35
3 files changed, 45 insertions, 41 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3befd3b..18ddc59 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2011-07-15 Ulrich Weigand <ulrich.weigand@linaro.org>
+ * lib/gdb.exp (gdb_compile_shlib_pthreads): New helper.
+ * gdb.threads/tls-shared.exp: Use it. Call gdb_load_shlibs.
+
+2011-07-15 Ulrich Weigand <ulrich.weigand@linaro.org>
+
* lib/gdb.exp (gdb_compile): Specify rpath if the *target* is
a remote machine, not the host.
(gdb_compile_shlib): Set soname if target is remote.
diff --git a/gdb/testsuite/gdb.threads/tls-shared.exp b/gdb/testsuite/gdb.threads/tls-shared.exp
index 5a46c8f..b82eebd 100644
--- a/gdb/testsuite/gdb.threads/tls-shared.exp
+++ b/gdb/testsuite/gdb.threads/tls-shared.exp
@@ -24,6 +24,8 @@ set testfile tls-main
set libfile tls-shared
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
+set srcfile_lib ${libfile}.c
+set binfile_lib ${objdir}/${subdir}/${libfile}.so
remote_exec build "rm -f ${binfile}"
@@ -32,48 +34,9 @@ if [get_compiler_info ${binfile}] {
return -1
}
-if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}.o" object {debug}] != "" } {
- return -1
-}
-
-# Build the shared libraries this test case needs.
-#
-
-if {$gcc_compiled == 0} {
- if [istarget "hppa*-hp-hpux*"] then {
- set additional_flags "additional_flags=+z"
- } elseif { [istarget "mips-sgi-irix*"] } {
- # Disable SGI compiler's implicit -Dsgi
- set additional_flags "additional_flags=-Usgi"
- } else {
- # don't know what the compiler is...
- set additional_flags ""
- }
-} else {
- if { ([istarget "powerpc*-*-aix*"]
- || [istarget "rs6000*-*-aix*"]) } {
- set additional_flags ""
- } else {
- set additional_flags "additional_flags=-fpic"
- }
-}
-
-set additional_flags "$additional_flags -shared"
-if {[gdb_compile_pthreads "${srcdir}/${subdir}/${libfile}.c" "${objdir}/${subdir}/${libfile}.so" executable [list debug $additional_flags "incdir=${objdir}"]] != ""} {
- return -1
-}
-
-if { ($gcc_compiled
-&& ([istarget "powerpc*-*-aix*"]
-|| [istarget "rs6000*-*-aix*"] )) } {
- set additional_flags "additional_flags=-L${objdir}/${subdir}"
-} elseif { [istarget "mips-sgi-irix*"] } {
- set additional_flags "additional_flags=-rpath ${objdir}/${subdir}"
-} else {
- set additional_flags ""
-}
-if {[gdb_compile_pthreads "${objdir}/${subdir}/${testfile}.o ${objdir}/${subdir}/${libfile}.so" "${binfile}" executable [list debug $additional_flags]] != ""} {
+if { [gdb_compile_shlib_pthreads ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} {debug}] != ""
+ || [gdb_compile_pthreads ${srcdir}/${subdir}/${srcfile} ${binfile} executable [list debug shlib=${binfile_lib}]] != ""} {
return -1
}
@@ -82,6 +45,7 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
+gdb_load_shlibs ${binfile_lib}
if ![runto_main] then {
fail "Can't run to main"
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 7ddcb13..ef5ad5c 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2401,6 +2401,41 @@ proc gdb_compile_shlib {sources dest options} {
}
}
+# This is just like gdb_compile_shlib, above, except that it tries compiling
+# against several different thread libraries, to see which one this
+# system has.
+proc gdb_compile_shlib_pthreads {sources dest options} {
+ set built_binfile 0
+ set why_msg "unrecognized error"
+ foreach lib {-lpthreads -lpthread -lthread ""} {
+ # This kind of wipes out whatever libs the caller may have
+ # set. Or maybe theirs will override ours. How infelicitous.
+ set options_with_lib [concat $options [list libs=$lib quiet]]
+ set ccout [gdb_compile_shlib $sources $dest $options_with_lib]
+ switch -regexp -- $ccout {
+ ".*no posix threads support.*" {
+ set why_msg "missing threads include file"
+ break
+ }
+ ".*cannot open -lpthread.*" {
+ set why_msg "missing runtime threads library"
+ }
+ ".*Can't find library for -lpthread.*" {
+ set why_msg "missing runtime threads library"
+ }
+ {^$} {
+ pass "successfully compiled posix threads test case"
+ set built_binfile 1
+ break
+ }
+ }
+ }
+ if {!$built_binfile} {
+ unsupported "Couldn't compile $sources: ${why_msg}"
+ return -1
+ }
+}
+
# This is just like gdb_compile_pthreads, above, except that we always add the
# objc library for compiling Objective-C programs
proc gdb_compile_objc {source dest type options} {