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? -- >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