diff --git a/gdb/testsuite/gdb.base/ctxobj.exp b/gdb/testsuite/gdb.base/ctxobj.exp
index a4f5f37..4df2a1b 100644
--- a/gdb/testsuite/gdb.base/ctxobj.exp
+++ b/gdb/testsuite/gdb.base/ctxobj.exp
@@ -55,7 +55,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${executable}.c" \
 }
 
 clean_restart $executable
-gdb_load_shlibs $libobj1 $libobj2
+gdb_load_shlibs $libobj1
+gdb_load_shlibs $libobj2
 
 if ![runto_main] {
     untested "could not run to main"
diff --git a/gdb/testsuite/gdb.base/dso2dso.exp b/gdb/testsuite/gdb.base/dso2dso.exp
index 919eda4..7f3a2b9 100644
--- a/gdb/testsuite/gdb.base/dso2dso.exp
+++ b/gdb/testsuite/gdb.base/dso2dso.exp
@@ -57,7 +57,8 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable \
 }
 
 clean_restart $binfile
-gdb_load_shlibs $binfile_libdso2 $binfile_libdso1
+gdb_load_shlibs $binfile_libdso2
+gdb_load_shlibs $binfile_libdso1
 
 if { ![runto_main] } {
   return -1
diff --git a/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp b/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
index cf70bb1..13a2723 100644
--- a/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
+++ b/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
@@ -45,7 +45,8 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable \
 }
 
 clean_restart $binfile
-gdb_load_shlibs $binfile_lib1 $binfile_lib2
+gdb_load_shlibs $binfile_lib1
+gdb_load_shlibs $binfile_lib2
 
 if { ![runto_main] } {
   return -1
diff --git a/gdb/testsuite/gdb.base/print-file-var.exp b/gdb/testsuite/gdb.base/print-file-var.exp
index 112585a..2f8db92 100644
--- a/gdb/testsuite/gdb.base/print-file-var.exp
+++ b/gdb/testsuite/gdb.base/print-file-var.exp
@@ -46,7 +46,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${executable}.c" \
 }
 
 clean_restart $executable
-gdb_load_shlibs $libobj1 $libobj2
+gdb_load_shlibs $libobj1
+gdb_load_shlibs $libobj2
 
 if ![runto_main] {
     untested "could not run to main"
diff --git a/gdb/testsuite/gdb.base/shlib-call.exp b/gdb/testsuite/gdb.base/shlib-call.exp
index 81d2e03..9dac96f 100644
--- a/gdb/testsuite/gdb.base/shlib-call.exp
+++ b/gdb/testsuite/gdb.base/shlib-call.exp
@@ -57,7 +57,8 @@ if { [gdb_compile_shlib ${lib1src} ${lib1} $lib_opts] != ""
 # Start with a fresh gdb.
 
 clean_restart ${binfile}
-gdb_load_shlibs $lib1 $lib2
+gdb_load_shlibs $lib1
+gdb_load_shlibs $lib2
 
 gdb_test_no_output "set print sevenbit-strings"
 gdb_test_no_output "set print address off"
diff --git a/gdb/testsuite/gdb.base/shreloc.exp b/gdb/testsuite/gdb.base/shreloc.exp
index 3b1ec24..124fca8 100644
--- a/gdb/testsuite/gdb.base/shreloc.exp
+++ b/gdb/testsuite/gdb.base/shreloc.exp
@@ -72,7 +72,8 @@ if { [gdb_compile_shlib $lib1src $lib1_sl $lib_opts] != ""} {
 # Start with a fresh gdb.
 
 clean_restart $binfile
-gdb_load_shlibs $lib1_sl $lib2_sl
+gdb_load_shlibs $lib1_sl
+gdb_load_shlibs $lib2_sl
 
 # Load up the shared objects
 if ![runto_main] then {
diff --git a/gdb/testsuite/gdb.base/solib-overlap.exp b/gdb/testsuite/gdb.base/solib-overlap.exp
index e7e084c..258fce3 100644
--- a/gdb/testsuite/gdb.base/solib-overlap.exp
+++ b/gdb/testsuite/gdb.base/solib-overlap.exp
@@ -99,7 +99,8 @@ foreach prelink_lib1 {0x40000000 0x50000000} { with_test_prefix "$prelink_lib1"
 
     clean_restart ${binfile_base}
     # This testcase currently does not support remote targets.
-    # gdb_load_shlibs ${binfile_lib1} ${binfile_lib2}
+    # gdb_load_shlibs ${binfile_lib1}
+    # gdb_load_shlibs ${binfile_lib2}
 
     # Here we should get:
     # warning: .dynamic section for ".../solib-overlap-lib1.so" is not at the expected address (wrong library or version mismatch?)
diff --git a/gdb/testsuite/gdb.base/solib-weak.exp b/gdb/testsuite/gdb.base/solib-weak.exp
index 74bc1f3..b99b473 100644
--- a/gdb/testsuite/gdb.base/solib-weak.exp
+++ b/gdb/testsuite/gdb.base/solib-weak.exp
@@ -94,7 +94,8 @@ proc do_test { lib1opts lib2opts lib1first } {
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
     gdb_load ${binfile}
-    gdb_load_shlibs $lib1 $lib2
+    gdb_load_shlibs $lib1
+    gdb_load_shlibs $lib2
 
     runto_main
 
diff --git a/gdb/testsuite/gdb.base/unload.exp b/gdb/testsuite/gdb.base/unload.exp
index 6d4133d..8abaf3e 100644
--- a/gdb/testsuite/gdb.base/unload.exp
+++ b/gdb/testsuite/gdb.base/unload.exp
@@ -62,7 +62,8 @@ gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_load ${binfile}
-gdb_load_shlibs $lib_sl $lib_sl2
+gdb_load_shlibs $lib_sl
+gdb_load_shlibs $lib_sl2
 
 #
 # Test setting a breakpoint in a dynamically loaded library which is
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 8b0241d..441107b 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4231,12 +4231,10 @@ proc gdb_remote_download {dest fromfile {tofile {}}} {
 
 # gdb_load_shlibs LIB...
 #
-# Copy the listed libraries to the target.
+# Copy the listed library to the target.
 
-proc gdb_load_shlibs { args } {
-    foreach file $args {
-	gdb_remote_download target [shlib_target_file $file]
-    }
+proc gdb_load_shlibs { file } {
+    set dest [gdb_remote_download target [shlib_target_file $file]]
 
     if {[is_remote target]} {
 	# If the target is remote, we need to tell gdb where to find the
@@ -4245,8 +4243,10 @@ proc gdb_load_shlibs { args } {
 	# We could set this even when not testing remotely, but a user
 	# generally won't set it unless necessary.  In order to make the tests
 	# more like the real-life scenarios, we don't set it for local testing.
-	gdb_test "set solib-search-path [file dirname [lindex $args 0]]" "" ""
+	gdb_test "set solib-search-path [file dirname $file]" "" ""
     }
+
+    return $dest
 }
 
 #
