Forum: Mikrocontroller und Digitale Elektronik Symbol-Größe von globalen Variablen, Strukturen, Funktionen (ggf. map-file)


von Ben (Gast)


Lesenswert?

Hallo,

ich suche eine Möglichkeit, die Symbol-Größe aller verwendeter globalen 
Variablen, Strukturen und Funktionen zu ermitteln. Meine Datenstrukturen 
passen nicht mehr komplett in das interne RAM und um zu schauen, welche 
Daten ich am besten in das externe RAM verschiebe, wäre ein solche 
Übersicht sehr hilfreich.
Es handelt es um den Prozessor TMS320C6727 und ich verwende den Compiler 
"TMS320C6000 Optimizing Compiler v 7.4".

Ich hatte gehofft, dass die Größen in das MAP-File geschrieben werden 
können, aber auch der Programm-Parameter "--mapfile_contents=
all" brinkt keinen gewünschten Erfolg. In dem Dokument "Object File 
Utilities" (http://www.ti.com/lit/ug/spru186w/spru186w.pdf) Seite 268ff 
sind einige TI-Tools beschrieben - mit diesen konnte ich jedoch nur die 
Symbol-Namen und -Adresse aus *.out und *.obj Dateien ermitteln, nicht 
die Größe.

Aus der Differenz zweier Symbol-Adressen kann man zwar Rückschlüsse auf 
die Größe ziehen, aber das muss nicht immer passen. Zudem funktioniert 
dies nicht für die "letzten" Symbole in einer Section.

(Es handelt sich um ein sehr großes Projekt mit sehr vielen Strukturen 
und Unterstrukturen. Deshalb möchte ich nicht "sizeof()" oder einen 
ähnlichen Workaround verwenden.)

Irgendwie muss man doch die Größe extrahieren können... Habt ihr einen 
Tipp für mich?

Gruß
Ben

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


Lesenswert?

Beim "nm" der GNU-binutils gibt es die Möglichkeit, --print-size mit
anzugeben.  Im Prinzip sollten sich diese Tools einigermaßen
unabhängig vom tatsächlichen Inhalt einer ELF-Datei auch auf solche
fremder Architekturen anwenden lassen.  Sofern deine Toolchain also
ELF als Zieldateiformat benutzt, könnte man es auf einen Versuch
ankommen lassen.

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.