[PATCH v2] Fix make installcheck when using program-prefix

Samuel Zeter samuelzeter@gmail.com
Fri May 23 04:20:43 GMT 2025


sanity.sh does not check for the presence of a program-prefix,
so when make installcheck is ran and files have been installed
with a prefix, the operation fails.

BUG: https://sourceware.org/bugzilla/show_bug.cgi?id=23120

Signed-off-by: Samuel Zeter <samuelzeter@gmail.com>
--- Fixes the issues raised from the first patch
 binutils/Makefile.in |  2 +-
 binutils/sanity.sh   | 53 +++++++++++++++++++++++++++++++-------------
 2 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/binutils/Makefile.in b/binutils/Makefile.in
index 549b5a361c8..aa6891d4923 100644
--- a/binutils/Makefile.in
+++ b/binutils/Makefile.in
@@ -1852,7 +1852,7 @@ development.exp: $(BFDDIR)/development.sh
 	  | $(AWK) -F= '{ print "set " $$1 " " $$2 }' > $@
 
 installcheck-local:
-	/bin/sh $(srcdir)/sanity.sh $(bindir)
+	/bin/sh $(srcdir)/sanity.sh $(bindir) '$(program_transform_name)'
 
 objdump.@OBJEXT@:objdump.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(OBJDUMP_DEFS) $(srcdir)/objdump.c
diff --git a/binutils/sanity.sh b/binutils/sanity.sh
index e16df6163fb..4d50dde6455 100755
--- a/binutils/sanity.sh
+++ b/binutils/sanity.sh
@@ -24,44 +24,67 @@
 ### fail on errors
 set -e
 
+find_prog ()
+{
+  local raw_name="$1"
+  local transformed="$(echo "$raw_name" | sed "$program_transform_name")"
+
+  if [ -x "${BIN}/${transformed}" ]; then
+    echo "${transformed}"
+    return 0
+  elif [ -x "${BIN}/${raw_name}" ]; then
+    echo "${raw_name}"
+    return 0
+  fi
+
+  echo "Error: '$raw_name' not found in ${BIN}" >&2
+  exit 1
+}
+
 ### first arg is directory in which binaries to be tested reside.
-case "$1" in
-"") BIN=. ;;
-*)  BIN="$1" ;;
-esac
+BIN="${1:-.}"
+
+program_transform_name="${2}"
 
 ### size
+size=$(find_prog size)
 for i in size objdump nm ar strip ranlib ; do
-	${BIN}/size ${BIN}/$i > /dev/null
+    test_prog=$(find_prog "$i")
+	"${BIN}/${size}" "${BIN}/${test_prog}" > /dev/null
 done
 
 ### objdump
+objdump=$(find_prog objdump)
 for i in size objdump nm ar strip ranlib ; do
-	${BIN}/objdump -ahifdrtxsl ${BIN}/$i > /dev/null
+    test_prog=$(find_prog "$i")
+	"${BIN}/${objdump}" -ahifdrtxsl "${BIN}/${test_prog}" > /dev/null
 done
 
 ### nm
+nm=$(find_prog nm)
 for i in size objdump nm ar strip ranlib ; do
-	${BIN}/nm ${BIN}/$i > /dev/null
+    test_prog=$(find_prog "$i")
+	"${BIN}/${nm}" "${BIN}/${test_prog}" > /dev/null
 done
 
 ### strip
 TMPDIR=./binutils-$$
-mkdir ${TMPDIR}
-
-cp ${BIN}/strip ${TMPDIR}/strip
+mkdir "${TMPDIR}"
 
+strip=$(find_prog strip)
+cp "${BIN}/$strip" "${TMPDIR}/$strip"
 for i in size objdump nm ar ranlib ; do
-	cp ${BIN}/$i ${TMPDIR}/$i
-	${BIN}/strip ${TMPDIR}/$i
-	cp ${BIN}/$i ${TMPDIR}/$i
-	${TMPDIR}/strip ${TMPDIR}/$i
+    test_prog=$(find_prog "$i")
+    cp "${BIN}/${test_prog}" "${TMPDIR}/${test_prog}"
+	"${BIN}/$strip" "${TMPDIR}/${test_prog}"
+	cp "${BIN}/${test_prog}" "${TMPDIR}/${test_prog}"
+	"${TMPDIR}/$strip" "${TMPDIR}/${test_prog}"
 done
 
 ### ar
 
 ### ranlib
 
-rm -rf ${TMPDIR}
+rm -rf "${TMPDIR}"
 
 exit 0
-- 
2.49.0



More information about the Binutils mailing list