aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@arm.com>2022-11-21 12:12:14 +0100
committerChristophe Lyon <christophe.lyon@arm.com>2022-11-21 13:19:53 +0100
commitccb9c7b129206209cfc315ab1a0432b5f517bdd9 (patch)
tree630953cffd27f6ad70cec75914ba0a895557bbbb
parent4c7d336b673df2f3bf23bc5e7a69c445a2320c04 (diff)
downloadgcc-ccb9c7b129206209cfc315ab1a0432b5f517bdd9.zip
gcc-ccb9c7b129206209cfc315ab1a0432b5f517bdd9.tar.gz
gcc-ccb9c7b129206209cfc315ab1a0432b5f517bdd9.tar.bz2
genmultilib: Fix sanity check
My previous patch to add a sanity check to genmultilib actually checked the number of dirnames with the number of "sets of options" rather than the number of options, thus breaking the build on some targets. To avoid duplicating once more the loop that constructs the sed patterns, this patch checks that the current dirname/osdirname is not empty in the existing loops. Are there targets where: if [ "$1" != "${opt}" ]; then is "legally" executed with an empty $1? (and thus where this patch would incorrectly trigger an error?) Sorry for the breakage. Tested on aarch64 by adding an option to t-aarch64 and no corresponding dirname, and on x86_64. gcc/ChangeLog: * genmultilib: Fix options and dirnames/osdirnames sanity check.
-rw-r--r--gcc/genmultilib22
1 files changed, 8 insertions, 14 deletions
diff --git a/gcc/genmultilib b/gcc/genmultilib
index b5f372c..c0c271e 100644
--- a/gcc/genmultilib
+++ b/gcc/genmultilib
@@ -141,20 +141,6 @@ multiarch=$9
multilib_reuse=${10}
enable_multilib=${11}
-# Sanity check: make sure we have as many dirnames as options
-if [ -n "${dirnames}" ]; then
- set x $options
- nboptions=$#
- set x $dirnames
- nbdirnames=$#
- if [ $nbdirnames -ne $nboptions ]; then
- echo 1>&2 "Error calling $0: Number of dirnames ($nbdirnames) does not match number of options ($nboptions)"
- echo 1>&2 "options: ${options}"
- echo 1>&2 "dirnames: ${dirnames}"
- exit 1
- fi
-fi
-
echo "static const char *const multilib_raw[] = {"
mkdir tmpmultilib.$$ || exit 1
@@ -264,6 +250,10 @@ if [ -n "${dirnames}" ]; then
for opts in `echo ${set} | sed -e 's|/| |'g`; do
patt="/"
for opt in `echo ${opts} | sed -e 's_|_ _'g`; do
+ if [ -z "$1" ]; then
+ echo 1>&2 "Error calling $0: No dirname for option: $opt"
+ exit 1
+ fi
if [ "$1" != "${opt}" ]; then
todirnames="${todirnames} -e s|/${opt}/|/${1}/|g"
patt="${patt}${1}/"
@@ -320,6 +310,10 @@ if [ -n "${osdirnames}" ]; then
for opts in `echo ${set} | sed -e 's|/| |'g`; do
patt="/"
for opt in `echo ${opts} | sed -e 's_|_ _'g`; do
+ if [ -z "$1" ]; then
+ echo 1>&2 "Error calling $0: No osdirname for option: $opt"
+ exit 1
+ fi
if [ "$1" != "${opt}" ]; then
toosdirnames="${toosdirnames} -e s|/${opt}/|/${1}/|g"
patt="${patt}${1}/"