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-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 25 Jun 2023 03:07:09 +0800
From:   Xi Ruoyao <xry111@...111.site>
To:     WANG Xuerui <kernel@...0n.name>,
        Huacai Chen <chenhuacai@...nel.org>
Cc:     WANG Rui <wangrui@...ngson.cn>, loongarch@...ts.linux.dev,
        linux-kbuild@...r.kernel.org, llvm@...ts.linux.dev,
        linux-kernel@...r.kernel.org, WANG Xuerui <git@...0n.name>
Subject: Re: [PATCH v2 7/9] LoongArch: Tweak CFLAGS for Clang compatibility

On Sun, 2023-06-25 at 02:40 +0800, WANG Xuerui wrote:
> From: WANG Xuerui <git@...0n.name>
> 
> Now the arch code is mostly ready for LLVM/Clang consumption, it is
> time
> to re-organize the CFLAGS a little to actually enable the LLVM build.
> 
> In particular, -mexplicit-relocs and -mdirect-extern-access are not
> necessary nor supported on Clang; feature detection via cc-option
> would
> not work, because that way the broken combo of "new GNU as + old GCC"
> would seem to get "fixed", but actually produce broken kernels.
> Explicitly depending on CONFIG_CC_IS_CLANG is thus necessary to not
> regress UX for those building their own kernels.
> 
> A build with !RELOCATABLE && !MODULE is confirmed working within a
> QEMU
> environment; support for the two features are currently blocked on
> LLVM/Clang, and will come later.
> 
> Signed-off-by: WANG Xuerui <git@...0n.name>
> ---
>  arch/loongarch/Makefile | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile
> index 366771016b99..82c619791a63 100644
> --- a/arch/loongarch/Makefile
> +++ b/arch/loongarch/Makefile
> @@ -51,7 +51,9 @@ LDFLAGS_vmlinux                       += -static -n
> -nostdlib
>  
>  # When the assembler supports explicit relocation hint, we must use it.
>  # GCC may have -mexplicit-relocs off by default if it was built with an old
> -# assembler, so we force it via an option.
> +# assembler, so we force it via an option. For LLVM/Clang the desired behavior
> +# is the default

Actually -mdirect-extern-access is also a part of the desired behavior.
Though it's not strictly needed, it is a micro-optimization to avoid
unnecessary GOT accesses.  Maybe with Clang the LTO pass can optimize
them away but I'm not sure.

Ok with the flags change (for now) but the comment can be more accurate.

> , and the flag is not supported, so don't pass it if Clang is
> +# being used.
>  #
>  # When the assembler does not supports explicit relocation hint, we can't use
>  # it.  Disable it if the compiler supports it.
> @@ -61,8 +63,10 @@ LDFLAGS_vmlinux                      += -static -n -nostdlib
>  # combination of a "new" assembler and "old" compiler is not supported.  Either
>  # upgrade the compiler or downgrade the assembler.
>  ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS
> +ifndef CONFIG_CC_IS_CLANG
>  cflags-y                       += -mexplicit-relocs
>  KBUILD_CFLAGS_KERNEL           += -mdirect-extern-access
> +endif
>  else
>  cflags-y                       += $(call cc-option,-mno-explicit-relocs)
>  KBUILD_AFLAGS_KERNEL           += -Wa,-mla-global-with-pcrel

-- 
Xi Ruoyao <xry111@...111.site>
School of Aerospace Science and Technology, Xidian University

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ