Message ID | 20240728142631.581139-1-jwakely@redhat.com |
---|---|
State | New |
Headers | show |
Series | gcc: Make exec-tool.in handle missing Binutils more gracefully | expand |
> Am 28.07.2024 um 16:27 schrieb Jonathan Wakely <jwakely@redhat.com>: > > Bootstrapped on x86_64-linux and for msp430-elf cross with and without > binutils for the target to verify the error is printed as expected. > > The $invoked variable will be one of as, collect-ld, nm, or dsymutil, > i.e. the tool that the script is invoking and wants to exec. > > OK for trunk? > Ok Richard > -- >8 -- > > When users try to build a cross-compiler without first installing > binutils they get confusing errors like: > /tmp/gcc-obj/./gcc/as: line 114: exec: -m: invalid option > > This is an incredibly common source of questions on gcc-help and IRC, > and bogus bug reports e.g. see PR 116119 for the latest example. > > This change adds an explicit check for an empty $original variable and > exits with a user-friendly error. > > gcc/ChangeLog: > > * exec-tool.in: Exit with an error if $original is empty. > --- > gcc/exec-tool.in | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/gcc/exec-tool.in b/gcc/exec-tool.in > index 7d152e083a7..2767e1019b8 100644 > --- a/gcc/exec-tool.in > +++ b/gcc/exec-tool.in > @@ -81,6 +81,14 @@ case "$invoked" in > ;; > esac > > +if test -z "$original" > +then > + echo "$0: \$original is unset" >&2 > + echo "This probably means there is no '$invoked' for the target." >&2 > + echo "For a cross-compiler, you probably need to install Binutils first." >&2 > + exit 1 > +fi > + > case "$original" in > ../*) > # compute absolute path of the location of this script > -- > 2.45.2 >
diff --git a/gcc/exec-tool.in b/gcc/exec-tool.in index 7d152e083a7..2767e1019b8 100644 --- a/gcc/exec-tool.in +++ b/gcc/exec-tool.in @@ -81,6 +81,14 @@ case "$invoked" in ;; esac +if test -z "$original" +then + echo "$0: \$original is unset" >&2 + echo "This probably means there is no '$invoked' for the target." >&2 + echo "For a cross-compiler, you probably need to install Binutils first." >&2 + exit 1 +fi + case "$original" in ../*) # compute absolute path of the location of this script