使用-finstrument-functions构建glibc

问题描述:

我试图在崩溃之前记录应用程序所做的调用,包括libc调用。我用我自己的库在gcc中使用了-finstrument-functions支持,但是我不能用这个工具创建glibc。使用-finstrument-functions构建glibc

我在libc/configure中添加了-finstrument-functionslibc_extra_cflags,但是当连接ld.so时,构建失败,并且“未定义引用__libc_multiple_libcs​​”。 只是运行CFLAGS=-finstrument-functions ./configure不起作用,因为配置测试失败,因为它们没有定义__cyg_profile_func_enter/_exit。我正在试图找出如何添加每个模块(stdlib,io,字符串等)的检测和通过libc/foo/Makefile查看应该可以使用例如。 CFLAGS_stdlib = -finstrument-functions但该标志不显示在gcc命令中。

有没有一种方法可以将每个模块标志添加到glibc版本,还是已知glibc不能与-finstrument-functions一起使用?

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

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

是glibc的已知不与-finstrument-职能的工作

漂亮多了。

如果你考虑一下,你的__cyg_profile_func_enter要做什么?它不能调用libc,否则你将以无限递归结束。可以使用直接的系统调用,但这远非微不足道。