Messages in this thread |  | | From | Kees Cook <> | Date | Thu, 22 Feb 2018 13:22:37 -0800 | Subject | Re: [PATCH v3] kconfig.h: Include compiler types to avoid missed struct attributes |
| |
On Thu, Feb 22, 2018 at 1:07 PM, Rasmus Villemoes <rasmus.villemoes@prevas.dk> wrote: > On 2018-02-22 19:04, Linus Torvalds wrote: >> >> Lookie here (in a fully built tree): >> >> find . -name '*.o.cmd' | >> xargs grep -L linux/compiler_types.h | >> xargs grep -l linux/kconfig.h | >> while read i; do >> j=$(echo $i | sed 's/\.o.cmd$/\.c/' | sed 's:/\.:/:'); >> test -f $j && echo $j; >> done >> >> shows that a number of files don't end up depending on that header >> file, even though it's included (that "grep -l linux/kconfig,h" >> triggers on the command itself having that "-include linux/kconfig.h" >> line). >> >> It looks like "gcc -M" just doesn't list any files that get included >> on the command line with "-include". > > It does, both per the documentation and testing it. But fixdep > explicitly removes include/linux/kconfig.h along with > include/generated/autoconf.h and a few others. So when you rebuilt after > adding the #include to kconfig.h, I think nothing actually got built, > and no new .o.cmd files got generated. > > Doing a clean build does make include/linux/compiler_{types,gcc}.h and > the various fake include/config/.... they "depend" on appear in e.g. > lib/.clz_tab.o.cmd.
I'm seeing the same. If I do:
$ find . -name '*.o.cmd' | xargs rm $ make allmodconfig $ make -j... ... $ find-command-above...
I get no hits. And doing spot-testing shows dep changes are detected:
$ ls -l fs/nfsd/nfs4xdr.o -rw-rw-r-- 1 kees kees 276088 Feb 22 13:15 fs/nfsd/nfs4xdr.o $ make fs/nfsd/nfs4xdr.o ...generated-files-only... $ ls -l fs/nfsd/nfs4xdr.o -rw-rw-r-- 1 kees kees 276088 Feb 22 13:15 fs/nfsd/nfs4xdr.o $ touch include/linux/compiler_types.h $ make fs/nfsd/nfs4xdr.o ...various... CC [M] fs/nfsd/nfs4xdr.o $ ls -l fs/nfsd/nfs4xdr.o -rw-rw-r-- 1 kees kees 276088 Feb 22 13:21 fs/nfsd/nfs4xdr.o
Am I missing something?
> The whole point of fixdep and the include/config hierarchy is to be able > to remove the dependency on autoconf.h, but I'm not sure I understand > why kconfig.h itself is also forcibly removed.
Is there a mode where we're now rebuilding too much?
-Kees
-- Kees Cook Pixel Security
|  |