Forum: Compiler & IDEs Parser für binary / hex file gesucht


von Thomas M. (mth)


Lesenswert?

Hallo,

ich bin auf der, bisher erfolglosen Suche nach einen Parser für Binary 
und/oder hex Dateien. Ich möchte gern Informationen aus diesen Dateien 
auslesen können, wie:
- Zuordungen der Funktionsnamen zu den entsprechenden Funktionsadressen
- Alignment
- ByteOrder
- Stack-Start-Adresse
- globale Variablen und deren Adresse

Hat jemand eventuell schon mal so ein Tool verwendet oder gesehen?

Vielen Dank, Gruß Thomas

von Bernhard R. (barnyhh)


Lesenswert?

(F)LEX tut genau das.
FLEX findet sich - denke ich - bei den GCC-Tools.

Bernhard

von Hans Fanic (Gast)


Lesenswert?

Hallo Thomas,

in bin/hex Dateien ist in den meißten Fällen das nicht mehr enthalten 
was Du suchst. Die werdn nur zum programmieren der Controller oder 
Eeproms benötigt. Debug Informationen werden meißt in anderen Dateien 
untergabracht zB. beim GNU-C in der elf Datei. Der Keil Compilerlegt 
eine AOMF/OMF Datei an wo die Informatioen zu finden sind.

Was erschwerend hinzukommt ist das viele Compiler dies auf seine "Art 
und Weise" macht.

Für GNU-C gibt es ein Tool das Dir die Elf Datei im KLartext ausgibt.

Hans

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

Ich dachte auch zuerst dass der OP einen Parser-Generator sucht, und 
wollte ihm rpcgen oder (schlimmer) einen ASN.1 compiler aufschwatzen.

Ich denke aber er sucht eher einen ELF File Parser, so wie readelf. Das 
ist bei den GCC tools dabei, und ist meistens <platform>-readelf 
genannt, z.B.: avr-readelf, m68k-readelf etc.

Probier ein
1
avr-readelf -a program.elf

Weiters sind objdump, objcopy, nm etc. interessant.

von Thomas M. (mth)


Lesenswert?

vielen Dank für die Unterstützung

Ja, read-elf hilft mir weiter. Schade, dass die Informationen im bin und 
hex file nicht mehr vorhanden sind. Wahrscheinlich kann ich in diesem 
Fall die Symbole nur noch aus den Objektdateien entnehmen. Mit großer 
Wahrscheinlichkeit sind diese aber auch wieder von Compiler zu Compiler 
unterschiedlich und wenn überhaupt sichtbar. Genau deshalb wollte ich an 
einer Stelle ansetzen, wo mir ein Standard-Format wie bin oder hex eine 
einheitliche Basis liefert.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du die obj hast, dann gibt es Sachen wie nm und objdump
(bzw. avr-nm und avr-objdump).

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

binary und intel hex haben halt keinerlei Symbole mehr, sondern sie
bilden aus einer Objektdatei nur noch den reinen Inhalt ab.
Information, die nicht da ist, kannst du halt auch nicht darstellen.

ELF ist ein Standardformat.  binary ist gar kein "Format", sondern
einfach nur der Bytestrom des Inhalts, und intel hex ist lediglich
ein de-facto-Standard, für den erst nachträglich formale Spezifikationen
geschrieben worden sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.