This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Fix calling gcore when gdb is not in $PATH.
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Luis Machado <lgustavo at codesourcery dot com>
- Cc: "'gdb-patches at sourceware dot org'" <gdb-patches at sourceware dot org>
- Date: Fri, 11 Oct 2013 20:10:08 +0200
- Subject: Re: [PATCH] Fix calling gcore when gdb is not in $PATH.
- Authentication-results: sourceware.org; auth=none
- References: <525806C8 dot 8040108 at codesourcery dot com> <20131011143145 dot GA1517 at host2 dot jankratochvil dot net> <52580F4B dot 8050306 at codesourcery dot com> <52582B57 dot 8090006 at codesourcery dot com> <20131011165622 dot GA20960 at host2 dot jankratochvil dot net> <52583B08 dot 3010907 at codesourcery dot com>
On Fri, 11 Oct 2013 19:53:12 +0200, Luis Machado wrote:
> On 10/11/2013 01:56 PM, Jan Kratochvil wrote:
> >On Fri, 11 Oct 2013 18:46:15 +0200, Luis Machado wrote:
> >>--- a/gdb/gcore.in
> >>+++ b/gdb/gcore.in
> >>@@ -49,9 +49,26 @@ rc=0
> >> # Loop through pids
> >> for pid in $*
> >> do
> >>+# Attempt to fetch the absolute path to the gcore script that was
> >>+# called.
> >>+binary_path=`dirname "$0"`
> >>+
> >>+ if test "x$binary_path" = x. ; then
> >>+ # We got "." back as a path. This means the user executed
> >>+ # the gcore script locally (i.e. ./gcore) or called the
> >>+ # script via a shell interpreter (i.e. sh gcore). We use
> >>+ # the "which" command to locate the real path of the gcore
> >>+ # script, disambiguating this situation.
> >>+ binary_path_from_env=`which "$0"`
> >>+ binary_path=`dirname $binary_path_from_env`
> >
> >In generally OK, just still ... is there some reason for this 'which' search?
> >Moreover if one really runs ./gcore then it should IMO take ./gdb (and not some
> >other gdb), if we should really pick GDB from the directory of gcore.
>
> Yes. The reason is to pick the gdb binary from the directory that
> contains the gcore script the user invoked.
>
> If the user issued "sh gcore" and /usr/bin/gcore was picked (based
> on $PATH), then we should use /usr/bin/gdb.
>
> Now, if the user issued "./gcore", ./gdb will be picked up, and so on.
>
> Does it make sense?
Great we agree. But your code does pick /usr/bin/gdb for ./gcore, doesn't it?
Which is why I proposed the change I proposed.
Jan