Forum: Compiler & IDEs arm-gcc: Interruptfehler behoben?


von Björn (Gast)


Lesenswert?

Hallo,

mit GCC 4.3.2 aus Yagarto 28.09.2008 scheint dieser Fehler:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27859
behoben zu sein.
Zumindest erzeugt der GCC nun den korrekten Code.
Allerdings finden ich dafür keinen Eintrag im Changelog und im Bugzilla 
ist er nicht als behoben vermerkt.

Könnte der Fehler zufällig durch eine andere Änderung mit behoben worden 
sein?

von ARM (Gast)


Lesenswert?

Seit wann soll der Fehler denn drin sein ? Ist das nicht nur ein EABI 
Problem ?

von Björn (Gast)


Lesenswert?

Der Fehler ist schon seit vielen Jahren enthalten.
Eröffnet 19.7.2004: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16634

Er tritt (bei mir) immer auf, wenn in einer Interruptroutine der 
Stackpointer verwendet werden muss. Dann wird am Anfang und am Ende der 
Interruptroutine das Linkregister jeweils um 4 decrementiert, so das der 
Rücksprung um 4 Bytes zuweit zurückgeht, und der letzte Befehl vor dem 
Interrupt doppelt ausgeführt wird. Das hat natürlich katastrophale 
Auswirkungen, wenn es dabei z.B. eine Adressberechnung trifft.
Muss in der Interruptroutine der Stackpointer nicht verändert werden, so 
ist alles ok.
Daher habe ich alle langen Introutinen umgeschrieben, so das dort nur 
eine weitere Routine aufgerufen wird. Ich würde mir aber gerne diesen 
Extraaufruf aus Zeitgründen sparen.

von (prx) A. K. (prx)


Lesenswert?

Ich habe mir mal den betreffenden Code im GCC angesehen, d.h. den Code 
für Prolog/Epilog von Funktionen. Und bin eigentlich nur etwas 
verwundert, dass nicht noch mehr Böcke solcher Art geschossen werden. 
Das ist leider ein auf mittlerweile unpassender Grundlage programmierter 
Flickenteppich und gewisse Redundanzen lassen vermuten, dass sich schon 
einige Leute dort betätigt haben.

Würde mich nicht wundern, wenn sich da einfach nur niemand mehr heran 
traut, denn im Grund müsste dieser Teil mal vollständig renoviert 
werden. Aber dann sind reichlich Tests für alle Plattformen und 
Varianten fällig, und wer hat die schon, folglich mit signifikantem 
Risiko von Kinderkrankheiten.

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.