Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@ericsson.com>
To: Pedro Alves <palves@redhat.com>, <gdb-patches@sourceware.org>
Cc: <qiyaoltc@gmail.com>, <antoine.tremblay@ericsson.com>
Subject: Re: [PATCH 1/2] Change gdb_load_shlibs to gdb_load_shlib
Date: Wed, 13 Apr 2016 21:05:00 -0000	[thread overview]
Message-ID: <570EB491.7090001@ericsson.com> (raw)
In-Reply-To: <570E8D61.3010100@redhat.com>

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


  reply	other threads:[~2016-04-13 21:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-12 23:14 Simon Marchi
2016-04-12 23:14 ` [PATCH 2/2] ftrace tests: Use gdb_load_shlib result to lookup IPA in info sharedlibrary Simon Marchi
2016-04-13 18:18 ` [PATCH 1/2] Change gdb_load_shlibs to gdb_load_shlib Pedro Alves
2016-04-13 21:05   ` Simon Marchi [this message]
2016-04-14 11:28     ` Pedro Alves
2016-04-14  9:33 ` Yao Qi
2016-04-14 15:17   ` Simon Marchi
2016-04-14 15:27     ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=570EB491.7090001@ericsson.com \
    --to=simon.marchi@ericsson.com \
    --cc=antoine.tremblay@ericsson.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=qiyaoltc@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox