LinuxPPC-Dev Archive on lore.kernel.org
 help / Atom feed
* [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects
@ 2019-01-10  1:42 Joel Stanley
  2019-01-10  7:10 ` Christophe Leroy
  0 siblings, 1 reply; 4+ messages in thread
From: Joel Stanley @ 2019-01-10  1:42 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Nick Desaulniers, Daniel Axtens

From: Daniel Axtens <dja@axtens.net>

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 <dja@axtens.net>
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
 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
+ifdef CONFIG_PPC64
+AFLAGS_REMOVE_getcpu.o += -mabi=elfv1
+endif
+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
 
-- 
2.19.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects
  2019-01-10  1:42 [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects Joel Stanley
@ 2019-01-10  7:10 ` Christophe Leroy
  2019-01-10 14:45   ` Daniel Axtens
  2019-01-10 15:28   ` Segher Boessenkool
  0 siblings, 2 replies; 4+ messages in thread
From: Christophe Leroy @ 2019-01-10  7:10 UTC (permalink / raw)
  To: Joel Stanley, linuxppc-dev; +Cc: Nick Desaulniers, Daniel Axtens



Le 10/01/2019 à 02:42, Joel Stanley a écrit :
> From: Daniel Axtens <dja@axtens.net>
> 
> 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 <dja@axtens.net>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
>   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 ?

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects
  2019-01-10  7:10 ` Christophe Leroy
@ 2019-01-10 14:45   ` Daniel Axtens
  2019-01-10 15:28   ` Segher Boessenkool
  1 sibling, 0 replies; 4+ messages in thread
From: Daniel Axtens @ 2019-01-10 14:45 UTC (permalink / raw)
  To: Christophe Leroy, Joel Stanley, linuxppc-dev; +Cc: Nick Desaulniers

Christophe Leroy <christophe.leroy@c-s.fr> writes:

> Le 10/01/2019 à 02:42, Joel Stanley a écrit :
>> From: Daniel Axtens <dja@axtens.net>
>> 
>> 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 <dja@axtens.net>
>> Signed-off-by: Joel Stanley <joel@jms.id.au>
>> ---
>>   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
>>   
>> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects
  2019-01-10  7:10 ` Christophe Leroy
  2019-01-10 14:45   ` Daniel Axtens
@ 2019-01-10 15:28   ` Segher Boessenkool
  1 sibling, 0 replies; 4+ messages in thread
From: Segher Boessenkool @ 2019-01-10 15:28 UTC (permalink / raw)
  To: Christophe Leroy
  Cc: Nick Desaulniers, linuxppc-dev, Joel Stanley, Daniel Axtens

On Thu, Jan 10, 2019 at 08:10:43AM +0100, Christophe Leroy wrote:
> Le 10/01/2019 à 02:42, Joel Stanley a écrit :
> >From: Daniel Axtens <dja@axtens.net>
> >
> >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.

> >+# 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 ?

It is nonsensical to specify this flag when compiling -m32.  Apparently
clang uses -mabi= to set the current ABI, which isn't quite correct
(although of course the name suggests that's what it does ;-) )

'-mabi=ABI-TYPE'
     Extend the current ABI with a particular extension, or remove such
     extension.  Valid values are 'altivec', 'no-altivec',
     'ibmlongdouble', 'ieeelongdouble', 'elfv1', 'elfv2'.

(It is harmless to use it with -m32 on GCC, because the option just sets a
flag, internally).

> >+ifdef CONFIG_PPC64
> >+AFLAGS_REMOVE_getcpu.o += -mabi=elfv1
> >+endif

Don't remove it, just never set it where not needed?


Segher

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-10  1:42 [PATCH] powerpc/vdso32: Drop -mabi=elfv1 for 32 bit objects Joel Stanley
2019-01-10  7:10 ` Christophe Leroy
2019-01-10 14:45   ` Daniel Axtens
2019-01-10 15:28   ` Segher Boessenkool

LinuxPPC-Dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linuxppc-dev/0 linuxppc-dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linuxppc-dev linuxppc-dev/ https://lore.kernel.org/linuxppc-dev \
		linuxppc-dev@lists.ozlabs.org linuxppc-dev@ozlabs.org linuxppc-dev@archiver.kernel.org
	public-inbox-index linuxppc-dev


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.ozlabs.lists.linuxppc-dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox