Mach-O файл LC_FUNCTION_STARTS команда загрузки - PullRequest
4 голосов
/ 07 марта 2012

Кто-нибудь знает, каков формат данных, на которые указывает команда 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 или где я могу получить больше информации об этой команде загрузки?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 20 января 2013

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

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

0 голосов
/ 13 марта 2012

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

Последняя версия dyldinfo находится здесь:

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

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

...