diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2011-07-15 14:11:22 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2011-07-15 14:11:22 +0000 |
commit | 756d88a7fe366e16ca9239bf12550d6a643cfa19 (patch) | |
tree | 37af238eb29e07d49e4cbeb1c29e5053bfee6562 | |
parent | 31f83dc55a3f0040a82d078d780bcd3efb06c5b7 (diff) | |
download | gdb-756d88a7fe366e16ca9239bf12550d6a643cfa19.zip gdb-756d88a7fe366e16ca9239bf12550d6a643cfa19.tar.gz 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/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/tls-shared.exp | 46 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 35 |
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} { |