aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2009-11-12 17:35:54 +0000
committerNathan Froyd <froydnj@codesourcery.com>2009-11-12 17:35:54 +0000
commitbdf7534a4d39d12d8cfe036007d698c97c922b27 (patch)
tree5297f05a48414b98a3856520af39caffb1658575 /gdb
parent75aa492e67bea463c47164d82633e8807ff37d21 (diff)
downloadgdb-bdf7534a4d39d12d8cfe036007d698c97c922b27.zip
gdb-bdf7534a4d39d12d8cfe036007d698c97c922b27.tar.gz
gdb-bdf7534a4d39d12d8cfe036007d698c97c922b27.tar.bz2
* lib/gdb.exp (gdb_compile): Also set rpath for shlib=, on a
remote host.
Diffstat (limited to 'gdb')
-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] {