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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren