http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60247
Bug ID: 60247 Summary: AVR ATxmega C++ constructor startup in libgcc.S causes boot loop Product: gcc Version: 4.5.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgcc Assignee: unassigned at gcc dot gnu.org Reporter: bobf at mrp3 dot com CC: bobf at mrp3 dot com Host: FreeBSD 8.x Target: ATxmega processor Build: avr-gcc port under FreeBSD Created attachment 32156 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32156&action=edit a patch file that corrects the problem In the AVR implementation of GCC, when compiling for an ATXmega processor, the C++ constructor calls from the startup code in libgcc.S does not preserve registers before calling constructors. This usually results in a 'boot loop' in which the processor continuously reboots due to un-handled faults. gcc info: COLLECT_GCC=avr-gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/avr/4.5.1/lto-wrapper Target: avr Configured with: ./../gcc-4.5.1/configure --target=avr --disable-libssp --with-gmp=/usr/local --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=x86_64-portbld-freebsd8.4 Thread model: single gcc version 4.5.1 (GCC)