Ping? Best regards,
Thomas On Thursday 17 December 2015 17:32:48 Thomas Preud'homme wrote: > 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