Hallo zusammen, ich möchte aus einer .elf Datei folgende Informationen zu globalen Variablen extrahieren: - Variablenname - Adresse - Datentyp Ähnlich, wie es das STMStudio bei STM32 oder Freemaster bei ihren Mikrocontrollern macht. Mit dem Tool 'readelf' lassen sich im grunde genommen all diese Informationen aus einer .elf Datei exportieren. Wenn die Strukturen in der Firmware allerdings komplexer werden, (ein struct hat einen weiteren struct usw.) wird es sehr aufwendig, die Strukturen zu rekonstruieren. Hat jemand schon mal etwas ähnliches gemacht oder kennt ein open source Projekt, in dem so ein elf explorer implementiert wurde? Gruß
Ich weiß nicht was du konkret machen willst, aber wenn das so eine Art Metadatenspeicher sein soll, kann man das auch in das elf einbetten als JSON oder so, das ist vielleicht sauberer als es sich da wieder rauszufrickeln ... und dann auch sehr leicht mit externem Tooling lesbar.
Das hört sich interessant an, muss dafür ein bestimmter Compiler oder Linker Befehl verwendet werden?
Ich hab's selber noch nie gemacht, aber Qt benutzt das seit längerem für seine Plugin-Metadaten, also im ELF-Header ist ein Stück JSON wo die Plugin-Version, die implementierten Interfaces etc. drinsteht. Wenn man ein bisschen googelt, findet man meist diese zwei Lösungen hier wie man sowas macht: https://csl.name/post/embedding-binary-data/ Also ja, ist ein bisschen rumgetrickse mit dem Linker. Ich glaube du kannst die Daten auch in eine extra Section (.mymetadata oder so) bauen mit dem richtigen Flag.
Hallo zusammen, in den letzten Wochen hatte ich kaum Zeit und bin bei diesem Problem immer noch nicht weiter gekommen. Wie oben beschrieben, suche ich ein Tool, mit dem ich aus einer .elf Datei die Bezeichner aller globalen Variablen, ihre Adressen und die rekursiv aufgelösten Datentypen extrahieren kann. Beispielcode:
1 | typedef struct { |
2 | int real; |
3 | int imag; |
4 | } complex; |
5 | |
6 | typedef struct { |
7 | complex value1; |
8 | complex value2; |
9 | float phi; |
10 | } container; |
11 | |
12 | container c1; |
13 | float omega; |
Nachdem dieser Code für STM32 kompiliert wurde, möchte ich aus der generierten .elf Datei folgenden Output extrahieren können: c1.value1.real;int;0x2000.. c1.value1.imag;int;0x2000.. c1.value2.real;int;0x2000.. c1.value2.imag;int;0x2000.. c1.phi;float;0x2000.. omega;float;0x2000.. Diese Information ist in der .elf Datei (im Dwarf Teil) auf jeden Fall enthalten, da STM Studio und Freemaster es interpretieren können. Kennt jemand einen Interpreter, welcher diese Informationen aus der .elf Datei exportieren kann? Viele Grüße
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.