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
(F)LEX tut genau das. FLEX findet sich - denke ich - bei den GCC-Tools. Bernhard
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
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.
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.
Wenn du die obj hast, dann gibt es Sachen wie nm und objdump (bzw. avr-nm und avr-objdump).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.