I have my Linux kernel sources setup like this:
------------------- Fri Jun 14 00:35:24 [bash:5.2.15 jobs:0 error:0 time:2449] jj5@virtuoso:/home/jj5/repo/git/git.kernel.org/torvalds-linux $ git remote show origin * remote origin Fetch URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Push URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git HEAD branch: master Remote branch: master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (local out of date) -------------------
The scripts/clang-tools/gen_compile_commands.py
runs just fine:
------------------- Fri Jun 14 00:35:28 [bash:5.2.15 jobs:0 error:0 time:2453] jj5@virtuoso:/home/jj5/repo/git/git.kernel.org/torvalds-linux $ scripts/clang-tools/gen_compile_commands.py -------------------
But there is a problem with some unknown clang options, as you can see here:
So I wrote this collection of sed scripts to delete the problematic options:
------------------- Fri Jun 14 00:11:28 [bash:5.2.15 jobs:0 error:0 time:1013] jj5@virtuoso:/home/jj5/repo/git/git.kernel.org/torvalds-linux $ cat jj5/fix-commands.sh #!/bin/bash main() { set -euo pipefail; cd "$( dirname "$0" )"; cd ..; local file="compile_commands.json"; sed -i 's/-mpreferred-stack-boundary=3//g' "$file" sed -i 's/-mfunction-return=thunk-extern//g' "$file" sed -i 's/-mindirect-branch=thunk-extern//g' "$file" sed -i 's/-mindirect-branch-register//g' "$file" sed -i 's/-fno-allow-store-data-races//g' "$file" sed -i 's/-fconserve-stack//g' "$file" sed -i 's/-mrecord-mcount//g' "$file" } main "$@"; -------------------
Bug fixed! Thanks to my mates on IRC for helping me fix this one. This clangd extension for VS Code seems to work really well.
p.s. another possible solution is here.