This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/2] Change gdb_load_shlibs to gdb_load_shlib
- From: Pedro Alves <palves at redhat dot com>
- To: Simon Marchi <simon dot marchi at ericsson dot com>, gdb-patches at sourceware dot org
- Cc: qiyaoltc at gmail dot com, antoine dot tremblay at ericsson dot com
- Date: Wed, 13 Apr 2016 19:18:09 +0100
- Subject: Re: [PATCH 1/2] Change gdb_load_shlibs to gdb_load_shlib
- Authentication-results: sourceware.org; auth=none
- References: <1460502865-10999-1-git-send-email-simon dot marchi at ericsson dot com>
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