From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 From: Fedora GDB patches Date: Fri, 27 Oct 2017 21:07:50 +0200 Subject: gdb-add-index.patch ;; Update gdb-add-index.sh such that, when the GDB environment ;; variable is not set, the script is smarter than just looking for ;; 'gdb' in the $PATH. ;; ;; The actual search order is now: /usr/bin/gdb.minimal, gdb (in the ;; $PATH), then /usr/libexec/gdb. ;; ;; For the rationale of looking for gdb.minimal see: ;; ;; https://fedoraproject.org/wiki/Changes/Minimal_GDB_in_buildroot ;; ;;=fedora diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh --- a/gdb/contrib/gdb-add-index.sh +++ b/gdb/contrib/gdb-add-index.sh @@ -16,14 +16,52 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# This program assumes gdb and objcopy are in $PATH. -# If not, or you want others, pass the following in the environment -GDB=${GDB:=gdb} +# This program assumes objcopy and readelf are in $PATH. If not, or +# you want others, pass the following in the environment OBJCOPY=${OBJCOPY:=objcopy} READELF=${READELF:=readelf} myname="${0##*/}" +# For GDB itself we need to be a little smarter. If GDB is set in the +# environment then we will use that. But if GDB is not set in the +# environment then we have a couple of options that we need to check +# through. +# +# Our default choice is for /usr/bin/gdb.minimal. For an explanation +# of why this is chosen, check out: +# https://bugzilla.redhat.com/show_bug.cgi?id=1695015 +# https://fedoraproject.org/wiki/Changes/Minimal_GDB_in_buildroot +# +# If gdb.minimal is not found then we look for a 'gdb' executable on +# the path. +# +# And finally, we check for /usr/libexec/gdb. +# +# If none of those result in a useable GDB then we give an error and +# exit. +if test -z "$GDB"; then + for possible_gdb in /usr/bin/gdb.minimal gdb /usr/libexec/gdb; do + if ! which "$possible_gdb" >/dev/null 2>&1; then + continue + fi + + possible_gdb=$(which "$possible_gdb") + + if ! test -x "$possible_gdb"; then + continue + fi + + GDB="$possible_gdb" + break + done + + if test -z "$GDB"; then + echo "$myname: Failed to find a useable GDB binary" 1>&2 + exit 1 + fi +fi + dwarf5="" if [ "$1" = "-dwarf-5" ]; then dwarf5="$1"