Re: [PATCH v4 2/2] x86/purgatory: use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS
On Fri, 26 Jul 2019, Thomas Gleixner wrote: Ping... > On Thu, 25 Jul 2019, Nick Desaulniers wrote: > > > KBUILD_CFLAGS is very carefully built up in the top level Makefile, > > particularly when cross compiling or using different build tools. > > Resetting KBUILD_CFLAGS via := assignment is an antipattern. > > > > The comment above the reset mentions that -pg is problematic. Other > > Makefiles use `CFLAGS_REMOVE_file.o = $(CC_FLAGS_FTRACE)` when > > CONFIG_FUNCTION_TRACER is set. Prefer that pattern to wiping out all of > > the important KBUILD_CFLAGS then manually having to re-add them. Seems > > also that __stack_chk_fail references are generated when using > > CONFIG_STACKPROTECTOR or CONFIG_STACKPROTECTOR_STRONG. > > Looking at the resulting build flags. Most stuff looks correct but there > are a few which need to be looked at twice. > > removes: > > -ffreestanding > -fno-builtin > -fno-zero-initialized-in-bss > > changes: > > -mcmodel=large to -mcmodel=kernel > > adds: > > -mindirect-branch-register > -mindirect-branch=thunk-extern > > The latter makes me nervous. That probably wants to have retpoline disabled > as well. It's not having an instance right now, but ... > > Thanks, > > tglx >
Re: [PATCH v4 2/2] x86/purgatory: use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS
On Thu, 25 Jul 2019, Nick Desaulniers wrote: > KBUILD_CFLAGS is very carefully built up in the top level Makefile, > particularly when cross compiling or using different build tools. > Resetting KBUILD_CFLAGS via := assignment is an antipattern. > > The comment above the reset mentions that -pg is problematic. Other > Makefiles use `CFLAGS_REMOVE_file.o = $(CC_FLAGS_FTRACE)` when > CONFIG_FUNCTION_TRACER is set. Prefer that pattern to wiping out all of > the important KBUILD_CFLAGS then manually having to re-add them. Seems > also that __stack_chk_fail references are generated when using > CONFIG_STACKPROTECTOR or CONFIG_STACKPROTECTOR_STRONG. Looking at the resulting build flags. Most stuff looks correct but there are a few which need to be looked at twice. removes: -ffreestanding -fno-builtin -fno-zero-initialized-in-bss changes: -mcmodel=large to -mcmodel=kernel adds: -mindirect-branch-register -mindirect-branch=thunk-extern The latter makes me nervous. That probably wants to have retpoline disabled as well. It's not having an instance right now, but ... Thanks, tglx