Как и любые другие символы, 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
.)