Если следующая функция происходит от _GLOBAL__sub_I_a () и __static_initialization_and_destruction_O () - PullRequest
0 голосов
/ 06 мая 2020
• 1000 1001 *
A::A() at clA.cc:3 0x5555555549a6   
__static_initialization_and_destruction_0() at main.cc:4 0x55555555493b 
_GLOBAL__sub_I_a() at main.cc:10 0x555555554997 
__libc_csu_init() at 0x555555554c1d 
__libc_start_main() at libc-start.c:266 0x7ffff7464b28  
_start() at 0x5555555547ba  

Теперь я понимаю, что __libc_start_main происходит из библиотеки c, которая вызывает статически связанный __libc_csu_init (причина, по которой я не вижу его источник), но я нашел его в glibc / glib c -2.27 / csu / elf-init. c, но я не могу найти источник _GLOBAL__sub_I_a() и __static_initialization_and_destruction_O(), из какой библиотеки эти функции поступают и статически связаны с нашим исполняемым файлом, я знаю, что они статически связаны, но хочу увидеть источник, чтобы понять их, о том, что происходит за кулисами.

Спасибо, Фахад

1 Ответ

0 голосов
/ 06 мая 2020

В документации clang есть раздел Создание и уничтожение глобальных объектов , которые могут вас заинтересовать.

И вы обязательно должны прочитать Что означает _GLOBAL__sub_I_ в выводе nm ?

...