Инструмент readelf
хорошо показывает вам некоторые подробности о данных:
$ readelf -a /usr/bin/readelf
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
...
Некоторые из его способностей проверять определенные разделы исполняемого файла также могут пригодиться:
$ readelf -p .rodata /usr/bin/readelf | more
String dump of section '.rodata':
[ 4] R_IA64_IMM14
[ 11] R_IA64_NONE
...
[ 1f58] Personality routine:
[ 1f70] __gcc_personality_v0
[ 1f85] __gxx_personality_v0
[ 1f9a] __gcj_personality_v0
[ 1faf] __gnu_objc_personality_v0
...
На самом деле дизассемблирование кода немного растянуто; если вы компилируете свой код с помощью -g
для отладки символов, вы можете использовать readelf --debug-dump
для чтения исходного кода программы, информации о типах и т. д.