与其他任何符号一样,main
被分类为静态符号,
因此,通常在剥离二进制文件后消失。
但是,昨天我发现main
二进制文件中没有剥离此pie
函数。
我在示例C程序myfunc1
,myfunc2
,...和main
中定义了几个符号。
而且我发现剥离二进制文件时,其他任何符号都没有消失,但是main
符号在剥离后仍然存在。
我检查了原因,发现main
被归类为动态符号,与其他任何用户定义符号不同。
Symbol table '.dynsym' contains 13 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
// ...omitted...
10: 000005e0 43 FUNC GLOBAL DEFAULT 13 main
11: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
12: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
问题:
为什么将main
二进制中的pie
分类为动态符号?
(我认为可以使用main
条,就像在non-pie binary
中一样。)