Почему «главный» символ не разделен на двоичный сектор? - PullRequest
1 голос
/ 16 апреля 2019

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

...