This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [arm-embedded][PATCH, GCC/ARM, 2/3] Error out for incompatible ARM multilibs
- From: Thomas Preudhomme <thomas dot preudhomme at foss dot arm dot com>
- To: gcc-patches at gcc dot gnu dot org, kyrylo dot tkachov at arm dot com, ramana dot radhakrishnan at arm dot com, richard dot earnshaw at arm dot com
- Date: Wed, 27 Apr 2016 15:17:16 +0100
- Subject: Re: [arm-embedded][PATCH, GCC/ARM, 2/3] Error out for incompatible ARM multilibs
- Authentication-results: sourceware.org; auth=none
- References: <006801d138ad$e6216160$b2642420$ at foss dot arm dot com>
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-owner@gcc.gnu.org [mailto:gcc-patches-
> > owner@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.preudhomme@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