ELF - .symtab节

4
如何强制GCC为ELF可执行文件/共享库包含.symtab部分?我已经尝试使用-static-ggdb,但没有成功。 编辑readelf -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 

2
你为什么认为文件中没有一个?可能是你使用的显示文件的工具吗?例如,使用readelf而不是objdump - Michael Petch
尝试在 readelf 中使用 -S。并且要使用 -Ss 解码 symtab - Michael Petch
1个回答

5

默认情况下,.symtab 已包含在内,您无需进行任何操作即可获得它。

使用 readelf -l 命令可以得到以下结果:

该命令用于列出 。由于您对 感兴趣,因此应使用:

readelf -WS $binary

相反,你的二进制文件可能仍然缺少.symtab部分。如果确实如此,最常见的原因是链接行上的“杂项”-s(strip)选项(或从Makefile运行strip命令对二进制文件进行剥离)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接