lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1690871446-23713-1-git-send-email-yangtiezhu@loongson.cn>
Date:   Tue,  1 Aug 2023 14:30:46 +0800
From:   Tiezhu Yang <yangtiezhu@...ngson.cn>
To:     Huacai Chen <chenhuacai@...nel.org>,
        Nathan Chancellor <nathan@...nel.org>,
        Nick Desaulniers <ndesaulniers@...gle.com>
Cc:     loongarch@...ts.linux.dev, llvm@...ts.linux.dev,
        linux-kernel@...r.kernel.org, loongson-kernel@...ts.loongnix.cn
Subject: [PATCH] LoongArch: Error out if clang version is less than 17.0.0

On my test machine, the clang version is 16.0.4, when build kernel
with clang:

  make CC=clang loongson3_defconfig
  make CC=clang

there exist many errors such as:

  clang-16: error: argument unused during compilation: '-mabi=lp64s'
  error: unknown register name 'a0' in asm
  error: unknown register name 't0' in asm

the above issues have been fixed in the upstream llvm project recently,
it works well when update clang version to 17.0.0:

  make CC=clang loongson3_defconfig
  make CC=clang menuconfig (set CONFIG_MODULES=n and CONFIG_RELOCATABLE=n)
  make CC=clang

thus 17.0.0 is the minimal clang version to build kernel on LoongArch,
it is better to error out if clang version is less than 17.0.0, then
we can do the right thing to update clang version and avoid wasting
time to analysis kernel errors.

By the way, the clang 17.0.0 still have some issues to build kernel on
LoongArch, you need to unset CONFIG_MODULES and CONFIG_RELOCATABLE to
avoid build errors. Additionally, if you want a workable kernel, some
modules should be set as y instead of m if CONFIG_MODULES=n.

Link: https://github.com/ClangBuiltLinux/linux/issues/1787
Signed-off-by: Tiezhu Yang <yangtiezhu@...ngson.cn>
---
 arch/loongarch/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile
index b1e5db5..f07f62a 100644
--- a/arch/loongarch/Makefile
+++ b/arch/loongarch/Makefile
@@ -10,6 +10,12 @@ KBUILD_DEFCONFIG := loongson3_defconfig
 image-name-y			:= vmlinux
 image-name-$(CONFIG_EFI_ZBOOT)	:= vmlinuz
 
+ifdef CONFIG_CC_IS_CLANG
+  ifneq ($(call clang-min-version, 170000),y)
+    $(error Sorry, you need a newer clang version >= 17.0.0)
+  endif
+endif
+
 ifndef CONFIG_EFI_STUB
 KBUILD_IMAGE	:= $(boot)/vmlinux.elf
 else
-- 
2.1.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ