Assembly 确定原始源文件是否包含函数调用?

Assembly 确定原始源文件是否包含函数调用?,assembly,arm,Assembly,Arm,只是想知道一个包含有效ARM汇编指令序列的源文件(例如code.S)是否由汇编程序以通常的方式“组装”成二进制机器代码。如果你看不到原始源文件代码,但你可以看到二进制机器代码输出,是否可以确定原始源文件是否包含函数调用?! 谢谢是的,这是可能的,但您需要在编译应用程序时启用调试。此类信息包含在DWARF调试部分中;它不是非调试ELF可执行文件的一部分。Hi,为什么要添加Python标记?objdump?我不认为Python是适合这种情况的语言。请将其分解并查找bl和blx指令。这些是函数调用。可

只是想知道一个包含有效ARM汇编指令序列的源文件(例如code.S)是否由汇编程序以通常的方式“组装”成二进制机器代码。如果你看不到原始源文件代码,但你可以看到二进制机器代码输出,是否可以确定原始源文件是否包含函数调用?!
谢谢

是的,这是可能的,但您需要在编译应用程序时启用调试。此类信息包含在DWARF调试部分中;它不是非调试ELF可执行文件的一部分。

Hi,为什么要添加Python标记?objdump?我不认为Python是适合这种情况的语言。请将其分解并查找bl和blx指令。这些是函数调用。可能是同一可执行文件中的其他函数,也可能是外部库函数的PLT存根……但是,如果要确定原始源文件是否包含来自二进制输出的函数调用,ARM汇编中需要什么样的编码行呢?!您需要读取大量复杂的完整调试信息以确定文件名映射,然后反汇编二进制文件以查找分支。通过动态函数指针调用函数可能是个问题。