我有一个静态链接的应用程序二进制文件链接到多个用户库和pthread库。 应用程序仅使用这些库中的每一个的有限function集。 从以前的文章大小的库和可执行文件和从我的实验我意识到,链接器只包括function(在可执行文件中)使用/需要,而不是库的全部内容。
我想知道每个库中的哪些函数链接到可执行文件和它们的地址(VMA)。 最终,我想根据映射到文本段的函数(在库中)编译包含每个库的开始和结束虚拟内存地址(VMA)的列表。
一种方法是制作库中的函数列表,然后查找可执行文件中的每个函数以及映射到的相应虚拟内存地址。 但是这对我来说似乎很乏味。 有一个更简单的方法来完成这个吗? 谢谢。
反汇编为Intel语法的x86 ELF反汇编程序
在section header elf文件中获取sh_name成员
读取ELF部分的内容(以编程方式)
.got和.got.plt部分有什么区别?
代码注入 – Solaris和Linux
链接器如何确定.rodata节中某些数据的地址?
预链接仅对相对重定位有影响
如何覆盖在Linux下elf可执行文件的.interp标头中指定的链接器?
我想知道每个库中的哪些函数链接到可执行文件和它们的地址(VMA)。
将-Wl,-Map=foo.map参数添加到您的链接行中。 由此产生的foo.map文件将告诉你所有的上述。
最终,我想编译一个包含每个库的开始和结束虚拟内存地址(VMA)的列表
假定链接器不重新排序函数(因此单个库中的所有函数都占用连续范围的文本地址)。 这种假设在简单情况下可能是正确的,但绝不能保证。 见例如这个补丁 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。