On Wed, Sep 1, 2021 at 2:35 AM Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > On Tue, Aug 31, 2021 at 04:39:57PM +0900, Masahiro Yamada wrote: > > For CONFIG_LTO_CLANG=y, the objtool processing is not possible at the > > compilation, hence postponed by the link time. > > > > Reuse $(cmd_objtool) for CONFIG_LTO_CLANG=y by defining objtool-enabled > > properly. > > > > For CONFIG_LTO_CLANG=y: > > > > objtool-enabled is off for %.o compilation > > objtool-enabled is on for %.lto link > > > > For CONFIG_LTO_CLANG=n: > > > > objtool-enabled is on for %.o compilation > > (but, it depends on OBJECT_FILE_NON_STANDARD) > > > > Set part-of-module := y for %.lto.o to avoid repeating --module. > > > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > > --- > > > > scripts/Makefile.build | 28 +++++++++++++++++----------- > > 1 file changed, 17 insertions(+), 11 deletions(-) > > > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > > index 21b55f37a23f..afc906cd7256 100644 > > --- a/scripts/Makefile.build > > +++ b/scripts/Makefile.build > > @@ -236,20 +236,26 @@ objtool_args = \ > > $(if $(CONFIG_X86_SMAP), --uaccess) \ > > $(if $(CONFIG_FTRACE_MCOUNT_USE_OBJTOOL), --mcount) > > > > -ifndef CONFIG_LTO_CLANG > > +cmd_objtool = $(if $(objtool-enabled), ; $(objtool) $(objtool_args) $@) > > +cmd_gen_objtooldep = $(if $(objtool-enabled), { echo ; echo '$@: $$(wildcard $(objtool))' ; } >> $(dot-target).cmd) > > + > > +endif # CONFIG_STACK_VALIDATION > > + > > +ifdef CONFIG_LTO_CLANG > > + > > +# Skip objtool for LLVM bitcode > > +$(obj)/%o: objtool-enabled := > > Is this intentionally "%o" instead of "%.o"? Good catch. No, it is not intentional. I will fix "%o" to "%.o" > (And it later overridden by the "%.lto.o" rule? No, opposite. While building %.lto.o, we want to set objtool-enabled. But, we want to cancel it for %.o -- Best Regards Masahiro Yamada