【问题标题】:ELF - .symtab sectionELF - .symtab 部分
【发布时间】:2018-10-23 16:47:33
【问题描述】:

如何强制 GCC 包含 ELF 可执行文件/共享库的 .symtab 部分?我已经尝试过使用 -static-ggdb,但是没有用。

EDITreadelf -l 产生以下结果:

 Section to Segment mapping:
 Segment Sections...
  00     
  01     .interp 
  02     .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 
  03     .init_array .fini_array .dynamic .got .got.plt .data .bss 
  04     .dynamic 
  05     .note.ABI-tag .note.gnu.build-id 
  06     .eh_frame_hdr 
  07     
  08     .init_array .fini_array .dynamic .got 

【问题讨论】:

  • 是什么让您认为文件中没有一个?可能是您用来显示文件的工具?例如,使用readelf 而不是objdump
  • 尝试使用-Sreadelf。并解码symtab 使用-Ss

标签: x86 elf


【解决方案1】:

默认包含.symtab,你不需要做任何事情来获取它。

readelf -l 产生以下结果:

该命令用于列出。既然你对sections感兴趣,你应该使用

readelf -WS $binary

改为。

您的二进制文件可能仍然缺少.symtab 部分。如果是这样,最常见的原因是链接行上的“杂散”-s(条带)选项(或在来自Makefile 的二进制文件上运行strip)。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2020-05-08
    • 2011-12-27
    • 1970-01-01
    相关资源
    最近更新 更多