微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vmlinux ELF为给定结构的成员find偏移量

在Linux内核中,我需要find所使用的结构的成员variables的偏移量。 例如,对于types为task_struct的init_task,我想要它的pid和任务的偏移量。

我只有这个vmlinux。 我可以参考开源内核代码,但是它可能与我有的版本不同。

是否有可能得到没有源头的偏移量?

编辑:vmlinux是为ARM,我可能不总是能够在目标设备上运行C代码

ELF文件的哪一部分必须加载到内存中?

ELF对象文件和共享对象之间的ELF标题区别是什么?

32位x86代码是否需要专门为共享库文件进行PIC编译?

如何加载共享库而不加载它的依赖关系?

在ELF文件中find全局偏移表

Linux用户空间ELF加载器

我怎样才能find不符合ELF的依赖?

将部分添加到ELF文件

执行ELF IFUNC调度function时读取环境

GNU as:改变输出文件格式

结构的大小和布局显示在编译目标文件的调试信息中(如果使用-g编译并且不strip )。

在Gentoo中, pahole (又名“poke-a-hole”,作为dev-util/dwarves包装)读取对象的DWARF调试信息,输出关于结构中“洞”的信息 – 这可能是一个很好的起点。

6.47抵消

GCC为C和C ++实现了一个语法扩展来实现offsetof宏。

primary: "__builtin_offsetof" "(" typename "," offsetof_member_designator ")" offsetof_member_designator: identifier | offsetof_member_designator "." identifier | offsetof_member_designator "[" expr "]"

这个扩展就足够了

#define offsetof(type,member) __builtin_offsetof (type,member)

是宏的偏移的一个合适的定义。 在C ++中,类型可能是依赖的。 无论哪种情况,成员都可以由一个标识符组成,也可以由一系列成员访问和数组引用组成。

用arm-eabi-gdb找到另一个解决方案 – 我可以做print&init_task和print&init_task.pid,区别在于offset。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐