Guten Tag, ich möchte eine Datenstruktur aus einem von mir compilierten Programm aus dem Object-File herauslesen. Sprich ich habe in meinem C-Code eine globale Variable: myFancyType_t myFancyVariable = {bla bla inizialisierung bla}; Diese C-Datei compiliere ich mittels einem gcc-derivat zu einem Object-File. Lasse ich mir dort nun mittels "nm -g" Die Symboltabelle ausgeben, dann wird mir das Symbol "myFancyVariable" mit einem Value von 0x00100744 angezeigt. Wenn ich jedoch das Object-File mit einem Hex-Editor öffne und nach dem (sehr leicht erkennbaren ) Muster meiner Datenstruktur suche, erscheint diese bei Byte 1988(dez). Das Object-File selber ist ca. 50KB groß. Wie kommen da Symboladressen von 0x100744 zu Stande? Bisher hatte ich angenommen, die Symboladressen geben den Index des Start-Bytes innerhalb des Object-Files an. Liege ich da falsch? Gibt es eine andere Möglichkeit, die Position meiner Daten im Object-File heraus zu finden? Danke im Voraus!
PhilippG schrieb: > Guten Tag, > > ich möchte eine Datenstruktur aus einem von mir compilierten Programm > aus dem Object-File herauslesen. > > Sprich ich habe in meinem C-Code eine globale Variable: > myFancyType_t myFancyVariable = {bla bla inizialisierung bla}; > > Diese C-Datei compiliere ich mittels einem gcc-derivat zu einem > Object-File. > > Lasse ich mir dort nun mittels "nm -g" Die Symboltabelle ausgeben, dann > wird mir das Symbol "myFancyVariable" mit einem Value von 0x00100744 > angezeigt. > Wenn ich jedoch das Object-File mit einem Hex-Editor öffne und nach dem > (sehr leicht erkennbaren ) Muster meiner Datenstruktur suche, erscheint > diese bei Byte 1988(dez). Die Position im Object ist was anderes, als die Adresse des Objekts zu Laufzeit. Außerdem enthält ein Object nur Symbnolinformationen und nicht die Adresse der Objekte, die bekommst du erst nach dem (statischen) Linken oder nachdem ein dynamischer Linker drüber gelaufen ist. > Das Object-File selber ist ca. 50KB groß. Wie kommen da Symboladressen > von 0x100744 zu Stande? > Bisher hatte ich angenommen, die Symboladressen geben den Index des > Start-Bytes innerhalb des Object-Files an. Liege ich da falsch? Kommt auf die Art des Symbols an. Da macht es einem Unterschied ib es ein ABS Symbol ist oder einer Section zugeordnet ist.
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.