Symbol-Größe von globalen Variablen, Strukturen, Funktionen (ggf. map-file)

Gast #3286700
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
Moderator Persönliche Seite #3286874
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.