* lib/gdb.exp (gdb_compile_shlib_pthreads): New helper.
* gdb.threads/tls-shared.exp: Use it. Call gdb_load_shlibs.
This commit is contained in:
parent
31f83dc55a
commit
756d88a7fe
3 changed files with 45 additions and 41 deletions
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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} {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue