使用-finstrument-functions构建glibc

时间:2017-08-25 11:03:02

标签: linux gcc makefile glibc instrumentation

我试图在崩溃之前记录应用程序发出的调用,包括libc调用。我已经使用gcc中的-finstrument-functions支持使用我自己的库,但我无法使用此工具构建glibc。

我在libc / configure中将-finstrument-functions添加到libc_extra_cflags,但构建失败,并且未定义引用__libc_multiple_libcs​​"当链接ld.so.  仅运行CFLAGS=-finstrument-functions ./configure不起作用,因为配置测试失败,因为他们没有定义__cyg_profile_func_enter/_exit

我目前正试图弄清楚如何为每个模块添加检测(stdlib,io,string等)并查看libc / foo / Makefile' s应该可以使用例如CFLAGS_stdlib = -finstrument-functions但该标志不会显示在gcc命令中。

有没有办法将每个模块的标志添加到glibc构建中,或者glibc是否知道不能使用-finstrument-functions?

1 个答案:

答案 0 :(得分:1)

  

我试图在崩溃之前记录应用程序发出的调用,包括libc调用。

您可以使用ltrace跟踪应用程序对任何共享库(包括GLIBC)进行的调用。

  

已知glibc不能使用-finstrument-functions

非常。

如果你考虑一下,你__cyg_profile_func_enter要做什么?它无法调用libc,或者你最终会进行无限递归。它可以使用直接系统调用,但它远非琐碎。