objdump - 头部ELF - 旗帜的含义?

时间:2011-03-08 17:12:38

标签: objdump

$ objdump -f ./a.out

./a.out:     file format elf32-i386
architecture: i386, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x080484e0

$ objdump -f function.o

function.o:     file format elf32-i386
architecture: i386, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

flags(flags 0x00000011:OR标志0x00000112 :)是什么意思? ELF头文件中的Nothin具有此标志。 e_flag包含0。

有人对他的意思有所了解吗?

由于

2 个答案:

答案 0 :(得分:7)

它们是特定于BFD的位掩码。在binutils源代码树中,请参阅bfd / bfd-in2.h:

  /* BFD contains relocation entries.  */
#define HAS_RELOC      0x01

  /* BFD is directly executable.  */
#define EXEC_P         0x02
...
  /* BFD has symbols.  */
#define HAS_SYMS       0x10
...
  /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
     linker sets this by default, but clears it for -r or -n or -N).  */
#define D_PAGED        0x100

这些标志值不会出现在您的目标文件中;它们只是libbfd使用的内存表示形式。

答案 1 :(得分:-1)

它们是LibBFD标志。 你想重新编码objdump? ... =)