X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgcore.in;h=4d876f8001fef687cb39c0cdaf313f22b5912a08;hb=2117c711ae07700adb57ea5b5ca61e4c32d7e3d2;hp=9c5b14df744e525037654d8e2ceea0d6800606a9;hpb=b292c7831823605b02a564b0a9274f95141c92ee;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gcore.in b/gdb/gcore.in index 9c5b14df74..4d876f8001 100644 --- a/gdb/gcore.in +++ b/gdb/gcore.in @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -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 # `