From 756d88a7fe366e16ca9239bf12550d6a643cfa19 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 15 Jul 2011 14:11:22 +0000 Subject: [PATCH] * lib/gdb.exp (gdb_compile_shlib_pthreads): New helper. * gdb.threads/tls-shared.exp: Use it. Call gdb_load_shlibs. --- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.threads/tls-shared.exp | 46 +++--------------------- gdb/testsuite/lib/gdb.exp | 35 ++++++++++++++++++ 3 files changed, 45 insertions(+), 41 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3befd3b93c7..18ddc59e3de 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-07-15 Ulrich Weigand + + * 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 * lib/gdb.exp (gdb_compile): Specify rpath if the *target* is diff --git a/gdb/testsuite/gdb.threads/tls-shared.exp b/gdb/testsuite/gdb.threads/tls-shared.exp index 5a46c8fa651..b82eebdafb9 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 7ddcb13d4e5..ef5ad5cef5f 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} { -- 2.30.2