Objdump
objdump ist ein mächtiges Utility aus den binutils für Linux. Es ermöglicht, (Objekt)-Code zu disassemblieren und verschiedenste Informationen zu der Datei zu bekommen.
objdump in der OS-Entwicklung
In der OS-Entwicklung ist objdump ein unentbehrlichs Werkzeug. Mit objdump lassen sich z.B. schnell und einfach Symbolnamen anzeigen.
Crashkurs
Um die Symboltabelle einer Objektdatei zu bekommen, gibt man
objdump -t DATEI
ein. Die Ausgabe sieht dann z.B. so aus bei einem einfachen "Hallo-Welt"-Programm in C:
hello.o: file format elf32-i386
SYMBOL TABLE:
00000000 l df *ABS* 00000000 hello.c
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .rodata 00000000 .rodata
00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
00000000 l d .comment 00000000 .comment
00000000 g F .text 0000002b main
00000000 *UND* 00000000 puts
Um die dynamische Symboltaballe zu bekommen, nutzt man
objdump -T DATEI
Per
objdump -d DATEI
lässt sich eine Datei (bzw. der ausführbare Teil) disassemblieren und auf der Kommandozeile ausgeben. Alternativ lässt sich die Ausgabe natürlich auch Umleiten:
objdump -d DATEI > output.<
Um eine Datei komplett zu disassemblieren, nutzt man
objdump -D DATEI