aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/lib/gdb.exp36
2 files changed, 30 insertions, 12 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d50ccc2..059deaa 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-11-12 Daniel Jacobowitz <dan@codesourcery.com>
+ Nathan Froyd <froydnj@codesourcery.com>
+
+ * lib/gdb.exp (gdb_compile): Also set rpath for shlib=, on a
+ remote host.
+
2009-11-12 Nathan Froyd <froydnj@codesourcery.com>
* gdb.base/step-line.exp: Copy step-line.inp to the remote host.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index d42f84e..c9ce905 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1734,6 +1734,7 @@ proc gdb_compile {source dest type options} {
# "shlib=librarypath" in OPTIONS.
set new_options ""
set shlib_found 0
+ set shlib_load 0
foreach opt $options {
if [regexp {^shlib=(.*)} $opt dummy_var shlib_name] {
if [test_compiler_info "xlc-*"] {
@@ -1755,22 +1756,33 @@ proc gdb_compile {source dest type options} {
}
}
} elseif { $opt == "shlib_load" } {
- if { ([istarget "*-*-mingw*"]
- || [istarget *-*-cygwin*]
- || [istarget *-*-pe*]
- || [istarget arm*-*-symbianelf*]
- || [istarget hppa*-*-hpux*])} {
- # Do not need anything.
- } elseif { [istarget *-*-openbsd*] } {
- lappend new_options "additional_flags=-Wl,-rpath,${outdir}"
- } else {
- lappend new_options "libs=-ldl"
- lappend new_options "additional_flags=-Wl,-rpath,\\\$ORIGIN"
- }
+ set shlib_load 1
} else {
lappend new_options $opt
}
}
+
+ # We typically link to shared libraries using an absolute path, and
+ # that's how they are found at runtime. If we are going to
+ # 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 { ([istarget "*-*-mingw*"]
+ || [istarget *-*-cygwin*]
+ || [istarget *-*-pe*]
+ || [istarget arm*-*-symbianelf*]
+ || [istarget hppa*-*-hpux*])} {
+ # Do not need anything.
+ } elseif { [istarget *-*-openbsd*] } {
+ lappend new_options "additional_flags=-Wl,-rpath,${outdir}"
+ } else {
+ if { $shlib_load } {
+ lappend new_options "libs=-ldl"
+ }
+ lappend new_options "additional_flags=-Wl,-rpath,\\\$ORIGIN"
+ }
+ }
set options $new_options
if [target_info exists gdb_stub] {