https://gcc.gnu.org/g:f81f033bdfda4550419805bbb1eef770c2af7b23
commit r17-2457-gf81f033bdfda4550419805bbb1eef770c2af7b23 Author: Jonathan Wakely <[email protected]> Date: Wed Jun 24 21:50:24 2026 +0100 contrib: Fix exit status of relpath.sh for invalid args [PR125956] The relpath.sh script always writes its usage message to stdout and exits with zero status, even for invalid arguments. This caused a problem for libstdc++-v3/src/c++23/Makefile which assumed that relpath.sh won't exit successfully on error, via: relpath=$(relpath.sh ...) && sed 's,@MODPATH@,$$relpath,' ... Because relpath.sh exits successfully for invalid args, the sed command still ran even when relpath.sh was invoked incorrectly. The libstdc++ Makefile has been changed to work around this, but relpath.sh should still have an idiomatic exit status. contrib/ChangeLog: PR libstdc++/125956 * relpath.sh: For invalid arguments write to stderr and exit with non-zero status. Diff: --- contrib/relpath.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/contrib/relpath.sh b/contrib/relpath.sh index 1b329fc04a78..286e7f1a1752 100755 --- a/contrib/relpath.sh +++ b/contrib/relpath.sh @@ -1,10 +1,18 @@ #!/bin/sh -if [ "$1" = "--help" -o $# -ne 2 -o -f "$1" ]; then +usage() +{ echo Usage: relpath.sh FROM TO echo Print the relative path from FROM to TO echo FROM must be a directory, but need not exist +} + +if [ "$1" = "--help" ]; then + usage exit 0 +elif [ $# -ne 2 -o -f "$1" ]; then + usage >&2 + exit 1 fi from="${1%%/}"
