1. 05 1月, 2019 3 次提交
  2. 29 12月, 2018 7 次提交
  3. 28 12月, 2018 7 次提交
  4. 21 12月, 2018 10 次提交
  5. 19 12月, 2018 2 次提交
    • T
      scripts: add a tool to produce a compile_commands.json file · b3020464
      Tom Roeder 提交于
      The LLVM/Clang project provides many tools for analyzing C source code.
      Many of these tools are based on LibTooling
      (https://clang.llvm.org/docs/LibTooling.html), which depends on a
      database of compiler flags. The standard container for this database is
      compile_commands.json, which consists of a list of JSON objects, each
      with "directory", "file", and "command" fields.
      
      Some build systems, like cmake or bazel, produce this compilation
      information directly. Naturally, Makefiles don't. However, the kernel
      makefiles already create .<target>.o.cmd files that contain all the
      information needed to build a compile_commands.json file.
      
      So, this commit adds scripts/gen_compile_commands.py, which recursively
      searches through a directory for .<target>.o.cmd files and extracts
      appropriate compile commands from them. It writes a
      compile_commands.json file that LibTooling-based tools can use.
      
      By default, gen_compile_commands.py starts its search in its working
      directory and (over)writes compile_commands.json in the working
      directory. However, it also supports --output and --directory flags for
      out-of-tree use.
      
      Note that while gen_compile_commands.py enables the use of clang-based
      tools, it does not require the kernel to be compiled with clang. E.g.,
      the following sequence of commands produces a compile_commands.json file
      that works correctly with LibTooling.
      
      make defconfig
      make
      scripts/gen_compile_commands.py
      
      Also note that this script is written to work correctly in both Python 2
      and Python 3, so it does not specify the Python version in its first
      line.
      
      For an example of the utility of this script: after running
      gen_compile_commands.json on the latest kernel version, I was able to
      use Vim + the YouCompleteMe pluging + clangd to automatically jump to
      definitions and declarations. Obviously, cscope and ctags provide some
      of this functionality; the advantage of supporting LibTooling is that it
      opens the door to many other clang-based tools that understand the code
      directly and do not rely on regular expressions and heuristics.
      
      Tested: Built several recent kernel versions and ran the script against
      them, testing tools like clangd (for editor/LSP support) and clang-check
      (for static analysis). Also extracted some test .cmd files from a kernel
      build and wrote a test script to check that the script behaved correctly
      with all permutations of the --output and --directory flags.
      Signed-off-by: NTom Roeder <tmroeder@google.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      b3020464
    • I
      Revert "kbuild/Makefile: Prepare for using macros in inline assembly code to... · 6ac38934
      Ingo Molnar 提交于
      Revert "kbuild/Makefile: Prepare for using macros in inline assembly code to work around asm() related GCC inlining bugs"
      
      This reverts commit 77b0bf55.
      
      See this commit for details about the revert:
      
        e769742d ("Revert "x86/jump-labels: Macrofy inline assembly code to work around GCC inlining bugs"")
      
       Conflicts:
      	arch/x86/Makefile
      Reported-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NBorislav Petkov <bp@alien8.de>
      Reviewed-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Juergen Gross <jgross@suse.com>
      Cc: Richard Biener <rguenther@suse.de>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Segher Boessenkool <segher@kernel.crashing.org>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Nadav Amit <namit@vmware.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      6ac38934
  6. 16 12月, 2018 7 次提交
  7. 15 12月, 2018 4 次提交