readelf和objdump的区别

第一个区别,objdump使用了bfd库进行文件读取,而readelf则没有,另外写的一套代码,且对一些条件的判断并不是很严格。比如对于没有指定处理方式的CPU类型,BFD库将拒绝往下执行,readelf还是可以显示其内容。

第二个区别,readelf可以显示调试信息,而objdump则没有。但是实际上bfd库支持DWARF的处理,通过简单处理objdump也可以显示调试信息,就如同nm做的那样。

 

BFD库是binutils项目的子项目,目标是通过一种统一接口,处理不同目标文件格式。

BFD库:Binary File Description Library。

 

 

/* The difference between readelf and objdump:

  Both programs are capable of displaying the contents of ELF format files,

  so why does the binutils project have two file dumpers ?

 

  The reason is that objdump sees an ELF file through a BFD filter of the

  world; if BFD has a bug where, say, it disagrees about a machine constant

  in e_flags, then the odds are good that it will remain internally

  consistent.  The linker sees it the BFD way, objdump sees it the BFD way,

  GAS sees it the BFD way.  There was need for a tool to go find out what

  the file actually says.

 

  This is why the readelf program does not link against the BFD library - it

  exists as an independent program to help verify the correct working of BFD.

 

  There is also the case that readelf can provide more information about an

  ELF file than is provided by objdump.  In particular it can display DWARF

  debugging information which (at the moment) objdump cannot.  */

你可能感兴趣的:(操作系统)