[1/2] Change gdb_load_shlibs to gdb_load_shlib
Commit Message
Note: this series should be applied on top of
https://sourceware.org/ml/gdb-patches/2016-04/msg00252.html
-------
This patch renames gdb_load_shlibs to gdb_load_shlib, and changes its
arguments so that it can only take a single library at the time.
The following patch requires to be able to get the destination path of a
loaded shared library, so it's more straightforward if the procedure can
only accept one argument.
On top of the mass renaming, there are a handful of locations where I
had to split up a gdb_load_shlibs in two gdb_load_shlib.
gdb/testsuite/ChangeLog:
* lib/gdb.exp (gdb_load_shlibs): Rename to...
(gdb_load_shlib): ... this. Accept a single parameter. Return
result of gdb_remote_download.
* gdb.arch/ftrace-insn-reloc.exp: Adjust gdb_load_shlibs ->
gdb_load_shlib.
* gdb.base/catch-load.exp (one_catch_load_test): Likewise.
* gdb.base/ctxobj.exp: Likewise.
* gdb.base/dprintf-pending.exp: Likewise.
* gdb.base/dso2dso.exp: Likewise.
* gdb.base/fixsection.exp: Likewise.
* gdb.base/gcore-relro.exp: Likewise.
* gdb.base/gdb1555.exp: Likewise.
* gdb.base/global-var-nested-by-dso.exp: Likewise.
* gdb.base/gnu-ifunc.exp: Likewise.
* gdb.base/hbreak-in-shr-unsupported.exp: Likewise.
* gdb.base/jit-so.exp (one_jit_test): Likewise.
* gdb.base/pending.exp: Likewise.
* gdb.base/print-file-var.exp: Likewise.
* gdb.base/print-symbol-loading.exp: Likewise.
* gdb.base/shlib-call.exp: Likewise.
* gdb.base/shreloc.exp: Likewise.
* gdb.base/so-impl-ld.exp: Likewise.
* gdb.base/solib-disc.exp: Likewise.
* gdb.base/solib-nodir.exp: Likewise.
* gdb.base/solib-overlap.exp: Likewise.
* gdb.base/solib-symbol.exp: Likewise.
* gdb.base/solib-weak.exp (do_test): Likewise.
* gdb.base/sym-file.exp: Likewise.
* gdb.base/symtab-search-order.exp: Likewise.
* gdb.base/type-opaque.exp: Likewise.
* gdb.base/unload.exp: Likewise.
* gdb.base/watchpoint-solib.exp: Likewise.
* gdb.compile/compile.exp: Likewise.
* gdb.cp/gdb2384.exp: Likewise.
* gdb.cp/infcall-dlopen.exp: Likewise.
* gdb.cp/re-set-overloaded.exp: Likewise.
* gdb.fortran/library-module.exp: Likewise.
* gdb.opt/solib-intra-step.exp: Likewise.
* gdb.python/py-finish-breakpoint.exp: Likewise.
* gdb.python/py-shared.exp: Likewise.
* gdb.reverse/solib-precsave.exp: Likewise.
* gdb.reverse/solib-reverse.exp: Likewise.
* gdb.server/solib-list.exp: Likewise.
* gdb.threads/dlopen-libpthread.exp: Likewise.
* gdb.threads/tls-shared.exp: Likewise.
* gdb.threads/tls-so_extern.exp: Likewise.
* gdb.trace/change-loc.exp: Likewise.
* gdb.trace/ftrace-lock.exp: Likewise.
* gdb.trace/ftrace.exp: Likewise.
* gdb.trace/mi-tracepoint-changed.exp (test_reconnect): Likewise.
* gdb.trace/pending.exp: Likewise.
* gdb.trace/range-stepping.exp: Likewise.
* gdb.trace/strace.exp (strace_remove_socket): Likewise.
(strace_info_marker): Likewise.
(strace_probe_marker): Likewise.
(strace_trace_on_same_addr): Likewise.
(strace_trace_on_diff_addr): Likewise.
* gdb.trace/trace-break.exp: Likewise.
* gdb.trace/trace-condition.exp: Likewise.
* gdb.trace/trace-mt.exp: Likewise.
---
gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp | 2 +-
gdb/testsuite/gdb.base/catch-load.exp | 2 +-
gdb/testsuite/gdb.base/ctxobj.exp | 3 ++-
gdb/testsuite/gdb.base/dprintf-pending.exp | 4 ++--
gdb/testsuite/gdb.base/dso2dso.exp | 3 ++-
gdb/testsuite/gdb.base/fixsection.exp | 2 +-
gdb/testsuite/gdb.base/gcore-relro.exp | 4 ++--
gdb/testsuite/gdb.base/gdb1555.exp | 2 +-
gdb/testsuite/gdb.base/global-var-nested-by-dso.exp | 3 ++-
gdb/testsuite/gdb.base/gnu-ifunc.exp | 2 +-
gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp | 2 +-
gdb/testsuite/gdb.base/jit-so.exp | 2 +-
gdb/testsuite/gdb.base/pending.exp | 4 ++--
gdb/testsuite/gdb.base/print-file-var.exp | 3 ++-
gdb/testsuite/gdb.base/print-symbol-loading.exp | 2 +-
gdb/testsuite/gdb.base/shlib-call.exp | 3 ++-
gdb/testsuite/gdb.base/shreloc.exp | 3 ++-
gdb/testsuite/gdb.base/so-impl-ld.exp | 2 +-
gdb/testsuite/gdb.base/solib-disc.exp | 2 +-
gdb/testsuite/gdb.base/solib-nodir.exp | 2 +-
gdb/testsuite/gdb.base/solib-overlap.exp | 3 ++-
gdb/testsuite/gdb.base/solib-symbol.exp | 2 +-
gdb/testsuite/gdb.base/solib-weak.exp | 3 ++-
gdb/testsuite/gdb.base/sym-file.exp | 2 +-
gdb/testsuite/gdb.base/symtab-search-order.exp | 2 +-
gdb/testsuite/gdb.base/type-opaque.exp | 2 +-
gdb/testsuite/gdb.base/unload.exp | 3 ++-
gdb/testsuite/gdb.base/watchpoint-solib.exp | 2 +-
gdb/testsuite/gdb.compile/compile.exp | 2 +-
gdb/testsuite/gdb.cp/gdb2384.exp | 2 +-
gdb/testsuite/gdb.cp/infcall-dlopen.exp | 2 +-
gdb/testsuite/gdb.cp/re-set-overloaded.exp | 2 +-
gdb/testsuite/gdb.fortran/library-module.exp | 2 +-
gdb/testsuite/gdb.opt/solib-intra-step.exp | 2 +-
gdb/testsuite/gdb.python/py-finish-breakpoint.exp | 12 ++++++------
gdb/testsuite/gdb.python/py-shared.exp | 2 +-
gdb/testsuite/gdb.reverse/solib-precsave.exp | 4 ++--
gdb/testsuite/gdb.reverse/solib-reverse.exp | 4 ++--
gdb/testsuite/gdb.server/solib-list.exp | 2 +-
gdb/testsuite/gdb.threads/dlopen-libpthread.exp | 2 +-
gdb/testsuite/gdb.threads/tls-shared.exp | 2 +-
gdb/testsuite/gdb.threads/tls-so_extern.exp | 2 +-
gdb/testsuite/gdb.trace/change-loc.exp | 6 +++---
gdb/testsuite/gdb.trace/ftrace-lock.exp | 2 +-
gdb/testsuite/gdb.trace/ftrace.exp | 2 +-
gdb/testsuite/gdb.trace/mi-tracepoint-changed.exp | 8 ++++----
gdb/testsuite/gdb.trace/pending.exp | 6 +++---
gdb/testsuite/gdb.trace/range-stepping.exp | 2 +-
gdb/testsuite/gdb.trace/strace.exp | 12 ++++++------
gdb/testsuite/gdb.trace/trace-break.exp | 2 +-
gdb/testsuite/gdb.trace/trace-condition.exp | 2 +-
gdb/testsuite/gdb.trace/trace-mt.exp | 2 +-
gdb/testsuite/lib/gdb.exp | 12 ++++++------
53 files changed, 89 insertions(+), 80 deletions(-)
Comments
On 04/13/2016 12:14 AM, Simon Marchi wrote:
> Note: this series should be applied on top of
> https://sourceware.org/ml/gdb-patches/2016-04/msg00252.html
>
> -------
>
> This patch renames gdb_load_shlibs to gdb_load_shlib, and changes its
> arguments so that it can only take a single library at the time.
>
> The following patch requires to be able to get the destination path of a
> loaded shared library, so it's more straightforward if the procedure can
> only accept one argument.
>
> On top of the mass renaming, there are a handful of locations where I
> had to split up a gdb_load_shlibs in two gdb_load_shlib.
>
I'd have been nicer and more focused if you split this in two:
#1 - make gdb_load_shlibs accept only one shlib.
#2 - do the trivial mass rename.
> -proc gdb_load_shlibs { args } {
> - foreach file $args {
> - gdb_remote_download target [shlib_target_file $file]
> - }
> +proc gdb_load_shlib { 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
> @@ -4237,8 +4235,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 [lindex $file 0]]" "" ""
$file is no longer a list, so [lindex $file 0] can just be $file.
With:
gdb_load_shlib $libobj1
gdb_load_shlib $libobj2
We'll now only end up with $libobj2's dirname in the solib-search-path.
This usually won't be a problem since the dirnames will be the same,
though I guess some test might be doing something with subdirs.
Grepping a bit I found solib-search.exp, though it's currently disabled
on remote testing.
Do we need to maintain a list of dirnames, and clear it somewhere?
Thanks,
Pedro Alves
On 16-04-13 02:18 PM, Pedro Alves wrote:
> On 04/13/2016 12:14 AM, Simon Marchi wrote:
>> Note: this series should be applied on top of
>> https://sourceware.org/ml/gdb-patches/2016-04/msg00252.html
>>
>> -------
>>
>> This patch renames gdb_load_shlibs to gdb_load_shlib, and changes its
>> arguments so that it can only take a single library at the time.
>>
>> The following patch requires to be able to get the destination path of a
>> loaded shared library, so it's more straightforward if the procedure can
>> only accept one argument.
>>
>> On top of the mass renaming, there are a handful of locations where I
>> had to split up a gdb_load_shlibs in two gdb_load_shlib.
>>
>
> I'd have been nicer and more focused if you split this in two:
>
> #1 - make gdb_load_shlibs accept only one shlib.
> #2 - do the trivial mass rename.
Right, I'll have it split in v2.
>> -proc gdb_load_shlibs { args } {
>> - foreach file $args {
>> - gdb_remote_download target [shlib_target_file $file]
>> - }
>> +proc gdb_load_shlib { 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
>> @@ -4237,8 +4235,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 [lindex $file 0]]" "" ""
>
> $file is no longer a list, so [lindex $file 0] can just be $file.
Right, fixed.
> With:
>
> gdb_load_shlib $libobj1
> gdb_load_shlib $libobj2
>
> We'll now only end up with $libobj2's dirname in the solib-search-path.
> This usually won't be a problem since the dirnames will be the same,
> though I guess some test might be doing something with subdirs.
> Grepping a bit I found solib-search.exp, though it's currently disabled
> on remote testing.
Ah that's true. For some reason I thought it appended to the list in GDB.
In the original implementation, it only used the dirname of the first passed
shared library, didn't it? So the behavior will change (we will keep the
directory of the last one, where we used to keep the directory of the first
one), but is the situation worse than it was?
> Do we need to maintain a list of dirnames, and clear it somewhere?
If a test case needs to have multiple different values in solib-search-path,
we have multiple options.
Option #1
Maintain a list somewhere in the TCL code. It's not my favorite, because
we already have a ton of global stuff hard to keep track of.
Option #2
Get the current value using "show solib-search-path" and append the new value
to it.
Option #3
Initially I thought of a lazy way to achieve what I want. I thought to
make gdb_load_shlibs return a list of the destination paths (one for each
passed solib). This way I wouldn't have had to modify all the callers. If
we used this approach, we could build the list of all the directories and pass
that to set solib-search-path.
Options #4
Maybe it's not a big deal, tests that do some special solib path stuff can
just override solib-search-path as they see fit. The setting of
solib-search-path in gdb_load_shlib[s] is only for convenience in the
general case.
Simon
Simon Marchi <simon.marchi@ericsson.com> writes:
> -proc gdb_load_shlibs { args } {
> - foreach file $args {
> - gdb_remote_download target [shlib_target_file $file]
> - }
> +proc gdb_load_shlib { file } {
> + set dest [gdb_remote_download target [shlib_target_file $file]]
Why don't define a new proc gdb_load_shlib but leave gdb_load_shlibs
there? gdb_load_shlibs can invoke gdb_load_shlib in a loop, and callers
of gdb_load_shlibs are not changed.
On 04/13/2016 10:05 PM, Simon Marchi wrote:
> On 16-04-13 02:18 PM, Pedro Alves wrote:
>> We'll now only end up with $libobj2's dirname in the solib-search-path.
>> This usually won't be a problem since the dirnames will be the same,
>> though I guess some test might be doing something with subdirs.
>> Grepping a bit I found solib-search.exp, though it's currently disabled
>> on remote testing.
>
> Ah that's true. For some reason I thought it appended to the list in GDB.
>
> In the original implementation, it only used the dirname of the first passed
> shared library, didn't it?
You're right. I only realized that after hitting send.
> So the behavior will change (we will keep the
> directory of the last one, where we used to keep the directory of the first
> one), but is the situation worse than it was?
Probably not.
>
>> Do we need to maintain a list of dirnames, and clear it somewhere?
>
> If a test case needs to have multiple different values in solib-search-path,
> we have multiple options.
>
> Option #1
>
> Maintain a list somewhere in the TCL code. It's not my favorite, because
> we already have a ton of global stuff hard to keep track of.
Indeed.
>
> Option #2
>
> Get the current value using "show solib-search-path" and append the new value
> to it.
Interesting idea.
>
> Option #3
>
> Initially I thought of a lazy way to achieve what I want. I thought to
> make gdb_load_shlibs return a list of the destination paths (one for each
> passed solib). This way I wouldn't have had to modify all the callers. If
> we used this approach, we could build the list of all the directories and pass
> that to set solib-search-path.
>
Right. Several tests call gdb_load_shlibs once for each lib, and we'd
need to merge those, for correct solib-search-path.
> Options #4
>
> Maybe it's not a big deal, tests that do some special solib path stuff can
> just override solib-search-path as they see fit.
If testing something that needs to exercise something related to debugging a
set of libraries laid out in different directories like, e.g. having:
plugin.so
dir_1/plugin.so
dir_1/dir_2/plugin.so
dir_2/plugin.so
dir_2/dir_1/plugin.so
dir_2/dir_2/plugin.so
and exercising symbol the search code in solib.c:solib_find (e.g.,
mess with PATH/LD_LIBRARY_PATH), you still shouldn't need solib-search-path
when testing locally, and the testcase shouldn't need to explicitly
set solib-search-path.
It's just theoretical at this point though, given that as you found,
we already have the issue.
> The setting of
> solib-search-path in gdb_load_shlib[s] is only for convenience in the
> general case.
Since this turns out to be a pre-existing issue, I'm fine with ignoring
it for now.
Thanks,
Pedro Alves
On 16-04-14 05:33 AM, Yao Qi wrote:
> Simon Marchi <simon.marchi@ericsson.com> writes:
>
>> -proc gdb_load_shlibs { args } {
>> - foreach file $args {
>> - gdb_remote_download target [shlib_target_file $file]
>> - }
>> +proc gdb_load_shlib { file } {
>> + set dest [gdb_remote_download target [shlib_target_file $file]]
>
> Why don't define a new proc gdb_load_shlib but leave gdb_load_shlibs
> there? gdb_load_shlibs can invoke gdb_load_shlib in a loop, and callers
> of gdb_load_shlibs are not changed.
It would have been the lazy but clever way to do it, for sure. I hadn't
thought of that.
I am not sure I like it though, because it makes multiple procs that do kind
of the same thing, but with subtle differences. That's what causes confusion
later. It's the same feeling I had about gdb_download and gdb_remote_download...
Pedro (and others), what do you think?
On 04/14/2016 04:17 PM, Simon Marchi wrote:
> On 16-04-14 05:33 AM, Yao Qi wrote:
>> Simon Marchi <simon.marchi@ericsson.com> writes:
>>
>>> -proc gdb_load_shlibs { args } {
>>> - foreach file $args {
>>> - gdb_remote_download target [shlib_target_file $file]
>>> - }
>>> +proc gdb_load_shlib { file } {
>>> + set dest [gdb_remote_download target [shlib_target_file $file]]
>>
>> Why don't define a new proc gdb_load_shlib but leave gdb_load_shlibs
>> there? gdb_load_shlibs can invoke gdb_load_shlib in a loop, and callers
>> of gdb_load_shlibs are not changed.
>
> It would have been the lazy but clever way to do it, for sure. I hadn't
> thought of that.
>
> I am not sure I like it though, because it makes multiple procs that do kind
> of the same thing, but with subtle differences. That's what causes confusion
> later. It's the same feeling I had about gdb_download and gdb_remote_download...
>
> Pedro (and others), what do you think?
I agree that that may end up causing confusion.
Thanks,
Pedro Alves
@@ -38,7 +38,7 @@ if ![gdb_target_supports_trace] {
}
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
# Can't use prepare_for_testing, because that splits compiling into
# building objects and then linking, and we'd fail with "linker input
@@ -51,7 +51,7 @@ proc one_catch_load_test {scenario kind match sostop} {
global decimal gdb_prompt
clean_restart $testfile
- gdb_load_shlibs $binfile2
+ gdb_load_shlib $binfile2
if {![runto_main]} {
fail "can't run to main"
@@ -55,7 +55,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${executable}.c" \
}
clean_restart $executable
-gdb_load_shlibs $libobj1 $libobj2
+gdb_load_shlib $libobj1
+gdb_load_shlib $libobj2
if ![runto_main] {
untested "could not run to main"
@@ -63,7 +63,7 @@ with_test_prefix "without symbols" {
"single pending dprintf info"
gdb_load ${binfile}
- gdb_load_shlibs $lib_sl
+ gdb_load_shlib $lib_sl
gdb_run_cmd
@@ -71,7 +71,7 @@ with_test_prefix "without symbols" {
}
clean_restart ${binfile}
-gdb_load_shlibs $lib_sl
+gdb_load_shlib $lib_sl
#
# Test setting, querying, and modifying pending breakpoints
@@ -57,7 +57,8 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable \
}
clean_restart $binfile
-gdb_load_shlibs $binfile_libdso2 $binfile_libdso1
+gdb_load_shlib $binfile_libdso2
+gdb_load_shlib $binfile_libdso1
if { ![runto_main] } {
return -1
@@ -44,7 +44,7 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
if ![runto_main] then {
fail "Can't run to main"
@@ -36,7 +36,7 @@ set objfile [standard_output_file ${testfile}.o]
}
clean_restart ${binfile}
-gdb_load_shlibs ${binfile_lib}
+gdb_load_shlib ${binfile_lib}
if ![runto lib] {
return -1
@@ -49,7 +49,7 @@ if {![gdb_gcore_cmd $gcorefile "save a corefile"]} {
# Now restart gdb and load the corefile.
clean_restart ${binfile}
-gdb_load_shlibs ${binfile_lib}
+gdb_load_shlib ${binfile_lib}
gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile"
@@ -42,7 +42,7 @@ if { [gdb_compile_shlib $libsrc $libobj {debug}] != ""
}
clean_restart ${binfile}
-gdb_load_shlibs $libobj
+gdb_load_shlib $libobj
if ![runto_main] then {
fail "Can't run to main"
@@ -45,7 +45,8 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable \
}
clean_restart $binfile
-gdb_load_shlibs $binfile_lib1 $binfile_lib2
+gdb_load_shlib $binfile_lib1
+gdb_load_shlib $binfile_lib2
if { ![runto_main] } {
return -1
@@ -59,7 +59,7 @@ if { [gdb_compile_shlib ${srcdir}/${subdir}/$libsrc $lib_so $lib_opts] != ""
# Start with a fresh gdb.
clean_restart $executable
-gdb_load_shlibs ${lib_so}
+gdb_load_shlib ${lib_so}
if ![runto_main] then {
fail "Can't run to main"
@@ -41,7 +41,7 @@ if { [gdb_compile_shlib ${srcdir}/${subdir}/${lib_src} ${lib_so} $lib_opts] != "
}
clean_restart $binfile
-gdb_load_shlibs $lib_so
+gdb_load_shlib $lib_so
if ![runto_main] then {
fail "Can't run to main"
@@ -68,7 +68,7 @@ proc one_jit_test {count match_str} {
global verbose testfile srcfile2 binfile2 binfile2_dlopen solib_binfile_target solib_binfile_test_msg
clean_restart $testfile
- gdb_load_shlibs $binfile2
+ gdb_load_shlib $binfile2
# This is just to help debugging when things fail
if {$verbose > 0} {
@@ -62,7 +62,7 @@ gdb_test "info break" \
"single pending breakpoint info (without symbols)"
gdb_load ${binfile}
-gdb_load_shlibs $lib_sl
+gdb_load_shlib $lib_sl
set pendfunc1_loc [gdb_get_line_number "y = x + 4" ${libfile}.c]
@@ -79,7 +79,7 @@ gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $lib_sl
+gdb_load_shlib $lib_sl
#
# Test setting, querying, and modifying pending breakpoints
@@ -46,7 +46,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${executable}.c" \
}
clean_restart $executable
-gdb_load_shlibs $libobj1 $libobj2
+gdb_load_shlib $libobj1
+gdb_load_shlib $libobj2
if ![runto_main] {
untested "could not run to main"
@@ -38,7 +38,7 @@ if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } {
}
clean_restart ${binfile}
-gdb_load_shlibs ${binfile_lib}
+gdb_load_shlib ${binfile_lib}
if ![runto lib] {
return -1
@@ -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_shlib $lib1
+gdb_load_shlib $lib2
gdb_test_no_output "set print sevenbit-strings"
gdb_test_no_output "set print address off"
@@ -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_shlib $lib1_sl
+gdb_load_shlib $lib2_sl
# Load up the shared objects
if ![runto_main] then {
@@ -40,7 +40,7 @@ if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != ""
# Start with a fresh gdb
clean_restart ${binfile}
-gdb_load_shlibs $lib_sl
+gdb_load_shlib $lib_sl
# This program implicitly loads SOM shared libraries.
#
@@ -53,7 +53,7 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $libobj
+gdb_load_shlib $libobj
if ![runto_main] then {
fail "Can't run to main"
@@ -41,7 +41,7 @@ if { [get_compiler_info]
}
clean_restart $executable
-gdb_load_shlibs ${binlibfile}
+gdb_load_shlib ${binlibfile}
gdb_test_no_output "set env LD_LIBRARY_PATH=:"
gdb_test "cd ${binlibfiledir}" "Working directory [string_to_regexp ${binlibfiledir}]\\." "cd OBJDIR/${subdir}"
@@ -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_shlib ${binfile_lib1}
+ # gdb_load_shlib ${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?)
@@ -44,7 +44,7 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $binfile_lib
+gdb_load_shlib $binfile_lib
# Set a breakpoint in the binary.
gdb_test "br foo2" \
@@ -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_shlib $lib1
+ gdb_load_shlib $lib2
runto_main
@@ -73,7 +73,7 @@ if {[prepare_for_testing $testfile $binfile "$srcfile $srcfile2" $exec_opts]} {
return
}
-gdb_load_shlibs ${lib_so}
+gdb_load_shlib ${lib_so}
if ![runto_main] then {
fail "Can't run to main"
@@ -40,7 +40,7 @@ if { [gdb_compile_shlib $lib1src $lib1 $lib_opts] != ""
# Start with a fresh gdb.
clean_restart $binfile
-gdb_load_shlibs $lib1
+gdb_load_shlib $lib1
if ![runto_main] {
fail "Can't run to main"
@@ -40,7 +40,7 @@ if { [gdb_compile_shlib $libsrc $libobj {debug}] != ""
}
clean_restart ${binfile}
-gdb_load_shlibs ${libobj}
+gdb_load_shlib ${libobj}
if ![runto_main] then {
fail "Can't run to main"
@@ -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_shlib $lib_sl
+gdb_load_shlib $lib_sl2
#
# Test setting a breakpoint in a dynamically loaded library which is
@@ -52,7 +52,7 @@ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $lib_sl
+gdb_load_shlib $lib_sl
runto_main
@@ -371,7 +371,7 @@ if { [gdb_compile_shlib ${srcdir}/${subdir}/${srcfile2} $libbin {debug}] != ""
}
clean_restart $binfile
-gdb_load_shlibs $libbin
+gdb_load_shlib $libbin
if ![runto_main] {
return -1
@@ -41,7 +41,7 @@ if { [gdb_compile_shlib $srcdir/$subdir/$srcfile2 $sofile {debug c++}] != ""
}
clean_restart ${binfile}
-gdb_load_shlibs ${sofile}
+gdb_load_shlib ${sofile}
if ![runto_main] then {
@@ -31,7 +31,7 @@ if { [gdb_compile_shlib ${srcdir}/${subdir}/${srcfile2} ${libfile} {debug c++}]
return -1
}
-gdb_load_shlibs $libfile
+gdb_load_shlib $libfile
if { ![runto_main] } {
return -1
@@ -33,7 +33,7 @@ if { [gdb_compile_shlib $srcdir/$subdir/$srcfile2 $sofile {debug c++}] != ""
}
clean_restart $testfile
-gdb_load_shlibs ${sofile}
+gdb_load_shlib ${sofile}
gdb_test_no_output "set breakpoint pending yes"
gdb_test "break C::C" {Breakpoint [0-9]+ \(C::C\) pending\.} "break C::C"
@@ -39,7 +39,7 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable [list debug f90
clean_restart $testfile
-gdb_load_shlibs $libfile
+gdb_load_shlib $libfile
if ![runto MAIN__] then {
perror "couldn't run to breakpoint MAIN__"
@@ -41,7 +41,7 @@ if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $lib_flags] != ""
}
clean_restart ${binfile}
-gdb_load_shlibs $binfile_lib
+gdb_load_shlib $binfile_lib
if ![runto_main] then {
return 0
@@ -61,7 +61,7 @@ if { [skip_python_tests] } { continue }
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
if ![runto_main] then {
fail "Cannot run to main."
@@ -108,7 +108,7 @@ gdb_test "python MyFinishBreakpoint (None, gdb.selected_frame ())" \
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
@@ -135,7 +135,7 @@ gdb_test "python print (finishBP.return_value)" "None" "check return value witho
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
@@ -161,7 +161,7 @@ gdb_test "python print (finishbp.is_valid())" "False.*"\
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
@@ -187,7 +187,7 @@ gdb_test "print i" "8" "check stopped location"
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
@@ -214,7 +214,7 @@ gdb_test "print i" "8" "check stopped location"
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
@@ -41,7 +41,7 @@ if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable $exec_opt
# Start with a fresh gdb.
clean_restart $testfile
-gdb_load_shlibs ${library}
+gdb_load_shlib ${library}
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
@@ -76,8 +76,8 @@ gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $library1
-gdb_load_shlibs $library2
+gdb_load_shlib $library1
+gdb_load_shlib $library2
runto main
@@ -68,8 +68,8 @@ gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-gdb_load_shlibs $library1
-gdb_load_shlibs $library2
+gdb_load_shlib $library1
+gdb_load_shlib $library2
runto main
@@ -48,7 +48,7 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
- gdb_load_shlibs ${binlibfile}
+ gdb_load_shlib ${binlibfile}
set remote_binfile [gdb_remote_download target $binfile]
@@ -34,7 +34,7 @@ if {$relink_args == "" || ![prelink_no $relink_args]
|| [prepare_for_testing ${testfile}.exp ${executable} ${srcmainfile} {debug shlib_load}] } {
return -1
}
-gdb_load_shlibs $binfile_lib
+gdb_load_shlib $binfile_lib
if { ![runto_main] } {
return -1
@@ -36,7 +36,7 @@ if { [gdb_compile_shlib_pthreads ${srcdir}/${subdir}/${srcfile_lib} ${binfile_li
clean_restart ${binfile}
-gdb_load_shlibs ${binfile_lib}
+gdb_load_shlib ${binfile_lib}
if ![runto_main] then {
fail "Can't run to main"
@@ -35,7 +35,7 @@ if { [gdb_compile_shlib_pthreads ${srcdir}/${subdir}/${srcfile_lib} ${binfile_li
clean_restart ${binfile}
-gdb_load_shlibs ${binfile_lib}
+gdb_load_shlib ${binfile_lib}
if ![runto_main] then {
fail "Can't run to main"
@@ -45,8 +45,8 @@ if { [gdb_compile_shlib $libsrc1 $lib_sl1 $lib_opts] != ""
clean_restart $executable
-gdb_load_shlibs $lib_sl1
-gdb_load_shlibs $lib_sl2
+gdb_load_shlib $lib_sl1
+gdb_load_shlib $lib_sl2
if ![runto_main] {
fail "Can't run to main to check for trace support"
@@ -354,7 +354,7 @@ tracepoint_install_in_trace_disabled "trace"
# Re-compile test case with IPA.
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable \
[list debug nowarnings shlib=$libipa shlib=$lib_sl1 shlib_load] ] != "" } {
@@ -48,7 +48,7 @@ if ![gdb_target_supports_trace] {
# Compile the test case with the in-process agent library.
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
lappend options shlib=$libipa
@@ -38,7 +38,7 @@ if ![gdb_target_supports_trace] {
}
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
# Can't use prepare_for_testing, because that splits compiling into
# building objects and then linking, and we'd fail with "linker input
@@ -63,8 +63,8 @@ proc test_reconnect { } {
}
clean_restart $executable
- gdb_load_shlibs $lib_sl1
- gdb_load_shlibs $lib_sl2
+ gdb_load_shlib $lib_sl1
+ gdb_load_shlib $lib_sl2
if ![runto_main] then {
fail "Can't run to main"
return 0
@@ -243,8 +243,8 @@ proc test_pending_resolved { } {
clean_restart $executable
-gdb_load_shlibs $lib_sl1
-gdb_load_shlibs $lib_sl2
+gdb_load_shlib $lib_sl1
+gdb_load_shlib $lib_sl2
if ![runto_main] {
fail "Can't run to main to check for trace support"
@@ -43,8 +43,8 @@ if { [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $exec_opts] != ""
clean_restart $executable
-gdb_load_shlibs $lib_sl1
-gdb_load_shlibs $lib_sl2
+gdb_load_shlib $lib_sl1
+gdb_load_shlib $lib_sl2
if ![runto_main] {
fail "Can't run to main to check for trace support"
@@ -503,7 +503,7 @@ pending_tracepoint_installed_during_trace "trace"
# Re-compile test case with IPA.
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
lappend exec_opts "shlib=$libipa"
@@ -67,7 +67,7 @@ proc range_stepping_with_tracepoint { type } {
range_stepping_with_tracepoint "trace"
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable [list debug nowarnings shlib=$libipa] ] != "" } {
@@ -49,7 +49,7 @@ proc strace_remove_socket { action } {
# Restart with a fresh gdb.
clean_restart $executable
- gdb_load_shlibs $libipa
+ gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main"
return -1
@@ -134,7 +134,7 @@ proc strace_info_marker { } {
# Restart with a fresh gdb.
clean_restart $executable
- gdb_load_shlibs $libipa
+ gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main"
return -1
@@ -171,7 +171,7 @@ proc strace_probe_marker { } {
# Restart with a fresh gdb.
clean_restart $executable
- gdb_load_shlibs $libipa
+ gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main"
return -1
@@ -211,7 +211,7 @@ proc strace_trace_on_same_addr { type } {
# Restart with a fresh gdb.
clean_restart $executable
- gdb_load_shlibs $libipa
+ gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main"
return -1
@@ -315,7 +315,7 @@ proc strace_trace_on_diff_addr { } {
# Restart with a fresh gdb.
clean_restart $executable
- gdb_load_shlibs $libipa
+ gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main"
return -1
@@ -375,7 +375,7 @@ if { [istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"] } {
}
clean_restart $executable
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
if ![runto_main] {
fail "Can't run to main to check for trace support"
return -1
@@ -349,7 +349,7 @@ break_trace_same_addr_6 "trace" "enable" "trace" "disable"
break_trace_same_addr_6 "trace" "disable" "trace" "enable"
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
# Can't use prepare_for_testing, because that splits compiling into
# building objects and then linking, and we'd fail with "linker input
@@ -38,7 +38,7 @@ if ![gdb_target_supports_trace] {
}
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
# Can't use prepare_for_testing, because that splits compiling into
# building objects and then linking, and we'd fail with "linker input
@@ -107,7 +107,7 @@ foreach break_always_inserted { "on" "off" } {
step_over_tracepoint "trace"
set libipa [get_in_proc_agent]
-gdb_load_shlibs $libipa
+gdb_load_shlib $libipa
# Compile test case again with IPA.
if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile \
@@ -4221,14 +4221,12 @@ proc gdb_remote_download {dest fromfile {tofile {}}} {
}
}
-# gdb_load_shlibs LIB...
+# gdb_load_shlib LIB...
#
# Copy the listed libraries to the target.
-proc gdb_load_shlibs { args } {
- foreach file $args {
- gdb_remote_download target [shlib_target_file $file]
- }
+proc gdb_load_shlib { 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
@@ -4237,8 +4235,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 [lindex $file 0]]" "" ""
}
+
+ return $dest
}
#