Kees Cook
unread,Feb 16, 2022, 7:28:47 PM2/16/22Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Jeff Dike, Kees Cook, Richard Weinberger, Anton Ivanov, Masahiro Yamada, Nick Desaulniers, Nathan Chancellor, David Gow, linu...@lists.infradead.org, linux-...@vger.kernel.org, linux-k...@vger.kernel.org, kuni...@googlegroups.com, ll...@lists.linux.dev, linux-...@vger.kernel.org, x...@kernel.org, linux-h...@vger.kernel.org
Add x86-64 target for Clang+um and update user-offsets.c to use
Clang-friendly assembler, similar to the fix from commit cf0c3e68aa81
("kbuild: fix asm-offset generation to work with clang").
This lets me run KUnit tests with Clang:
$ ./tools/testing/kunit/kunit.py config --make_options LLVM=1
...
$ ./tools/testing/kunit/kunit.py run --make_options LLVM=1
...
Cc: Jeff Dike <
jd...@addtoit.com>
Cc: Richard Weinberger <
ric...@nod.at>
Cc: Anton Ivanov <
anton....@cambridgegreys.com>
Cc: Masahiro Yamada <
masa...@kernel.org>
Cc: Nick Desaulniers <
ndesau...@google.com>
Cc: Nathan Chancellor <
nat...@kernel.org>
Cc: David Gow <
davi...@google.com>
Cc:
linu...@lists.infradead.org
Cc:
linux-...@vger.kernel.org
Cc:
linux-k...@vger.kernel.org
Cc:
kuni...@googlegroups.com
Cc:
ll...@lists.linux.dev
Signed-off-by: Kees Cook <
kees...@chromium.org>
---
arch/x86/um/user-offsets.c | 4 ++--
scripts/Makefile.clang | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/x86/um/user-offsets.c b/arch/x86/um/user-offsets.c
index bae61554abcc..d9071827b515 100644
--- a/arch/x86/um/user-offsets.c
+++ b/arch/x86/um/user-offsets.c
@@ -10,10 +10,10 @@
#include <asm/types.h>
#define DEFINE(sym, val) \
- asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+ asm volatile("\n.ascii \"->" #sym " %0 " #val "\"": : "i" (val))
#define DEFINE_LONGS(sym, val) \
- asm volatile("\n->" #sym " %0 " #val : : "i" (val/sizeof(unsigned long)))
+ asm volatile("\n.ascii \"->" #sym " %0 " #val "\"": : "i" (val/sizeof(unsigned long)))
void foo(void)
{
diff --git a/scripts/Makefile.clang b/scripts/Makefile.clang
index 51fc23e2e9e5..857b23de51c6 100644
--- a/scripts/Makefile.clang
+++ b/scripts/Makefile.clang
@@ -10,6 +10,7 @@ CLANG_TARGET_FLAGS_powerpc := powerpc64le-linux-gnu
CLANG_TARGET_FLAGS_riscv := riscv64-linux-gnu
CLANG_TARGET_FLAGS_s390 := s390x-linux-gnu
CLANG_TARGET_FLAGS_x86 := x86_64-linux-gnu
+CLANG_TARGET_FLAGS_um := x86_64-linux-gnu
CLANG_TARGET_FLAGS := $(CLANG_TARGET_FLAGS_$(SRCARCH))
ifeq ($(CROSS_COMPILE),)
--
2.30.2