Estoy usando Raisonance's Ride7/Codesourcery (a.k.a Sourcery CodeBench Lite) con una placa STM32F4 que desarrolla una plataforma HMI bare metal.GCC arm-none-eabi (Codesourcery) y C++ Excepciones
Haré uso de las excepciones de C++ en este sistema, pero cualquier excepción que arroje termina con un error "Terminar llamada recursivamente" escrito en stderr.
código para reproducir el problema: (main.cpp)
int main(void)
{
try {
throw 1;
}
catch (...) {
printf("caught");
}
}
He intentado ya Raisonance y otras fuentes para una resolución y no han recibido ningún tipo de ayuda procesable.
potencial problema/solución 1:
le he pedido en otros foros y mencionan necesito llamar construcciones estáticas en mi archivo de ensamblaje de inicio para inicializar las tablas de desenredo (al menos eso es lo que creo que están hablando), pero no tengo idea de cómo hacer esto.
problema/solución de 2
Potencial También he descubierto un bug en binutils/gas que puede ser la fuente de mis problemas aquí (http://sourceware.org/bugzilla/show_bug.cgi?id=13449). He estado tratando de construir mi propia versión de la cadena de herramientas con este parche, pero eso se está convirtiendo en un proyecto en sí mismo, y aún no lo han logrado.
La pregunta
¿Necesito hacer algo en el código para hacer uso de excepciones de C++, o es probable que un error en la cadena de herramientas? Si el primero, por favor elabora.
muy pocas excepciones de apoyo cadenas de herramientas integrados adecuadamente, en todo caso. En mi opinión, usar excepciones en el software integrado es una mala idea. –
@IgorSkochinsky Sabía que alguien iba a decir eso. La documentación de Codesourcery establece claramente el soporte para las excepciones de C++. Conozco mis requisitos y sé que usar excepciones es la decisión correcta para mi proyecto, pero eso es irrelevante para la pregunta en cuestión. – Verax
@verax ¿con qué libc está vinculado? Me pregunto si tienes un desajuste? – marko