mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
UPSTREAM: gen_compile_commands: handle multiple lines per .mod file
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 commit9413e76405("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. Bug: 254441685 Fixes:9413e76405("kbuild: split the second line of *.mod into *.usyms") Signed-off-by: John Hubbard <jhubbard@nvidia.com> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> (cherry picked from commita4ab14e1d8) Signed-off-by: Lee Jones <joneslee@google.com> Change-Id: Ic6f951a0c400b7831ae803a5f442f02fb26e221e
This commit is contained in:
committed by
Treehugger Robot
parent
925d10e1cb
commit
83a34b0ab8
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user