* 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.
This commit is contained in:
parent
05aecedb60
commit
31f83dc55a
2 changed files with 18 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2011-07-14 Paul Pluzhnikov <ppluzhnikov@google.com>
|
2011-07-14 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||||
|
|
||||||
* gdb.cp/minsym-fallback.exp: Link in C++ mode.
|
* gdb.cp/minsym-fallback.exp: Link in C++ mode.
|
||||||
|
|
|
@ -2168,7 +2168,7 @@ proc gdb_compile {source dest type options} {
|
||||||
# dynamically load one by basename, we must specify rpath. If we
|
# dynamically load one by basename, we must specify rpath. If we
|
||||||
# are using a remote host, DejaGNU will link to the shared library
|
# are using a remote host, DejaGNU will link to the shared library
|
||||||
# using a relative path, so again we must specify an rpath.
|
# using a relative path, so again we must specify an rpath.
|
||||||
if { $shlib_load || ($shlib_found && [is_remote host]) } {
|
if { $shlib_load || ($shlib_found && [is_remote target]) } {
|
||||||
if { ([istarget "*-*-mingw*"]
|
if { ([istarget "*-*-mingw*"]
|
||||||
|| [istarget *-*-cygwin*]
|
|| [istarget *-*-cygwin*]
|
||||||
|| [istarget *-*-pe*]
|
|| [istarget *-*-pe*]
|
||||||
|
@ -2383,7 +2383,17 @@ proc gdb_compile_shlib {sources dest options} {
|
||||||
|| [istarget *-*-cygwin*]
|
|| [istarget *-*-cygwin*]
|
||||||
|| [istarget *-*-pe*])} {
|
|| [istarget *-*-pe*])} {
|
||||||
lappend link_options "additional_flags=-Wl,--out-implib,${dest}.a"
|
lappend link_options "additional_flags=-Wl,--out-implib,${dest}.a"
|
||||||
}
|
} elseif [is_remote target] {
|
||||||
|
# By default, we do not set the soname. This causes the linker
|
||||||
|
# on ELF systems to create a DT_NEEDED entry in the executable
|
||||||
|
# refering to the full path name of the library. This is a
|
||||||
|
# problem in remote testing if the library is in a different
|
||||||
|
# directory there. To fix this, we set a soname of just the
|
||||||
|
# base filename for the library, and add an appropriate -rpath
|
||||||
|
# to the main executable (in gdb_compile).
|
||||||
|
set destbase [file tail $dest]
|
||||||
|
lappend link_options "additional_flags=-Wl,-soname,$destbase"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if {[gdb_compile "${objects}" "${dest}" executable $link_options] != ""} {
|
if {[gdb_compile "${objects}" "${dest}" executable $link_options] != ""} {
|
||||||
return -1
|
return -1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue