Forum: Compiler & IDEs AVR-GCC optimiert TIME & DATE weg


von Bija (Gast)


Lesenswert?

Die beiden unten stehenden Zeilen werden vom Compiler weggeputzt 
(Optimierung: Os). Es gibt keinen Bezug im Quelltext auf die Bezeichner 
s1 & s2. Das Schlüsselwort "volatile" hat keinen Einfluss.

Wie kann ich den Compiler überreden TIME & DATE im Flash abzulegen?
1
const unsigned char __flash s1[] = __TIME__;
2
const unsigned char __flash s2[] = __DATE__;

von OldMan (Gast)


Lesenswert?

Bija schrieb:
> Es gibt keinen Bezug im Quelltext auf die Bezeichner
> s1 & s2.
Deine Frage hast Du mit dieser Aussage schon selbst beantwortet:

Wenn s1 und s2 nicht benutzt werden, warum soll sie der Compiler dann 
einbinden? Der Compiler macht das richtig!

von Klaus W. (mfgkw)


Lesenswert?

Versuche es doch mal, davor __attribute((used)) zu schreiben...

von Di P. (drpepper) Benutzerseite


Lesenswert?

Probiers mal hiermit:
1
#pragma GCC push_options
2
#pragma GCC optimize ("O0")
3
4
dein code
5
6
#pragma GCC pop_options

Aber ich muss OldMan eigentlich Recht geben...

von Klaus W. (mfgkw)


Lesenswert?

OldMan schrieb:
> Wenn s1 und s2 nicht benutzt werden, warum soll sie der Compiler dann
> einbinden? Der Compiler macht das richtig!

Aber nicht, wenn man danach im Binärfile die Strings noch sehen will 
(wohl wissend, daß das Programm selbst die Strings nicht braucht).

Ich mache sowas auch mit der $Id $ aus der Versionsverwaltung so.

von Bija (Gast)


Lesenswert?

OldMan schrieb:
> Bija schrieb:
>> Es gibt keinen Bezug im Quelltext auf die Bezeichner
>> s1 & s2.
> Deine Frage hast Du mit dieser Aussage schon selbst beantwortet:
>
> Wenn s1 und s2 nicht benutzt werden, warum soll sie der Compiler dann
> einbinden? Der Compiler macht das richtig!

Du hättest meinen Beitrag sorgfältiger lesen sollen.

1. Mit keine Silbe habe ich geschrieben, dass der Compiler etwas falsch 
macht.

2. Meine Frage lautete: Wie kann ich den Compiler überreden TIME & DATE 
im Flash abzulegen?

3. Für die Zukunft: wenn du etwas nicht weißt, dann antworte einfach 
nicht. Leute wie du sind niemals hilfreich, sondern einfach nur lästig.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Bija schrieb:

> Wie kann ich den Compiler überreden TIME & DATE im Flash abzulegen?

Hallo Bija,
da die Symbole externe linkbarkeit haben, ist es nicht der compiler, der 
die Symbole raus wirft, sondern der Linker. Mit KEEP() (genaue Syntax 
must Du nachgucken), kannst Du dem ld sagen, dass er die Symbole nicht 
raus werden soll.

HTH Torsten

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bija schrieb:
> Leute wie du sind niemals hilfreich, sondern einfach nur lästig.

Fast hätte ich dir eine Antwort geschrieben … jetzt aber eher nicht 
mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.