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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 6 Jan 2021 16:27:34 -0800 From: Fangrui Song <maskray@...gle.com> To: Nick Desaulniers <ndesaulniers@...gle.com> Cc: Masahiro Yamada <masahiroy@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>, Michal Marek <michal.lkml@...kovi.net>, linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org, Kees Cook <keescook@...omium.org>, Tony Luck <tony.luck@...el.com>, Dmitry Vyukov <dvyukov@...gle.com>, Michael Ellerman <mpe@...erman.id.au>, Joe Perches <joe@...ches.com>, Joel Fernandes <joel@...lfernandes.org>, Daniel Axtens <dja@...ens.net>, Arvind Sankar <nivedita@...m.mit.edu>, Andy Shevchenko <andriy.shevchenko@...ux.intel.com>, Alexandru Ardelean <alexandru.ardelean@...log.com>, Yury Norov <yury.norov@...il.com>, x86@...nel.org, "H . Peter Anvin" <hpa@...or.com>, Ard Biesheuvel <ardb@...nel.org>, "Paul E . McKenney" <paulmck@...nel.org>, Daniel Kiper <daniel.kiper@...cle.com>, Bruce Ashfield <bruce.ashfield@...il.com>, Marco Elver <elver@...gle.com>, Vamshi K Sthambamkadi <vamshi.k.sthambamkadi@...il.com>, Andi Kleen <ak@...e.de>, Linus Torvalds <torvalds@...ux-foundation.org>, Dávid Bolvanský <david.bolvansky@...il.com>, Eli Friedman <efriedma@...cinc.com> Subject: Re: [PATCH 4/4] x86: don't build CONFIG_X86_32 as -ffreestanding On 2020-08-17, Nick Desaulniers wrote: >-ffreestanding typically inhibits "libcall optimizations" where calls to >certain library functions can be replaced by the compiler in certain >cases to calls to other library functions that may be more efficient. >This can be problematic for embedded targets that don't provide full >libc implementations. > >-ffreestanding inhibits all such optimizations, which is the safe >choice, but generally we want the optimizations that are performed. The >Linux kernel does implement a fair amount of libc routines. Instead of >-ffreestanding (which makes more sense in smaller images like kexec's >purgatory image), prefer -fno-builtin-* flags to disable the compiler >from emitting calls to functions which may not be defined. > >If you see a linkage failure due to a missing symbol that's typically >defined in a libc, and not explicitly called from the source code, then >the compiler may have done such a transform. You can either implement >such a function (ie. in lib/string.c) or disable the transform outright >via -fno-builtin-* flag (where * is the name of the library routine, ie. >-fno-builtin-bcmp). > >i386_defconfig build+boot tested with GCC and Clang. Removes a pretty >old TODO from the codebase. > >Fixes: 6edfba1b33c7 ("x86_64: Don't define string functions to builtin") >Suggested-by: Arvind Sankar <nivedita@...m.mit.edu> >Signed-off-by: Nick Desaulniers <ndesaulniers@...gle.com> >Reviewed-by: Kees Cook <keescook@...omium.org> >--- > arch/x86/Makefile | 3 --- > 1 file changed, 3 deletions(-) > >diff --git a/arch/x86/Makefile b/arch/x86/Makefile >index 4346ffb2e39f..2383a96cf4fd 100644 >--- a/arch/x86/Makefile >+++ b/arch/x86/Makefile >@@ -80,9 +80,6 @@ ifeq ($(CONFIG_X86_32),y) > # CPU-specific tuning. Anything which can be shared with UML should go here. > include arch/x86/Makefile_32.cpu > KBUILD_CFLAGS += $(cflags-y) >- >- # temporary until string.h is fixed >- KBUILD_CFLAGS += -ffreestanding > else > BITS := 64 > UTS_MACHINE := x86_64 >-- >2.28.0.220.ged08abb693-goog Reviewed-by: Fangrui Song <maskray@...gle.com> But dropping -ffreestanding causes compiler produced declarations which require https://lore.kernel.org/lkml/20210107001739.1321725-1-maskray@google.com/ "x86: Treat R_386_PLT32 as R_386_PC32" as a prerequisite to build with trunk Clang https://github.com/ClangBuiltLinux/linux/issues/1210 Since there have been more than 4 months, it seems that something else regressed the non -ffreestanding build. Maybe another -fno-builtin-* is needed somewhere.
Powered by blists - more mailing lists