[arm-embedded][PATCH, GCC/ARM, 2/3] Error out for incompatible ARM multilibs

Kyrill Tkachov kyrylo.tkachov@foss.arm.com
Fri Apr 29 15:07:00 GMT 2016


On 27/04/16 15:17, Thomas Preudhomme wrote:
> 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.

Ok for trunk.
Thanks,
Kyrill

>>> 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



More information about the Gcc-patches mailing list