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

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE2830d

4 messages, 4 authors, 2019-01-10 · open the first message on its own page

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

From: Joel Stanley <joel@jms.id.au>
Date: 2019-01-10 01:44:48

From: Daniel Axtens <redacted>

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

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

From: Christophe Leroy <hidden>
Date: 2019-01-10 07:12:23


Le 10/01/2019 à 02:42, Joel Stanley a écrit :
quoted hunk
From: Daniel Axtens <redacted>

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 <redacted>
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 ?
quoted hunk
+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
quoted hunk
+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
  

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

From: Daniel Axtens <hidden>
Date: 2019-01-10 14:47:09

Christophe Leroy [off-list ref] writes:
Le 10/01/2019 à 02:42, Joel Stanley a écrit :
quoted
From: Daniel Axtens <redacted>

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 <redacted>
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 ?
quoted
+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
quoted
+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
  

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

From: Segher Boessenkool <hidden>
Date: 2019-01-10 16:45:27

On Thu, Jan 10, 2019 at 08:10:43AM +0100, Christophe Leroy wrote:
Le 10/01/2019 à 02:42, Joel Stanley a écrit :
quoted
From: Daniel Axtens <redacted>

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.
quoted
+# 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).
quoted
+ifdef CONFIG_PPC64
+AFLAGS_REMOVE_getcpu.o += -mabi=elfv1
+endif
Don't remove it, just never set it where not needed?


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help