-->

生成LLVM IR为httpd(Generate LLVM IR for httpd)

2019-10-23 04:43发布

我试图编译Apache2中LLVM,以产生LLVM IR最终的二进制文件。

我用flto选项编译和链接,并通过“还-发出-LLVM”通过铛链接。 这似乎对大多数步骤工作,但是我有两个问题

1)早些时候,我使用LLVM 3.6,其黄金插件不接受也-发出-LLVM,但只能发出-LLVM,基本上它会散发出只精灵或LLVM。 其中自动工具构建系统不喜欢。 这个配置,使脚本要二进制文件,而我希望LLVM。 该解决方案的任何?

2)所以我转移到LLVM 3.5.2,构建过程顺利的话,我可以同时生成httpd.bc和httpd的ELF二进制文件,但链接不希望链接以模块(它能够链接以二进制文件)具体,我得到这个错误

`

/usr/share/apr-1.0/build/libtool --silent --mode=link /home/rbhatia/Desktop/llvm-newbuild/bin/clang  -pthread  -flto -o mod_authn_file.la -rpath /home/rbhatia/Desktop/httpd-2.4.12/llvm/modules -module -avoid-version  mod_authn_file.lo 
/usr/bin/ld: error: .libs/mod_authn_file.o:1:3: invalid chaenter code hereracter
/usr/bin/ld: error: .libs/mod_authn_file.o:1:3: syntax error, unexpected $end
/usr/bin/ld: error: .libs/mod_authn_file.o: not an object or archive
collect2: error: ld returned 1 exit status

`

我可以看到,mod_authn_file.o是一个有效的LLVM IR文件,我可以用LLVM-DIS拆卸。 此外,就这一步之前,接头能够链接httpd和httpd.bc

对错误是什么帮助吗?

Answer 1:

看一眼

https://github.com/SRI-CSL/whole-program-llvm

我们使用这个工具来构建相当大项目为位码。 我们最大的到目前为止是FreeBSD的10.0,因此大小通常不是一个问题。

我们特拉维斯建立检查实际上是Apache的,因为是我们的教程。 希望帮助。



文章来源: Generate LLVM IR for httpd