.elf explorer

Gast #5350068
Lesenswert?

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ß
#5350333
Lesenswert?

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.
#5350365
Lesenswert?

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.
Gast #5372791
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren