Globale Variablen fehlen in avr-size

Gast #2949262
Lesenswert?
• ▲
▼
Hallo zusammen,

mir ist gerade aufgefallen, dass avr-size anscheinend keine globalen 
Variablen berücksichtigt, wenn man es auf eine .o-Datei anwendet. Ist 
das normal?

Beispiel:
1
// test.c
2

3
char buffer_global[16];
4
static char buffer_local[32];
5

6
int main(void) {}

Das ergibt:
1
> avr-gcc -c test.c
2
> avr-gcc -o test.elf test.o
3
> avr-size test.o
4
   text     data      bss      dec      hex  filename
5
     14        0       32       46       2e  test.o
6
> avr-size test.elf
7
   text     data      bss      dec      hex  filename
8
     54        0       48      102       66  test.elf

Das globale Array scheint also erst nach dem Linken berücksichtigt zu 
werden. Aber warum? Es ist doch Teil von test.o und darf auch nicht 
nochmal wo anders definiert werden.

Gibt es eine Möglichkeit den Speicherverbrauch der globalen Variablen 
einer .o-Datei mit anzuzeigen ohne jede einzeln in eine .elf-Datei zu 
linken?
#2949306
Lesenswert?
• ▲
▼
> Das globale Array scheint also erst nach dem Linken berücksichtigt zu
> werden. Aber warum?

Weil es nach dem Kompilieren erstmal im common-Block liegt, und erst 
nach dem Linken in bss.

> Gibt es eine Möglichkeit den Speicherverbrauch der globalen Variablen
> einer .o-Datei mit anzuzeigen ohne jede einzeln in eine .elf-Datei zu
> linken?

Benutze beim Kompilieren -fno-common, dann landen sie gleich in bss.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.