On Tue, Mar 5, 2019 at 7:43 AM Robin Meijboom <robin@xxxxxxxxxxxxx> wrote: > > On 28-02-19 23:29, Josh Poimboeuf wrote: > > On Thu, Feb 28, 2019 at 09:12:19PM +0100, Robin Meijboom wrote: > >> Hi Masahiro, > >> > >> On 28-02-19 14:36, Masahiro Yamada wrote: > >>> On Fri, Feb 15, 2019 at 11:15 AM Robin Meijboom <robin@xxxxxxxxxxxxx> wrote: > >>>> > >>>> Make clean currently does not remove the generated files for objtool: > >>>> tools/objtool/objtool, tools/objtool/fixdep, and > >>>> tools/objtool/arch/x86/lib/inat-tables.c. > >>>> > >>>> Clean these files up as part of make clean. > >>>> > >>>> Fixes: b9ab5ebb14ec ("objtool: Add CONFIG_STACK_VALIDATION option") and > >>>> bug report 199485 (https://bugzilla.kernel.org/show_bug.cgi?id=199485). > >>>> > >>>> Signed-off-by: Robin Meijboom <robin@xxxxxxxxxxxxx> > >>>> --- > >>>> In the discussions I didn't find a reason for keeping the files, so I > >>>> assume it is an oversight. Otherwise I would have expected them to be > >>>> removed at least by make distconfig (which they are not). > >>>> > >>>> Tested by compiling, cleaning, compiling again, and booting on x86_64. > >>>> > >>>> diff --git a/Makefile b/Makefile > >>>> index 141653226f3c..81a8149a805f 100644 > >>>> --- a/Makefile > >>>> +++ b/Makefile > >>>> @@ -1328,6 +1328,8 @@ endif # CONFIG_MODULES > >>>> > >>>> # Directories & files removed with 'make clean' > >>>> CLEAN_DIRS += $(MODVERDIR) include/ksym > >>>> +CLEAN_FILES += tools/objtool/objtool tools/objtool/fixdep \ > >>>> + tools/objtool/arch/$(ARCH)/lib/inat-tables.c > >>>> > >>>> # Directories & files removed with 'make mrproper' > >>>> MRPROPER_DIRS += include/config usr/include include/generated \ > >>>> > >>> > >>> > >>> > > Hi Josh, > > Thanks for your feedback. > > >>> I see the same artifacts are cleaned up by tools/objtool/Makefile: > >>> > >>> https://github.com/torvalds/linux/blob/v5.0-rc7/tools/objtool/Makefile#L59 > >>> > >>> > >>> So, this patch proves the 'clean' target > >>> in tools/objtool/Makefile is useless. > >>> > >> > >> True. I believe this is because kbuild does not descend into that directory > >> as it does with the other directories. It works if you issue 'make clean' > >> from tools or tools/objtool. > > > > Right. Objtool is intended to be a standalone tool, though it's > > currently a bit kernel-specific. So a clean target within tools/objtool > > makes sense I think. > > > > Clear. Currently objtool is also cleaned by the 'clean' target in > tools/Makefile. Would the above suggest that should be removed, or is it > fine as long as it is not in the top-level Makefile? > > >>> BTW, 'make clean' must keep all the generated files > >>> that are needed to compile external modules. > >>> > >>> I guess cleaning objtool is wrong. > >> > >> I was considering the same. However, I did not find this in the discussions, > >> and as you pointed out the authors have included these items under the > >> 'make clean' target in tools/objtool/Makefile (which does not work for the > >> above reason). > >> > >> Additionally, if cleaning objtool is wrong, I would expect it to be at > >> least included in 'make distclean' or 'make mrproper' target (which it is > >> not). > >> > >> Josh, feel free to comment on the above. > > > > Objtool is needed for module builds, so it should *not* be removed with > > 'make clean' from the top-level directory. > > > > I guess it makes sense to remove it for mrproper (and by extension, > > distclean). Maybe mrproper could use tools/objtool's clean target > > somehow. > > I agree that cleaning the objtool's artifacts by 'make mrproper' is the right thing to do. But, Kbuild does not care under tools/ since we expect standalone tools there, and the tools build system is completely different stuff, sadly. > Since we have to use an exception anyway, my initial thought was to > use the 'standard exception' and include the artifacts in > MRPROPER_FILES. However, your idea is of course to _not_ have to > update the top-level Makefile every time you make a change to objtool > artifacts. I'm thinking about an elegant solution. The most elegant solution would be to move tools/objtool to scripts/objtool. I just posted the series. https://lore.kernel.org/patchwork/patch/1047807/ https://lore.kernel.org/patchwork/patch/1047808/ https://lore.kernel.org/patchwork/patch/1047809/ -- Best Regards Masahiro Yamada