All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Desaulniers <ndesaulniers@google.com>
To: John Hubbard <jhubbard@nvidia.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>, Tom Rix <trix@redhat.com>,
	 Jason Gunthorpe <jgg@nvidia.com>,
	LKML <linux-kernel@vger.kernel.org>,
	 clang-built-linux <llvm@lists.linux.dev>
Subject: Re: [PATCH v3] gen_compile_commands: handle multiple lines per .mod file
Date: Tue, 28 Jun 2022 11:45:05 -0700	[thread overview]
Message-ID: <CAKwvOd=FmKYse9NEvMt5MHev5wRzeZH6AcBd1uQEL5k0GLP+Zw@mail.gmail.com> (raw)
In-Reply-To: <20220628012353.13995-1-jhubbard@nvidia.com>

On Mon, Jun 27, 2022 at 6:24 PM John Hubbard <jhubbard@nvidia.com> wrote:
>
> scripts/clang-tools/gen_compile_commands.py incorrectly assumes that
> each .mod file only contains one line. That assumption was correct when
> the script was originally created, but commit 9413e7640564 ("kbuild:
> split the second line of *.mod into *.usyms") changed the .mod file
> format so that there is one entry per line, and potentially many lines.
>
> The problem can be reproduced by using Kbuild to generate
> compile_commands.json, like this:
>
>     make CC=clang compile_commands.json
>
> In many cases, the problem might be overlooked because many subsystems
> only have one line anyway. However, in some subsystems (Nouveau, with
> 762 entries, is a notable example) it results in skipping most of the
> subsystem.
>
> Fix this by fully processing each .mod file.
>
> Fixes: 9413e7640564 ("kbuild: split the second line of *.mod into *.usyms")
> Cc: Masahiro Yamada <masahiroy@kernel.org>
> Cc: Nick Desaulniers <ndesaulniers@google.com>

Thanks for the fix, John!
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>

> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
> ---
>
> Link to v2:
> https://lore.kernel.org/all/20220616021149.327587-1-jhubbard@nvidia.com/
>
> Changes since v2:
>
>   * Restored a blank line.
>
>   * Rewrote the commit description.
>
> thanks,
> John Hubbard
>
>
>  scripts/clang-tools/gen_compile_commands.py | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/clang-tools/gen_compile_commands.py b/scripts/clang-tools/gen_compile_commands.py
> index 1d1bde1fd45e..47da25b3ba7d 100755
> --- a/scripts/clang-tools/gen_compile_commands.py
> +++ b/scripts/clang-tools/gen_compile_commands.py
> @@ -157,10 +157,10 @@ def cmdfiles_for_modorder(modorder):
>              if ext != '.ko':
>                  sys.exit('{}: module path must end with .ko'.format(ko))
>              mod = base + '.mod'
> -           # The first line of *.mod lists the objects that compose the module.
> +            # Read from *.mod, to get a list of objects that compose the module.
>              with open(mod) as m:
> -                for obj in m.readline().split():
> -                    yield to_cmdfile(obj)
> +                for mod_line in m:
> +                    yield to_cmdfile(mod_line.rstrip())
>
>
>  def process_line(root_directory, command_prefix, file_path):
> --
> 2.36.1
>


-- 
Thanks,
~Nick Desaulniers

  reply	other threads:[~2022-06-28 18:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28  1:23 [PATCH v3] gen_compile_commands: handle multiple lines per .mod file John Hubbard
2022-06-28 18:45 ` Nick Desaulniers [this message]
2022-06-29  2:45   ` Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKwvOd=FmKYse9NEvMt5MHev5wRzeZH6AcBd1uQEL5k0GLP+Zw@mail.gmail.com' \
    --to=ndesaulniers@google.com \
    --cc=jgg@nvidia.com \
    --cc=jhubbard@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=masahiroy@kernel.org \
    --cc=nathan@kernel.org \
    --cc=trix@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.