* 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>
|
2011-07-15 Ulrich Weigand <ulrich.weigand@linaro.org>
|
||||||
|
|
||||||
* lib/gdb.exp (gdb_compile): Specify rpath if the *target* is
|
* lib/gdb.exp (gdb_compile): Specify rpath if the *target* is
|
||||||
|
|
|
@ -24,6 +24,8 @@ set testfile tls-main
|
||||||
set libfile tls-shared
|
set libfile tls-shared
|
||||||
set srcfile ${testfile}.c
|
set srcfile ${testfile}.c
|
||||||
set binfile ${objdir}/${subdir}/${testfile}
|
set binfile ${objdir}/${subdir}/${testfile}
|
||||||
|
set srcfile_lib ${libfile}.c
|
||||||
|
set binfile_lib ${objdir}/${subdir}/${libfile}.so
|
||||||
|
|
||||||
remote_exec build "rm -f ${binfile}"
|
remote_exec build "rm -f ${binfile}"
|
||||||
|
|
||||||
|
@ -32,48 +34,9 @@ if [get_compiler_info ${binfile}] {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}.o" object {debug}] != "" } {
|
|
||||||
return -1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build the shared libraries this test case needs.
|
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}]] != ""} {
|
||||||
|
|
||||||
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]] != ""} {
|
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,6 +45,7 @@ gdb_exit
|
||||||
gdb_start
|
gdb_start
|
||||||
gdb_reinitialize_dir $srcdir/$subdir
|
gdb_reinitialize_dir $srcdir/$subdir
|
||||||
gdb_load ${binfile}
|
gdb_load ${binfile}
|
||||||
|
gdb_load_shlibs ${binfile_lib}
|
||||||
|
|
||||||
if ![runto_main] then {
|
if ![runto_main] then {
|
||||||
fail "Can't run to main"
|
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
|
# This is just like gdb_compile_pthreads, above, except that we always add the
|
||||||
# objc library for compiling Objective-C programs
|
# objc library for compiling Objective-C programs
|
||||||
proc gdb_compile_objc {source dest type options} {
|
proc gdb_compile_objc {source dest type options} {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue