vdso32: Invoke clang with correct path to GCC toolchain
authorDaniel Mentz <danielmentz@google.com>
Thu, 21 Feb 2019 00:59:14 +0000 (16:59 -0800)
committerBruno Martins <bgcngm@gmail.com>
Fri, 20 Oct 2023 17:09:54 +0000 (18:09 +0100)
Clang needs to have access to a GCC toolchain which we advertise using
the command line option --gcc-toolchain=. Clang previously picked the
wrong toolchain which resulted in the following error message:

/..//bin/as: unrecognized option '-EL'

Bug: 123422077
Signed-off-by: Daniel Mentz <danielmentz@google.com>
Change-Id: I3e339dd446b71e2c75eb9e2c186eba715b3771cd

arch/arm64/Makefile
arch/arm64/kernel/vdso32/Makefile

index f0584a235f6a8034beb1413a94dbeb524c9cce6b..6df6a76dbce95b6b8579c91d8a2ae98884397699 100644 (file)
@@ -76,6 +76,10 @@ ifeq ($(CONFIG_COMPAT_VDSO), y)
   else ifeq ($(cc-name),clang)
     export CLANG_TRIPLE_ARM32 ?= $(CROSS_COMPILE_ARM32)
     export CLANG_TARGET_ARM32 := --target=$(notdir $(CLANG_TRIPLE_ARM32:%-=%))
+    export GCC_TOOLCHAIN32_DIR := $(dir $(shell which $(CROSS_COMPILE_ARM32)ld))
+    export GCC_TOOLCHAIN32 := $(realpath $(GCC_TOOLCHAIN32_DIR)/..)
+    export CLANG_PREFIX32 := --prefix=$(GCC_TOOLCHAIN32_DIR)
+    export CLANG_GCC32_TC := --gcc-toolchain=$(GCC_TOOLCHAIN32)
     export CONFIG_VDSO32 := y
     vdso32 := -DCONFIG_VDSO32=1
   else ifeq ($(shell which $(CROSS_COMPILE_ARM32)$(cc-name) 2> /dev/null),)
index 837e877a326be298e432b05d5af2fdefc6f24222..ceff67976e633ae0b246598d17d6f8e107f81160 100644 (file)
@@ -5,7 +5,7 @@
 # A mix between the arm64 and arm vDSO Makefiles.
 
 ifeq ($(cc-name),clang)
-  CC_ARM32 := $(CC) $(CLANG_TARGET_ARM32) -no-integrated-as
+  CC_ARM32 := $(CC) $(CLANG_TARGET_ARM32) -no-integrated-as $(CLANG_GCC32_TC) $(CLANG_PREFIX32)
 else
   CC_ARM32 := $(CROSS_COMPILE_ARM32)$(cc-name)
 endif