Files
gcc-reflection/gcc/exec-tool.in
Iain Sandoe 10abab4127 Darwin, configury : Allow for specification and detection of dsymutil.
In order to enable DWARF versions > 2 we need a sufficiently modern
version of dsymutil (in addition to the assembler / linker).  This
allows the user to configure a different path from the installed one.

In addition, there are several sources of dsymutil so we differentiate
these in order to be get accurate version information.

Backported from commits 3b5e8ee4f1 and
b019b28ebd

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* configure.ac: Handle --with-dsymutil in the same way as we
	do for the assembler and linker.  (DEFAULT_DSYMUTIL): New.
	Extract the type and version for the dsymutil configured or
	found by the default searches.
	* config.in: Regenerated.
	* configure: Regenerated.
	* collect2.c (do_dsymutil): Handle locating dsymutil in the
	same way as for the assembler and  linker.
	* config/darwin.h (DSYMUTIL): Delete.
	* gcc.c: Report a configured dsymutil correctly.
	* exec-tool.in: Allow for dsymutil.
	* doc/install.texi: Document --with-dsymutil.

ChangeLog:

	* Makefile.def: Add dsymutil defs.
	* Makefile.in: Regenerated.
	* Makefile.tpl: Add dsymutil to flags.
	* configure: Regenerated.
	* configure.ac: Add dsymutil to target and build recipes.
2022-04-14 06:20:21 +01:00

117 lines
3.3 KiB
Bash

#! /bin/sh
# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This file is part of GCC.
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Invoke as, ld or nm from the build tree.
ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@"
ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@"
ORIGINAL_LD_BFD_FOR_TARGET="@ORIGINAL_LD_BFD_FOR_TARGET@"
ORIGINAL_LD_GOLD_FOR_TARGET="@ORIGINAL_LD_GOLD_FOR_TARGET@"
ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@"
ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@"
ORIGINAL_DSYMUTIL_FOR_TARGET="@ORIGINAL_DSYMUTIL_FOR_TARGET@"
exeext=@host_exeext@
fast_install=@enable_fast_install@
objdir=@objdir@
invoked=`basename "$0"`
id=$invoked
case "$invoked" in
as)
original=$ORIGINAL_AS_FOR_TARGET
prog=as-new$exeext
dir=gas
;;
collect-ld)
# Check -fuse-ld=bfd and -fuse-ld=gold
case " $* " in
*\ -fuse-ld=bfd\ *)
original=$ORIGINAL_LD_BFD_FOR_TARGET
;;
*\ -fuse-ld=gold\ *)
original=$ORIGINAL_LD_GOLD_FOR_TARGET
;;
*)
# when using a linker plugin, gcc will always pass '-plugin' as the
# first or second option to the linker.
if test x"$1" = "x-plugin" || test x"$2" = "x-plugin"; then
original=$ORIGINAL_PLUGIN_LD_FOR_TARGET
else
original=$ORIGINAL_LD_FOR_TARGET
fi
;;
esac
prog=ld-new$exeext
if test "$original" = ../gold/ld-new$exeext; then
dir=gold
# No need to handle relink since gold doesn't use libtool.
fast_install=yes
else
dir=ld
fi
id=ld
;;
nm)
original=$ORIGINAL_NM_FOR_TARGET
prog=nm-new$exeext
dir=binutils
;;
dsymutil)
original=$ORIGINAL_DSYMUTIL_FOR_TARGET
# We do not build this in tree - but still want to be able to execute
# a configured version from the build dir.
prog=
dir=
;;
esac
case "$original" in
../*)
# compute absolute path of the location of this script
tdir=`dirname "$0"`
scriptdir=`cd "$tdir" && pwd`
if test -x $scriptdir/../$dir/$prog; then
test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"}
# if libtool did everything it needs to do, there's a fast path
lt_prog=$scriptdir/../$dir/$objdir/lt-$prog
test -x $lt_prog && exec $lt_prog ${1+"$@"}
# libtool has not relinked ld-new yet, but we cannot just use the
# previous stage (because then the relinking would just never happen!).
# So we take extra care to use prev-ld/ld-new *on recursive calls*.
eval LT_RCU="\${LT_RCU_$id}"
test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"}
eval LT_RCU_$id=1
export LT_RCU_$id
$scriptdir/../$dir/$prog ${1+"$@"}
result=$?
exit $result
else
exec $scriptdir/../prev-$dir/$prog ${1+"$@"}
fi
;;
*)
exec $original ${1+"$@"}
;;
esac