Вам необходимо проверить вывод nm для файлов crtbegin, crtend и других crtxxx, чтобы правильно их понять.
Эти файлы содержат код для конструкторов (подпрограммы инициализации) и деструкторов (подпрограммы завершения). Эти конструкторы и деструкторы не следует путать с глобальными конструкторами / деструкторами C ++. Эти процедуры вызываются до фактического запуска («основного») программы.
Компоновщик строит 2 списка функций CTOR_LIST (процедуры времени запуска) и DTOR_LIST (процедуры времени выхода).
См .: https://gcc.gnu.org/onlinedocs/gccint/Initialization.html