From 31f83dc55a3f0040a82d078d780bcd3efb06c5b7 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 15 Jul 2011 14:10:26 +0000 Subject: [PATCH] * 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. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/lib/gdb.exp | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 569f0954a02..3befd3b93c7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-07-15 Ulrich Weigand + + * 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 * gdb.cp/minsym-fallback.exp: Link in C++ mode. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index d69527d9d64..7ddcb13d4e5 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2168,7 +2168,7 @@ proc gdb_compile {source dest type options} { # dynamically load one by basename, we must specify rpath. If we # are using a remote host, DejaGNU will link to the shared library # 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*"] || [istarget *-*-cygwin*] || [istarget *-*-pe*] @@ -2383,7 +2383,17 @@ proc gdb_compile_shlib {sources dest options} { || [istarget *-*-cygwin*] || [istarget *-*-pe*])} { 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] != ""} { return -1 -- 2.30.2