Speicherbelegung

Gast #675869
Lesenswert?
• ▲
▼
Hallo,

nach einigen größeren Änderungen in einem Projekt für den LPC2148(Arm) 
ist miteinmal nichtmehr genug Speicher vorhanden.
Genauergesagt ist das Data Segment miteinmal um ca. 2kb größer als 
vorher, obwohl keine globalen Variablen angelegt wurden. Etwas 
rumprobieren mit objdump hat ergeben, dass wohl malloc() sich irgendwie 
eingenistet hat, obwohl es nie im Code aufgerufen wird. Wahrscheinlich 
benutzt irgendeine Funktion aus der stdlib das intern.
Nun die frage: Wie kann ich rausfinden, welche stdlib Funktionen in 
meinem Projekt gelinkt sind? Kann ich auch rausfinden, welche davon 
malloc() benutzt?

Danke und Grüße,
Stefan
Moderator Persönliche Seite #676195
Lesenswert?
• ▲
▼
Was alles gelinkt ist, siehst du in der Symboltabelle.  Diese kann
man sich mit dem Kommando `nm' ansehen (ggf. heißt es für den
Crosscompiler anders, z. B. `arm-nm' oder sowas).

Eine cross-reference aller Symbole bekommst du, wenn du beim Linken
--cref angibst.  Wenn du den Linker vom Compiler aus aufrufst, musst
du ein -Wl, voransetzen, also `-Wl,--cref'.  Wenn du sowieso ein
Mapfile generierst, wird die Tabelle dahin geschrieben, andernfalls
nach stdout.
Gast #676331
Lesenswert?
• ▲
▼
Besten Dank.
Habe den Übeltäter gefunden. Es war ein aufruf von rand().
Warum der allerdings über 10KB Flash braucht und 2Kb Ram ist mir nicht 
ganz klar. Allerdings konnte es jetzt durch eine EIgenimplementierung 
ersetzt werden und alles ist wieder beim Alten.
Gibt es eigentlich eine andere stadlib als die newlib für den Arm? Ich 
hätte gerne sowas wie die vom MSP430. Die vom Arm ist extrem 
speicherhungrig.

Grüße, Stefan

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.