Strings in .data sichtbar machen per avr-nm

Gast #1781684
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
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
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.
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

Eine eigene Frage? Dieser Thread ist über 16 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.