有没有人知道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 :(得分:9)
工具使用它来表示崩溃日志,样本,spindump等中的地址,以确定给定地址是否属于函数内部。调试器也可以帮助他们更快地找到给定地址所在函数的边界。
此部分中的数据被格式化为零终止的DWARF-style ULEB128值序列。第一个值是从__TEXT段开始到第一个函数开始的偏移量。其余值是下一个函数开始的偏移量。
答案 1 :(得分:0)
由于我在几天内没有得到任何额外的答案或评论,我想我也可以自己回答这个问题。解决方案基本上就是我在上面的评论中提出的:
最新版本的dyldinfo位于:
http://opensource.apple.com/source/ld64/ld64-127.2/src/other/dyldinfo.cpp
然而,我仍然没有弄清楚函数的确切用途是什么,如果有人有信息,我仍然会欣赏它。