Strings in .data sichtbar machen per avr-nm

Gast #1781684
Lesenswert?
• ▲
▼
Hallo!

Angenommen ich verwende auf dem AVR printf("foo") statt 
printf_P(PSTR("foo")), dann wird der const char* ja im Flash ablegt, 
dann aber von der startup-Routine in die .data-Sektion kopiert (die im 
SRAM liegt). Wenn ich mir das mit avr-size ansehe, sehe ich da auch den 
entsprechenden Verbauch. Gibt es eine Möglichkeit, diesen (anonymen) 
.data-Symbolen Pseudo-Symbole zuweisen zu lassen, sodass ich die 
hinterher mit avr-nm sehe? Ich sehe nämlich so zwar per avr-size die 
Gesamtgröße, aber nicht die einzelnen Symbole und deren Verbauch. 
Interessant wäre z.B. ein konkatenierter String 
_autosymbol_UNIT_LINE_NNN (bei der UNIT die Übersetzungseinheit anzeigt 
und LINE die Zeilennummer, ggf NNN falls mehrere Symbole pro Zeile 
erzeugt wurden). Geht das?

Gruss --- Florian
Gast #1782648
Lesenswert?
• ▲
▼
Hi Jörg,

irgendwie tut das nicht so wie ich mir das vorstelle - zwar zeigt avr-nm 
mehr Symbole an, wenn ich --debug-syms aktiviere, aber diese sind z.B. 
die Namen der Übersetzungseinheiten (alle mit "a 00000000"), sowie

.stab N 00000000
.stabstr N 00000000
.text t 00000000

Darüberhinaus noch .data und .bss (was tatsächlich nützlich ist), z.B.:

.bss b 00802332

Aber eine Aufschlüsselung, worauf sich die 0x332 = 818 Bytes der 
.data-Region aufteilen bekomme ich so auch nicht.

Gruß --- Florian
Moderator Persönliche Seite #1782883
Lesenswert?
• ▲
▼
Ja, ich hatte das mit den durch PSTR generierten Symbolen verwechselt,
die bekommen einen Namen.  Die .data-Symbole haben keinerlei Debug-
Information, davon übernimmt der Assembler keinerlei symbolische
Information in die Objektdatei.  Es existieren lediglich zwischendurch
relocation records, aber die sind nach dem Linken natürlich weg.
#1784705
Lesenswert?
• ▲
▼
Einen gewissen Anhaltspunkt kann evtl. avr-strings liefern. Per Default 
durchsucht strings nur die data-Section, wenn ein Objekt-Dateiformat 
erkannt wird, deshalb werden dir andere Strings (z.B. in den Debuginfos 
oder im Flash) nicht mit angezeigt.

Das Non-Plus-Ultra ist das natürlich nicht, da man damit nur den Inhalt 
der Strings sieht, aber nicht, von woher im Code die stammen.

Andreas

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.