Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

readelf vs. objdump: why are both needed

I need to learn about the ELF file layout for a project I am working on and I noticed the existence of these tools. Why do all Linux distributions include both readelf and objdump? Do these tools complement one another? When would i prefer to use one over another?

like image 689
zr. Avatar asked Jan 23 '12 22:01

zr.


People also ask

What is the use of readelf?

readelf is a program for displaying various information about object files on Unix-like systems such as objdump. It is part of the GNU binutils.

What does objdump do?

objdump displays information about one or more object files. The options control what particular information to display. This information is mostly useful to programmers who are working on the compilation tools, as opposed to programmers who just want their program to compile and work.


1 Answers

from binutils/readelf.c:

 /* The difference between readelf and objdump:     Both programs are capabale 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.  */ 
like image 58
synthesizerpatel Avatar answered Sep 19 '22 08:09

synthesizerpatel