Hi, We decided to apply the following patch to the ARM embedded 5 branch.
Best regards, Thomas > -----Original Message----- > From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > ow...@gcc.gnu.org] On Behalf Of Thomas Preud'homme > Sent: Wednesday, December 16, 2015 7:59 PM > To: gcc-patches@gcc.gnu.org; Richard Earnshaw; Ramana Radhakrishnan; > Kyrylo Tkachov > Subject: [PATCH, GCC/ARM, 2/3] Error out for incompatible ARM > multilibs > > Currently in config.gcc, only the first multilib in a multilib list is > checked for > validity and the following elements are ignored due to the break which > only breaks out of loop in shell. A loop is also done over the multilib list > elements despite no combination being legal. This patch rework the code > to address both issues. > > ChangeLog entry is as follows: > > > 2015-11-24 Thomas Preud'homme <thomas.preudho...@arm.com> > > * config.gcc: Error out when conflicting multilib is detected. Do not > loop over multilibs since no combination is legal. > > > diff --git a/gcc/config.gcc b/gcc/config.gcc > index 59aee2c..be3c720 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -3772,38 +3772,40 @@ case "${target}" in > # Add extra multilibs > if test "x$with_multilib_list" != x; then > arm_multilibs=`echo $with_multilib_list | sed -e > 's/,/ /g'` > - for arm_multilib in ${arm_multilibs}; do > - case ${arm_multilib} in > - aprofile) > + case ${arm_multilibs} in > + aprofile) > # Note that arm/t-aprofile is a > # stand-alone make file fragment to be > # used only with itself. We do not > # specifically use the > # TM_MULTILIB_OPTION framework > because > # this shorthand is more > - # pragmatic. Additionally it is only > - # designed to work without any > - # with-cpu, with-arch with-mode > + # pragmatic. > + tmake_profile_file="arm/t-aprofile" > + ;; > + default) > + ;; > + *) > + echo "Error: --with-multilib- > list=${with_multilib_list} not supported." 1>&2 > + exit 1 > + ;; > + esac > + > + if test "x${tmake_profile_file}" != x ; then > + # arm/t-aprofile is only designed to work > + # without any with-cpu, with-arch, with- > mode, > # with-fpu or with-float options. > - if test "x$with_arch" != x \ > - || test "x$with_cpu" != x \ > - || test "x$with_float" != x \ > - || test "x$with_fpu" != x \ > - || test "x$with_mode" != x ; > then > - echo "Error: You cannot use > any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" > 1>&2 > - exit 1 > - fi > - tmake_file="${tmake_file} > arm/t-aprofile" > - break > - ;; > - default) > - ;; > - *) > - echo "Error: --with-multilib- > list=${with_multilib_list} not supported." 1>&2 > - exit 1 > - ;; > - esac > - done > + if test "x$with_arch" != x \ > + || test "x$with_cpu" != x \ > + || test "x$with_float" != x \ > + || test "x$with_fpu" != x \ > + || test "x$with_mode" != x ; then > + echo "Error: You cannot use any of -- > with-arch/cpu/fpu/float/mode with --with-multilib-list=${arm_multilib}" > 1>&2 > + exit 1 > + fi > + > + tmake_file="${tmake_file} > ${tmake_profile_file}" > + fi > fi > ;; > > > Tested with the following multilib lists: > + foo -> "Error: --with-multilib-list=foo not supported" as expected > + default,aprofile -> "Error: --with-multilib-list=default,aprofile not > supported" as expected > + aprofile,default -> "Error: --with-multilib-list=aprofile,default not > supported" as expected > + (nothing) -> libraries in $installdir/arm-none-eabi/lib{,fpu,thumb} > + default -> libraries in $installdir/arm-none-eabi/lib{,fpu,thumb} as > expected > + aprofile -> $installdir/arm-none-eabi/lib contains all supported multilib > > Is this ok for trunk? > > Best regards, > > Thomas