Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Luis Machado <lgustavo@codesourcery.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: "'gdb-patches@sourceware.org'" <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Fix calling gcore when gdb is not in $PATH.
Date: Fri, 11 Oct 2013 16:46:00 -0000	[thread overview]
Message-ID: <52582B57.8090006@codesourcery.com> (raw)
In-Reply-To: <52580F4B.8050306@codesourcery.com>

[-- Attachment #1: Type: text/plain, Size: 1297 bytes --]

On 10/11/2013 11:46 AM, Luis Machado wrote:
> On 10/11/2013 11:31 AM, Jan Kratochvil wrote:
>> On Fri, 11 Oct 2013 16:10:16 +0200, Luis Machado wrote:
>>> --- a/gdb/gcore.in
>>> +++ b/gdb/gcore.in
>>> @@ -51,7 +51,7 @@ for pid in $*
>>>   do
>>>       # `</dev/null' to avoid touching interactive terminal if it is
>>>       # available but not accessible as GDB would get stopped on
>>> SIGTTIN.
>>> -    @GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
>>> +    "$(dirname "$0")"/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
>>
>> I have only some concern if $0 does not contain a directory name.
>> Then `dirname basename` will be . and gdb -> ./gdb will be a
>> regression as
>> ./gdb will typically not be found.
>>
>> For example if you run:
>>     $ sh gcore foo
>> then sh (or bash) executes /usr/bin/gcore but $0 is still just "gcore".
>>
>> It IMO even corresponds to the sh $0 POSIX description ("command_file"):
>>     http://pubs.opengroup.org/onlinepubs/007908799/xcu/sh.html
>
>
> Right. That situation can indeed happen. Though it looks a little
> awkward to call something in your path like that.
>
> I suppose we can extend the check to cover that case as well. Let me go
> back to the drawing board.

Is this one more acceptable (though slightly less portable)?

Regards,
Luis


[-- Attachment #2: gcore.diff --]
[-- Type: text/x-patch, Size: 1271 bytes --]

2013-10-11  Luis Machado  <lgustavo@codesourcery.com>

	* gcore.in: Call gdb using the full path to the gcore script.

diff --git a/gdb/gcore.in b/gdb/gcore.in
index 9c5b14d..dc6a8f9 100644
--- 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`
+	fi
+
+	# Add a slash to the path.
+	binary_path="$binary_path/"
+
 	# `</dev/null' to avoid touching interactive terminal if it is
 	# available but not accessible as GDB would get stopped on SIGTTIN.
-	@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
+	"$binary_path"@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
 	    -ex "set pagination off" -ex "set height 0" -ex "set width 0" \
 	    -ex "attach $pid" -ex "gcore $name.$pid" -ex detach -ex quit
 

  reply	other threads:[~2013-10-11 16:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-11 14:10 Luis Machado
2013-10-11 14:31 ` Jan Kratochvil
2013-10-11 14:46   ` Luis Machado
2013-10-11 16:46     ` Luis Machado [this message]
2013-10-11 16:56       ` Jan Kratochvil
2013-10-11 17:53         ` Luis Machado
2013-10-11 18:10           ` Jan Kratochvil
2013-10-11 18:22             ` Luis Machado
2013-10-11 19:58               ` Jan Kratochvil
2013-10-14 12:24                 ` Luis Machado
2013-10-15 15:10                   ` Jan Kratochvil
2013-10-16 15:13                     ` Luis Machado

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=52582B57.8090006@codesourcery.com \
    --to=lgustavo@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.kratochvil@redhat.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