3 releases (breaking)

0.3.0 Apr 18, 2023
0.2.0 Apr 17, 2023
0.1.0 Apr 9, 2023

#888 in Development tools

39 downloads per month

GPL-3.0 license

1MB
1.5K SLoC

elf-info: ergonomic CLI ELF inspection tool

elf-info can inspect and display information about ELF binaries, the executable format mostly used on Linux. This CLI tools aims at being ergonomic, without the need of using two different commands (objdump and readelf) that have impossible to remember options.

elf-info commands and options are easy to remember yet short and easy to type. Efforts are made on the presentation of the data, using colors and ASCII tables.

For better ergonomics, you can set a ELF environment variable so not to have to repeat the file name on each command.

Quick and ergonomic disassembly

The fn subcommand is my favorite: give it a function’s name and its full pretty-formatted disassembly is displayed.

Disassembly of main

By passing --cfi you can superimpose call frame information (CFI):

Disassembly of main with CFI

Symbol tables

You can quickly list all symbols, and demangle the names.

List of all symbols

Pass --no-demangle for not demangling.
Pass -l / -g / -w / -d to only display local / global / weak / defined symbols.
Pass -t <TYPE> to filter by symbol type.
Pass -D to only display dynamic symbols.
Pass -f to filter by symbol name using a regular expression.

Sections

List all sections

List of all sections

Show specific section content

One specific ELF section

String table sections

For some type of sections, elf-info is able to interpret its content and display it in a more usable way. For example, for a table of strings, all strings are listed. You can add the option -x or --hexdump to always display a hexdump.

.strtab section

.eh_frame_hdr section

In the same way, elf-info can pretty print the content of .eh_frame_hdr.

.strtab section

ELF header

ELF header

Program headers

Program headers

Clear and structured exception-handling information

Exception-handling information

Quickly find EH information for a specific symbol with -s:

Exception-handling information for a symbol

Dependencies

~22MB
~445K SLoC