Subject: Re: [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects

From: Daniel Axtens <[email-masked]>
Date: Fri, 11 Jan 2019 01:45:23 +1100

Christophe Leroy <[email-masked]> writes:

> Le 10/01/2019 à 02:42, Joel Stanley a écrit :
>> From: Daniel Axtens <[email-masked]>
>> 
>> All 64-bit objects need to specify the flag to be compiled correctly, we
>> just don't need it for 32-bit objects. GCC just ignored it, but clang
>> doesn't.
>> 
>> Link: https://github.com/ClangBuiltLinux/linux/issues/240
>> Signed-off-by: Daniel Axtens <[email-masked]>
>> Signed-off-by: Joel Stanley <[email-masked]>
>> ---
>>   arch/powerpc/kernel/vdso32/Makefile | 14 ++++++++++++++
>>   1 file changed, 14 insertions(+)
>> 
>> diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
>> index 50112d4473bb..6bd41756e0c7 100644
>> --- a/arch/powerpc/kernel/vdso32/Makefile
>> +++ b/arch/powerpc/kernel/vdso32/Makefile
>> @@ -34,6 +34,20 @@ obj-y += vdso32_wrapper.o
>>   extra-y += vdso32.lds
>>   CPPFLAGS_vdso32.lds += -P -C -Upowerpc
>>   
>> +# clang refuses to accept -mabi=elfv1 for when using the
>> +# 64-bit target in 32-bit mode
>> +ifdef CONFIG_CC_IS_CLANG
>
> If -mabi=elfv1 is unneeded even for GCC, why depend on CLANG ?
>
>> +ifdef CONFIG_PPC64
>> +AFLAGS_REMOVE_getcpu.o += -mabi=elfv1
>> +endif
>
> Why only this one is inside the ifdef ? powerpc Makefile only set 
> -mabi=elfv1 when CONFIG_PPC64 is set, so all objects should be handled 
> the same way.
>
> And would it harm just doing it all the time, regardless of CONFIG_PPC64 ?

I designed the patch to mirror some code earlier on, and to be
conservative in what it did. I have no issue with it being restructured,
but I probably won't have the time to do it for a month or so. I'm very
happy for you or Joel to rework it and to test any resulting patches.

Regards,
Daniel

>
> Christophe
>
>> +AFLAGS_REMOVE_sigtramp.o += -mabi=elfv1
>> +AFLAGS_REMOVE_gettimeofday.o += -mabi=elfv1
>> +AFLAGS_REMOVE_datapage.o += -mabi=elfv1
>> +AFLAGS_REMOVE_cacheflush.o += -mabi=elfv1
>> +AFLAGS_REMOVE_note.o += -mabi=elfv1
>> +endif
>> +
>> +
>>   # Force dependency (incbin is bad)
>>   $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
>>   
>>