7

有谁知道 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 的源代码,或者我可以在哪里获得有关此加载命令的更多信息?

谢谢!

4

2 回答 2

11

需要在崩溃日志、样本、spindump 等中表示地址的工具使用它来确定给定地址是否属于函数内。调试器也可以帮助他们更快地找到给定地址所在函数的边界。

本节中的数据被格式化为以零结尾的DWARF 样式 ULEB128值序列。第一个值是从 __TEXT 段开始到第一个函数开始的偏移量。剩余的值是到下一个函数开始的偏移量。

于 2013-01-20T08:33:15.967 回答
0

由于几天后我没有得到任何其他答案或评论,我想我不妨自己回答一下。解决方案基本上就是我在上面的评论中提出的:

dyldinfo 的最新版本位于此处:

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

但是,我仍然没有弄清楚函数开始的确切用途,如果有人有这方面的信息,我仍然会很感激。

于 2012-03-13T13:34:28.523 回答