This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] set MULTIARCH_DIRNAME for multilib architectures
- From: Bernhard Reutner-Fischer <rep dot dot dot nop at gmail dot com>
- To: Aurelien Jarno <aurel32 at debian dot org>
- Cc: Matthias Klose <doko at ubuntu dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Sandiford <rdsandiford at googlemail dot com>
- Date: Wed, 27 Nov 2013 12:55:54 +0100
- Subject: Re: [patch] set MULTIARCH_DIRNAME for multilib architectures
- Authentication-results: sourceware.org; auth=none
- References: <51B88407 dot 9000508 at ubuntu dot com> <87zjuv5gxp dot fsf at talisman dot default> <13f3c40f137 dot 2760 dot 0f39ed3bcad52ef2c88c90062b7714dc at gmail dot com> <87r4g64aa6 dot fsf at talisman dot default> <51C2F4E4 dot 1080206 at ubuntu dot com> <20131127101048 dot GI20559 at hall dot aurel32 dot net>
On 27 November 2013 11:10, Aurelien Jarno <aurel32@debian.org> wrote:
> On Thu, Jun 20, 2013 at 02:26:12PM +0200, Matthias Klose wrote:
>> Am 13.06.2013 11:42, schrieb Richard Sandiford:
>> > "Bernhard Reutner-Fischer" <rep.dot.nop@gmail.com> writes:
>> >> On 12 June 2013 20:20:50 Richard Sandiford <rdsandiford@googlemail.com> wrote:
>> >>> Matthias Klose <doko@ubuntu.com> writes:
>> >>>> Index: config/mips/t-linux64
>> >>>> ===================================================================
>> >>>> --- config/mips/t-linux64 (revision 200012)
>> >>>> +++ config/mips/t-linux64 (working copy)
>> >>>> @@ -24,3 +24,13 @@
>> >>>> ../lib32$(call
>> >>> if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
>> >>>> ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
>> >>>> ../lib64$(call
>> >>>> if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
>> >>>> +
>> >>>> +ifneq (,$(findstring abin32,$(target)))
>> >>>> +MULTIARCH_DIRNAME = $(call
>> >>> if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
>> >>>> +else
>> >>>> +ifneq (,$(findstring abi64,$(target)))
>> >>>> +MULTIARCH_DIRNAME = $(call
>> >>> if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
>> >>>> +else
>> >>>> +MULTIARCH_DIRNAME = $(call
>> >>> if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
>> >>>> +endif
>> >>>> +endif
>> >>>
>> >>> findstring seems a bit fragile for a full triple. I think it would
>> >>> be better to have something similar to the current MIPS_SOFT definition:
>> >>>
>> >>> MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI,
>> >>> $(target_cpu_default)) $(filter soft, $(with_float))),soft)
>> >>>
>> >>> but for ABIs. It could then also take with_abi into account.
>> >>> Maybe something like:
>> >>>
>> >>> MIPS_ABI = $(or $(with_abi), \
>> >>> $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
>> >>> $(target_cpu_default)), n32), \
>> >>> o32)
>> >>>
>> >>> (completely untested).
>> >>
>> >> Bikeshedding:
>> >> Doko would know, but ISTR that $(or) did not exist in make-3.80 which is
>> >> currently the minimum prerequisite, fwiw.
>> >
>> > Gah, that's a pity. Thanks for the catch though. Maybe firstword
>> > would be OK instead.
>> >
>> > I see I also fell into the usual ABI trap. It wouldn't have affected
>> > the use in this patch, but the default ought to be "32" rather than "o32".
>>
>> the define is in tm_defines, not target_cpu_default.
>>
>> MIPS_ABI = $(or $(with_abi), \
>> $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
>> $(tm_defines)), n32), \
>> 32)
>>
>> However I can't see yet how this should be used. Maybe Aurelian could come up
>> with a tested version of this patch?
>>
>
> How about the patch below?
>
> It first determines the ABI without using $(or), by looking (in this
> order) for $(with_abi), $(tm_defines) and $(target), defaulting to 32
> if none of the previous matches.
>
> Then the multiarch path is constructed from the ABI.
>
> Index: gcc/config/mips/t-linux64
> ===================================================================
> --- gcc/config/mips/t-linux64 (révision 205437)
> +++ gcc/config/mips/t-linux64 (copie de travail)
> @@ -24,3 +24,22 @@
> ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
> ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
> ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
> +
> +ifneq ($(with_abi),)
> +MIPS_ABI = $(with_abi)
> +endif
> +ifeq ($(MIPS_ABI),)
> +MIPS_ABI=$(if $(strip $(filter MIPS_ABI_DEFAULT=ABI_N32, $(tm_defines))),n32)
> +endif
> +ifeq ($(MIPS_ABI),)
> +MIPS_ABI = $(subst abi,,$(subst gnu,,$(lastword $(subst -, ,$(target)))))
> +endif
> +ifeq ($(MIPS_ABI),)
> +MIPS_ABI=32
> +endif
> +
> +ifeq ($(MIPS_ABI),32)
> +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
> +else
> +MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi$(MIPS_ABI)$(MIPS_SOFT))
hm, shouldn't this be gnueabi with an 'e' or is that implied for n64 anyway?
just curious..
thanks,
> +endif
>
> --
> Aurelien Jarno GPG: 1024D/F1BCDB73
> aurelien@aurel32.net http://www.aurel32.net