确定是否打包了C结构

时间:2018-12-12 17:08:31

标签: gcc gdb gdb-python pahole

我正在从gdb-python中提取可执行的C结构布局。

我设法获取所有字段,偏移量,类型和大小。

仍然,当尝试重新生成该结构的代码时,我没有任何迹象表明它是否已标记为GCC的attribute((__packed__))

是否可以从可执行文件中获取此信息? (最好使用gdb-python,但其他任何方式也可以)

1 个答案:

答案 0 :(得分:1)

  

有什么方法可以从可执行文件中获取此信息吗?

否,但是您应该可以通过简单的启发式推断出这一点:

  • 如果sizeof(struct foo)大于其成员字段大小的总和,则不打包该结构。
  • 如果sizeof(struct foo)等于其成员字段大小的总和,则该结构将被 打包,其成员自然对齐且没有孔,和包装无关紧要。