From: Pedro Alves <palves@redhat.com>
To: Gary Benson <gbenson@redhat.com>
Cc: gdb-patches@sourceware.org,
Philippe Waroquiers <philippe.waroquiers@skynet.be>
Subject: Re: [PATCH] Make only user-specified executable filenames sticky
Date: Mon, 11 May 2015 13:57:00 -0000 [thread overview]
Message-ID: <5550B543.1000203@redhat.com> (raw)
In-Reply-To: <20150506152000.GB29283@blade.nx>
On 05/06/2015 04:20 PM, Gary Benson wrote:
> Pedro Alves wrote:
>> On 05/06/2015 11:26 AM, Gary Benson wrote:
>>> In GDB some executable files are supplied by the user (e.g. using
>>> a "file" command) and some are determined by GDB (e.g. while
>>> processing an "attach" command). GDB will not attempt to
>>> determine a filename if one has been set. This causes problems if
>>> you attach to one process and then attach to another: GDB will not
>>> attempt to discover the main executable on the second attach. If
>>> the two processes have different main executable files then the
>>> symbols will now be wrong.
>>>
>>> This commit updates GDB to keep track of which executable
>>> filenames were supplied by the user. When GDB might attempt to
>>> determine an executable filename and one is already set, filenames
>>> determined by GDB may be overridden but user-supplied filenames
>>> will not.
>>
>> I have a feeling this would be simpler if the flag's sense was
>> reversed? That is, mark the exec as auto-discovered instead of
>> marking it user-loaded.
>
> I'm easy either way. I spent about four hours trying to name the
> flag (and thinking about making it an enum) so right now I'm about
> ready to be told what to do :)
>
> I think having the sense the other way around would make the checks
> more complex, you'd have to check for exec_file being empty as well
> as being auto-discovered. If the user set it it isn't empty.
It's not that complex, and, both the checks and the sets of the
flags would only appear in places that relate to auto-discovery,
instead of setting the flag in the several user-specified code paths
(which seem to be more than the auto-discover paths), and then checking
them in the auto-discover paths; seems more centralized to keep most
things in the auto-discover paths.
>
>> How does this interact with "symbol-file FILE" ?
>
> I'm not sure... badly? :)
>
:-)
> exec_file_locate_attach (the bit that does the auto-discovery) does
> both exec_file_attach and symbol_file_add_main. file_command also
> does both, albeit indirectly, and add_inferior_command does both
> too. But, on startup you can specify separate symbol file, and of
> course you can use the symbol-file command.
>
> I don't really know in what circumstances you would use a separate
> symbol file.
Yeah, I don't think it's a very common thing to do. At least
not on systems where the same file format holds both
the executable and the debug info. Not all systems are like
that: I'm thinking of Symbian, with PE dll files for exec
file, and ELF .sym files for symbols
(https://sourceware.org/ml/gdb-patches/2010-03/msg00237.html),
or even Windows' pdb files (which we don't support, but alas).
Maybe there are more systems like that.
> Should they both be protected individually do you
> think? I'm leaning that way.
Yeah, that might be the simplest/best option, as opposed to
trying to come up with rules/policy related to how symbol-file
and exec-file influence each other.
>
>>> --- a/gdb/exec.h
>>> +++ b/gdb/exec.h
>>> @@ -32,6 +32,8 @@ struct objfile;
>>> #define exec_bfd current_program_space->ebfd
>>> #define exec_bfd_mtime current_program_space->ebfd_mtime
>>> #define exec_filename current_program_space->pspace_exec_filename
>>> +#define user_supplied_exec_file_p \
>>> + current_program_space->pspace_user_supplied_exec_file_p
>>
>> Nit, but I'd suggest 'exec_file_is_user_supplied', which would
>> fit the pattern of vars related to the exec being prefixed exec_.
>
> Ok. Or exec_file_is_sticky (and symfile_is_sticky)?
Sounds fine.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2015-05-11 13:57 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-02 9:48 qXfer:exec-file:read and non multiprocess target Philippe Waroquiers
2015-05-05 11:02 ` Gary Benson
2015-05-05 20:45 ` Philippe Waroquiers
2015-05-06 10:31 ` Gary Benson
2015-05-06 17:10 ` [PATCH] Locate executables on remote stubs without multiprocess extensions Gary Benson
2015-05-06 17:15 ` Eli Zaretskii
2015-05-06 17:16 ` Gary Benson
2015-05-11 14:37 ` Pedro Alves
2015-05-12 11:03 ` Gary Benson
2015-05-05 15:14 ` qXfer:exec-file:read and non multiprocess target Gary Benson
2015-05-06 10:26 ` [PATCH] Make only user-specified executable filenames sticky Gary Benson
2015-05-06 12:19 ` Pedro Alves
2015-05-06 14:21 ` Pedro Alves
2015-05-06 15:20 ` Gary Benson
2015-05-11 13:57 ` Pedro Alves [this message]
2015-05-06 14:46 ` Philippe Waroquiers
2015-05-06 15:41 ` Gary Benson
2015-05-11 13:58 ` Pedro Alves
2015-05-11 20:25 ` Doug Evans
2015-05-11 17:14 ` Don Breazeal
2015-06-05 9:37 ` Gary Benson
2015-06-05 14:54 ` Don Breazeal
2015-07-03 11:14 ` Gary Benson
2015-07-06 12:53 ` Joel Brobecker
2015-07-17 21:48 ` Joel Brobecker
2015-05-11 20:23 ` Doug Evans
2015-05-12 10:36 ` Pedro Alves
2015-05-12 11:13 ` Gary Benson
2015-05-12 11:16 ` Pedro Alves
2015-05-12 13:48 ` Gary Benson
2015-05-12 14:08 ` Pedro Alves
2015-05-12 15:49 ` Doug Evans
2015-05-13 7:55 ` Gary Benson
2015-05-13 9:12 ` Pedro Alves
2015-06-03 17:23 ` Joel Brobecker
2015-06-05 11:22 ` [PATCH v2] Make only user-specified executable and symbol " Gary Benson
2015-06-07 11:40 ` Philippe Waroquiers
2015-06-08 9:01 ` [PATCH v3] " Gary Benson
2015-06-08 19:42 ` Philippe Waroquiers
2015-07-03 11:01 ` Gary Benson
2015-07-03 15:44 ` Pedro Alves
2015-07-06 13:01 ` Pedro Alves
2015-06-07 12:03 ` [PATCH v2] " Philippe Waroquiers
2015-06-07 12:13 ` Philippe Waroquiers
2015-05-13 8:06 ` [PATCH] Make only user-specified executable " Pedro Alves
2015-05-12 16:03 ` Doug Evans
2015-05-13 8:39 ` 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=5550B543.1000203@redhat.com \
--to=palves@redhat.com \
--cc=gbenson@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=philippe.waroquiers@skynet.be \
/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