Re: [PATCH v3 1/5] arm64: vdso32: Introduce COMPAT_CC_IS_GCC

From: Vincenzo Frascino
Date: Tue Oct 01 2019 - 10:18:53 EST


On 10/1/19 2:27 PM, Catalin Marinas wrote:
> On Tue, Oct 01, 2019 at 02:14:23PM +0100, Will Deacon wrote:
>> On Thu, Sep 26, 2019 at 10:43:38PM +0100, Vincenzo Frascino wrote:
>>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>>> index 37c610963eee..0e5beb928af5 100644
>>> --- a/arch/arm64/Kconfig
>>> +++ b/arch/arm64/Kconfig
>>> @@ -110,7 +110,7 @@ config ARM64
>>> select GENERIC_STRNLEN_USER
>>> select GENERIC_TIME_VSYSCALL
>>> select GENERIC_GETTIMEOFDAY
>>> - select GENERIC_COMPAT_VDSO if (!CPU_BIG_ENDIAN && COMPAT)
>>> + select GENERIC_COMPAT_VDSO if (!CPU_BIG_ENDIAN && COMPAT && COMPATCC_IS_ARM_GCC)
>>> select HANDLE_DOMAIN_IRQ
>>> select HARDIRQS_SW_RESEND
>>> select HAVE_PCI
>>> @@ -313,6 +313,9 @@ config KASAN_SHADOW_OFFSET
>>> default 0xeffffff900000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
>>> default 0xffffffffffffffff
>>>
>>> +config COMPATCC_IS_ARM_GCC
>>> + def_bool $(success,$(COMPATCC) --version | head -n 1 | grep -q "arm-.*-gcc")
>>
>> I've seen toolchains where the first part of the tuple is "armv7-", so they
>> won't get detected here. However, do we really need to detect this? If
>> somebody passes a duff compiler, then the build will fail in the same way as
>> if they passed it to CROSS_COMPILE=.
>
> Not sure what happens if we pass an aarch64 compiler. Can we end up with
> a 64-bit compat vDSO?
>

I agree with Catalin here. The problem is not only when you pass and aarch64
toolchain but even an x86 and so on.

If the problem is related to armv7- we can change the rule as "arm.*-gcc" which
should detect them as well. Do you know what is the triple that an armv7-
toolchain prints?

--
Regards,
Vincenzo