From 87326c8787881e77f00a787bfc4af9eab0ea338e Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Wed, 16 Oct 2013 15:08:11 +0000 Subject: [PATCH] * gcore.in: Call GDB using the full path to the gcore script. Error out if the GDB binary is not found. --- gdb/ChangeLog | 5 +++++ gdb/gcore.in | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ab19f6201c9..04ce5d7ca92 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2013-10-16 Luis Machado + + * gcore.in: Call GDB using the full path to the gcore script. + Error out if the GDB binary is not found. + 2013-10-16 Sergio Durigan Junior PR gdb/16014 diff --git a/gdb/gcore.in b/gdb/gcore.in index 9c5b14df744..c128c45f169 100644 --- a/gdb/gcore.in +++ b/gdb/gcore.in @@ -43,6 +43,40 @@ then shift; shift fi +# 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). + binary_basename=`basename "$0"` + + # If the gcore script was called like "sh gcore" and the script + # lives in the current directory, "which" will not give us "gcore". + # So first we check if the script is in the current directory + # before using the output of "which". + if test -f "$binary_basename" ; then + # We have a local gcore script in ".". This covers the case of + # doing "./gcore" or "sh gcore". + binary_path="." + else + # The gcore script was not found in ".", which means the script + # was called from somewhere else in $PATH by "sh gcore". + # Extract the correct path now. + binary_path_from_env=`which "$0"` + binary_path=`dirname "$binary_path_from_env"` + fi +fi + +# Check if the GDB binary is in the expected path. If not, just +# quit with a message. +if [ ! -f "$binary_path"/@GDB_TRANSFORM_NAME@ ]; then + echo "gcore: GDB binary (${binary_path}/@GDB_TRANSFORM_NAME@) not found" + exit 1 +fi + # Initialise return code. rc=0 @@ -51,7 +85,7 @@ for pid in $* do # `