Make gdb_load_shlibs return the destination path of the library
authorSimon Marchi <simon.marchi@ericsson.com>
Wed, 27 Apr 2016 22:07:44 +0000 (18:07 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Wed, 27 Apr 2016 22:09:14 +0000 (18:09 -0400)
This patch makes gdb_load_shlibs return the destination path of the
copied library.  To make the procedure implementation and interface more
straightforward, it also changes it so that it accepts a single shared
library path at the time.  Therefore, calls that are passed multiple
libraries:

  gdb_load_shlibs $lib1 $lib2

must be changed to separate calls:

  gdb_load_shlibs $lib1
  gdb_load_shlibs $lib2

A subtle impact is the solib-search-path handling.  In the former
version, solib-search-path is set using the directory of the first
passed lib (further calls overwrite the value).  In the later version,
the directory of the library passed to the last call to gdb_load_shlibs
remnains.  I don't think that's a problem in practice, since if we had
tests that needed multiple different paths in solib-search-path, they
wouldn't work in the first place.

Changed in v2:

* Split behavioural and rename changes in two separate patches.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (gdb_load_shlibs):  Accept a single argument.  Return
result of gdb_remote_download.
* gdb.base/ctxobj.exp: Split gdb_load_shlibs call.
* gdb.base/dso2dso.exp: Likewise.
* gdb.base/global-var-nested-by-dso.exp: Likewise.
* gdb.base/print-file-var.exp: Likewise.
* gdb.base/shlib-call.exp: Likewise.
* gdb.base/shreloc.exp: Likewise.
* gdb.base/solib-overlap.exp: Likewise.
* gdb.base/solib-weak.exp (do_test): Likewise.
* gdb.base/unload.exp: Likewise.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/ctxobj.exp
gdb/testsuite/gdb.base/dso2dso.exp
gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
gdb/testsuite/gdb.base/print-file-var.exp
gdb/testsuite/gdb.base/shlib-call.exp
gdb/testsuite/gdb.base/shreloc.exp
gdb/testsuite/gdb.base/solib-overlap.exp
gdb/testsuite/gdb.base/solib-weak.exp
gdb/testsuite/gdb.base/unload.exp
gdb/testsuite/lib/gdb.exp

index 4d3e6df424df7da9146b99f8158fc5d03c154c98..9deae9f6f7262d444c05f2edcfd9a63c764f74e7 100644 (file)
@@ -1,3 +1,17 @@
+2016-04-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * lib/gdb.exp (gdb_load_shlibs):  Accept a single argument.  Return
+       result of gdb_remote_download.
+       * gdb.base/ctxobj.exp: Split gdb_load_shlibs call.
+       * gdb.base/dso2dso.exp: Likewise.
+       * gdb.base/global-var-nested-by-dso.exp: Likewise.
+       * gdb.base/print-file-var.exp: Likewise.
+       * gdb.base/shlib-call.exp: Likewise.
+       * gdb.base/shreloc.exp: Likewise.
+       * gdb.base/solib-overlap.exp: Likewise.
+       * gdb.base/solib-weak.exp (do_test): Likewise.
+       * gdb.base/unload.exp: Likewise.
+
 2016-04-27  Yao Qi  <yao.qi@linaro.org>
 
        * gdb.base/branch-to-self.exp: Skip it if gdb,nosignals
index a4f5f376b73a0a2166379d63ea1a1055115031a8..4df2a1b66d37a2b895fb46334f2af301c113b47a 100644 (file)
@@ -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"
index 919eda462e28dd204a9fb2a10c023cbb94825fb9..7f3a2b9645d1901cffa02fb2832f658f053aa238 100644 (file)
@@ -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
index cf70bb129d7fb4239e7b8ec01084b92205b937f3..13a27232331141c65fab2c50b6f2fdf813c2b332 100644 (file)
@@ -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
index 112585ab6ba713e2a41c64bfbf92e9c30ac4621a..2f8db9202f5e423af144699791501e207704fb19 100644 (file)
@@ -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"
index 81d2e03757de096dba1fb90b16edadff3f5eb095..9dac96f235f4728908cb1647c207cac2abce6adb 100644 (file)
@@ -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"
index 3b1ec2477a445e10e348be67f8641b514d6bc903..124fca8b048c9609468ef9633aefb0eb05692457 100644 (file)
@@ -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 {
index e7e084c1a2038f15a5d9ed0994ad30bdf99b06b2..258fce3a3dfbe018bc44ebcdf9acd80c2f1ef754 100644 (file)
@@ -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?)
index 74bc1f37f41d67f7b21dc1eb8de0918c805f31d4..b99b473eecf91ebc8541d211ee2af82d337e0d88 100644 (file)
@@ -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
 
index 6d4133d43b6e430ed3b76af6912f0cb0bec5994b..8abaf3e8cf420288c682890a39aa2a4258c598cc 100644 (file)
@@ -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
index 8b0241d2ad3cb7f11ee10ae87b00dc6e97db2785..441107ba457fcf645d236d70f2239061adcbcc0b 100644 (file)
@@ -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
 }
 
 #
This page took 0.037639 seconds and 4 git commands to generate.