AVR-GCC: Bug bei Verwendung von -Os

OP Admin Persönliche Seite #40668
Lesenswert?

Das angehängte Programm läuft mit -O0, -O1 und -O2 scheinbar ohne
Probleme, nur mit -Os lande ich irgendwann während iRealFT() wieder am
Resetvektor. Breakpoint 3 wird nie erreicht. Dieses Verhalten habe ich
sowohl im AVR-Studio als auch in simulavr festgestellt, außerdem zeigt
Simulavr die folgende Meldung an:

WARNING: file memory.c: line 148: **** Attempt to read invalid addr:
0x0460
WARNING: file memory.c: line 148: **** Attempt to read invalid addr:
0x0461

gcc-Version 3.3.1 20030720, binutils 2.14 20030727

Was mich außerdem verwundert hat: das mit -Os erzeugte Binary ist um
einiges größer als bei -O1 oder -O2.

Ich konnte das Problem leider nicht genauer eingrenzen, da ich mit
simulavr noch nicht so gut zurechtkomme und das AVR-Studio in VMWare
nicht so richtig Spaß macht.
Angehängte Dateien:
Gast #40669
Lesenswert?

Irgendwo wird der Stackframe korrumpiert.  Der Framepointer in
rr28:29 steht beim Betreten von iRealFFt() auf 0x428, beim
Verlassen auf 0x228.  Sieht also danach aus, als würde r29 irgendwo
zerstört und nicht wiederhergestellt.

Ich würde damit an Deiner Stelle in der avr-gcc Liste mal fragen.

Der Code scheint ja vorher durch ein Verschlüsselungsprogramm
geschickt worden zu sein. :->

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