2012-03-07 6 views
4

Кто-нибудь знает, какой формат данных, на которые указывает команда Mach-O LC_FUNCTION_STARTS?Файл Mach-O LC_FUNCTION_STARTS команда загрузки

Самая информация, которую я смог найти в файле заголовка loader.h:

#define LC_FUNCTION_STARTS 0x26 /* compressed table of function start addresses */ 

Я вижу инструмент dyldinfo имеет -function_starts вариант, который анализирует эти данные и инструмент с открытым исходным кодом, но последние выпущена версия инструмента не содержит поддержки:

http://opensource.apple.com/source/ld64/ld64-97.2/src/other/dyldinfo.cpp

кто-нибудь знает, где я могу получить исходный код для последней версии dyldinfo, или где я могу получить больше информации об этой команде загрузки?

Спасибо!

+0

Обновление: я нашел ссылку на более новую версию dyldinfo: http://opensource.apple.com/source/ld64/ld64-127.2/src/other/dyldinfo.cpp. Я всегда, кажется, нахожу ответы на свои вопросы, как только я размещаю их здесь (: – Locksleyu

+1

Более важный вопрос: действительно ли загрузчик использует эту команду, и если да, то почему? Не имеет ли она достаточной информации о том, где начинается () местоположение основано на экспорте? – Locksleyu

ответ

-1

Поскольку у меня нет никаких дополнительных ответов или комментариев в течение нескольких дней, я думал, что могу ответить на это сам. Решение в основном то, что я ставлю в выше комментарий:

Новейшая версия dyldinfo находится здесь:

http://opensource.apple.com/source/ld64/ld64-127.2/src/other/dyldinfo.cpp

Однако я до сих пор не понял, что именно начинается функция используется для, если у кого есть информация о том, что я все равно буду это ценить.

7

Он используется инструментами, которые должны символизировать адреса в журналах сбоев, образцах, spindumps и т. Д., Чтобы определить, попадает ли данный адрес внутрь функции. Это также может быть полезно для отладчиков, чтобы помочь им быстрее найти границы функции, в которой находится данный адрес.

Данные в этом разделе отформатированы как последовательность с нулевым завершением значений DWARF-style ULEB128. Первое значение - это смещение от начала сегмента __TEXT до начала первой функции. Остальные значения - это смещение к началу следующей функции.

+2

Это в основном полезно для инструментов, которые должны работать с разделенным исполняемым файлом. Например, отладчик, который хочет совершить стек, должен знать, где все функции начинаются в '__TEXT', чтобы он мог посмотрите инструкции пролога и посмотрите, как был изменен стек и где были сохранены регистры, но в лишенном исполняемом файле символы для большинства функций отсутствуют. LC_FUNCTION_STARTS предоставляет отладчику эту информацию. –

 Смежные вопросы

  • Нет связанных вопросов^_^