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。

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...