[PATCH,testsuite] fix remote-host testing for tests using shared libraries
Nathan Froyd
froydnj@codesourcery.com
Thu Nov 12 15:44:00 GMT 2009
The patch below fixes various remote-host failures for tests that use
shared libraries. In normal testing, we link shared libraries using
absolute paths, so it's not a problem to find the libraries at runtime.
However, in remote-host testing, shared libraries are copied to the
remote host and linked against using relative paths. Therefore, we need
to specify -rpath to ensure that the library is found at runtime. The
patch just moves a bit of logic around and adds a remote_host check.
Tested with cross to powerpc-linux-gnu on mingw32 host. OK to commit?
-Nathan
* lib/gdb.exp (gdb_compile): Also set rpath for shlib=, on a
remote host.
Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.126
diff -u -u -r1.126 gdb.exp
--- lib/gdb.exp 10 Nov 2009 20:54:55 -0000 1.126
+++ lib/gdb.exp 12 Nov 2009 15:35:42 -0000
@@ -1734,6 +1734,7 @@
# "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 @@
}
}
} 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] {
More information about the Gdb-patches
mailing list