Re: [PATCH v1 0/3] objtool build improvements

From: Nick Desaulniers
Date: Fri Nov 18 2022 - 12:47:14 EST


On Thu, Nov 17, 2022 at 2:03 PM Ian Rogers <irogers@xxxxxxxxxx> wrote:
>
> Install libsubcmd and then get headers from there, this avoids
> inadvertent dependencies on things in tools/lib. Fix V=1
> support. Clean up how HOSTCC is used to override CC to avoid CFLAGS
> being set for say gcc, and then CC being overridden to clang. Support
> HOSTCFLAGS as a make option.

Hi Ian,
Thanks for the patch set! I'm particularly interested in fixing the
plumbing of HOSTCFLAGS into objtool properly.

Does this patch series depend on recent work you were doing to perf
and libsubcmd? When I apply it to mainline (84368d882b96) or
linux-next (20221118), I observe build failures with it.

```
/bin/sh: line 1: cd:
/android0/kernel-all/tools/objtool/libsubcmd/tools/objtool/: No such
file or directory
../../scripts/Makefile.include:17: *** output directory
"/android0/kernel-all/tools/objtool/libsubcmd/tools/objtool/" does not
exist. Stop.
make[3]: *** [Makefile:82:
/android0/kernel-all/tools/objtool/libsubcmd/libsubcmd.a] Error 2
make[3]: *** Waiting for unfinished jobs....
builtin-check.c:6:10: fatal error: 'subcmd/parse-options.h' file not found
#include <subcmd/parse-options.h>
^~~~~~~~~~~~~~~~~~~~~~~~
```
Which I also observe when just doing a regular kernel build and not
just tools/objtool/.

I tried to apply other recent series first, like
https://lore.kernel.org/lkml/20221109184914.1357295-1-irogers@xxxxxxxxxx/
https://lore.kernel.org/linux-perf-users/20221116072211.2837834-2-irogers@xxxxxxxxxx/
but wasn't quite able to get the result to build.

My plan to validate HOSTCFLAGS is:
$ make LLVM=1 -j128 mrproper defconfig tools/objtool HOSTCFLAGS=-Os
V=1 1> before.txt
$ <apply patch series>
$ make LLVM=1 -j128 mrproper defconfig tools/objtool HOSTCFLAGS=-Os
V=1 1> after.txt
$ meld before.txt after.txt

>
> Ian Rogers (3):
> objtool: Install libsubcmd in build
> objtool: Properly support make V=1
> objtool: Alter how HOSTCC is forced
>
> tools/objtool/Build | 2 --
> tools/objtool/Makefile | 68 +++++++++++++++++++++++++++++-------------
> 2 files changed, 48 insertions(+), 22 deletions(-)
>
> --
> 2.38.1.584.g0f3c55d4c2-goog
>


--
Thanks,
~Nick Desaulniers