使用-finstrument-functions构建glibc
问题描述:
我试图在崩溃之前记录应用程序所做的调用,包括libc调用。我用我自己的库在gcc中使用了-finstrument-functions
支持,但是我不能用这个工具创建glibc。使用-finstrument-functions构建glibc
我在libc/configure中添加了-finstrument-functions
到libc_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,否则你将以无限递归结束。可以使用直接的系统调用,但这远非微不足道。