У меня есть сборка для RISCV, которая определяет раздел .text
, начиная с .globl _start
.Где есть символ _start, который может быть определен
Я знаю, что это такое - как демонстрация показывает мне адрес, но я не вижу, где он определен. Это не в сценарии компоновщика, а grep в каталогах сборки показывает, что он находится в разных двоичных файлах, но я не могу найти определение.
Я угадываю, что это появляется в файле где-то как функция архитектуры, но может ли кто-нибудь сказать мне, где? (Это все строится с использованием RISCV GNU кросс-компиляторов на Linux)
Ответ на этот вопрос включает внутренние детали компоновщика, загрузчика и кода запуска. Или, говоря иначе, адрес '_start' будет назначен во время выполнения, поэтому определение' grep' не будет найдено. – user3386109
Для моих проектов без покрытия я сопоставляю '_start' с фиксированным адресом в скрипте компоновщика. В противном случае я не могу гарантировать, что '_start' находится в нужном месте. – fsasm
Должна быть строка '_start:', которая определяет метку '_start' в том же файле исходного кода, что и директива' .globl_start', иначе директива '.globl_start' не делает ничего полезного. –