On Fri, Apr 7, 2023 at 1:00 PM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > On Mon, Mar 20, 2023 at 7:14 PM tr4v3ler <0xtr4v3ler@xxxxxxxxx> wrote: > > > > I would like to compile all C files into. ll or. bc to facilitate analyzing the entire kernel. > > So there's a make target compile_commands.json. That will give you a > json list of triples that contain the exact command used to compile > the kernel. It's probably 10 lines of python to parse that, then rerun > the exact command used the build each translation unit with -emit-llvm > and -S (or not depending on if you want .ll or .bc). That will give > you a .ll/.bc for everything that's built as part of your config for > that configuration. > > Otherwise, kbuild has rules to do: > > $ make LLVM=1 lib/string.ll > > There's no support for .bc (would be trivial to add) because you > typically end up running llvm-dis on .bc files to get .ll files > anyways. I almost never use .bc files. > If LTO is enabled, then the .o files are LLVM bitcode files by default. -bw > > Nick Desaulniers <ndesaulniers@xxxxxxxxxx> 于 2023年3月21日周二 01:12写道: > >> > >> On Mon, Mar 20, 2023 at 2:53 AM tr4v3ler <0xtr4v3ler@xxxxxxxxx> wrote: > >> > > >> > Hi,I found the following compilation targets in the makefile(https://github.com/torvalds/linux/blob/master/scripts/Makefile.build#L136) of the Linux kernel. However, I don't know how to make this goal effective, compile the Linux kernel, and generate llvm bitcodes. Do I need to specify specific parameters for the make command? Or through environment variables? > >> > >> What precisely are you looking for? A single .ll file? A single .bc > >> file? .ll or .bc files for every translation unit? > >> -- > >> Thanks, > >> ~Nick Desaulniers > > > > -- > Thanks, > ~Nick Desaulniers >