使用clang将Linux内核源代码转换为LLVM位代码

使用clang将Linux内核源代码转换为LLVM位代码,clang,llvm,Clang,Llvm,我正在尝试使用LLVM对一些程序进行静态分析。具体来说,我的目标是Linux内核源代码。然而,在将Linux内核中单个文件的源代码转换为LLVM位代码文件的第一步中,我遇到了麻烦 我使用的命令是: clang -Iinclude/path -c -emit-llvm one_single_file_in_linux_kernel \ -o bitcode_file.bc clang的搜索路径是正确的,但也有其他错误,例如“始终未找到内联”。我想应该有一些其他的标志我应该使用,但我不

我正在尝试使用LLVM对一些程序进行静态分析。具体来说,我的目标是Linux内核源代码。然而,在将Linux内核中单个文件的源代码转换为LLVM位代码文件的第一步中,我遇到了麻烦

我使用的命令是:

clang -Iinclude/path -c -emit-llvm one_single_file_in_linux_kernel \
      -o bitcode_file.bc
clang的搜索路径是正确的,但也有其他错误,例如“始终未找到内联”。我想应该有一些其他的标志我应该使用,但我不知道


有人遇到过这个问题吗?

宏是在哪里定义的,它是如何定义的?定义是否包含在某个if子句中?也许只是加上一些叮当声会有帮助。实际上它们是非常随机的。我只研究了一个这样的错误,下面是我发现的:在这种情况下,Clang支持GCC风格的属性,很可能是_属性_总是u内联的,所以只要正确包含定义,就可以了。c文件包括一个名为fls64.h的.h文件,该文件的函数如下static _u总是u内联的fls64,此fls64.h不包括指定宏“始终”内联的编译器.h文件