获取静态GCC编译的c程序中所有函数(.c文件中使用的函数除外)的详尽列表



我正在进行二进制分析。为此,我需要排除添加到静态编译的C程序中的所有函数。我只想要静态C文件中存在的函数。但是,分析工具除了报告.c文件中的函数外,还报告编译器添加的所有其他函数。很少有例子是:

__open64
__pthread_enable_asynccancel
__pthread_disable_asynccancel
__stack_chk_fail
__fortify_fail
__libc_message
abort
sigprocmask
pthread_sigmask
...

这是二进制分析(使用控制流图(中main()的大量函数跟踪列表中的一些函数。

我不知道这些函数属于哪个头。它们是libc的一部分吗?我试图在gdb中打开一个可执行文件,并试图在加载libc的地址范围中找到一些函数名。(为此,我使用了动态链接而非静态来显式检查libc包(我找不到其中的许多。有没有包含所有这些功能的详尽列表的手册页?类似于包含系统调用列表的linux手册页。

提前谢谢。

您询问了一个详尽的列表。也许您可以使用glibc和gcc源代码本身来发现您需要什么?

github是另一个很好的资源,在github中搜索__pthread_enable_asynccancel和__defense_fail,github就是一个非常详尽的标识符列表。

wget http://ftp.gnu.org/gnu/glibc/glibc-2.36.tar.gz
tar xzf glibc-2.36.tar.gz
grep -r libc_hidden
. . . a very long list . . .
./glibc-2.36/nptl/cancellation.c:libc_hidden_def (__pthread_enable_asynccancel)
wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.xz
tar xJf gcc-12.2.0.tar.xz 
grep -r __fortify_fail
. . . a lot of results . . .

最新更新