Hello all! Long time, no chat.
To begin with, I must say that I am aware that C++ support in avr-gcc is extremely limited, particularly in terms of what historically would have been called the "standard template library".
My team has managed to ship a couple of XMega projects using a carefully curated limited subset of C++ -- for example, avoiding anything that would touch the heap, etc.
We have created a few portable class libraries which are shared among several different embedded targets including AVRs, and so far we've stayed clear of exceptions. But we are repeatedly running into brick walls where we end up creating really twisted code to gracefully deal with rare error conditions, which would be SO MUCH more straightforward if we could just use try/throw/catch.
My initial impression is that the missing link in proper exception support in avr-gcc is primarily a library problem, rather than a limitation within the compiler itself. But the linker errors are really not enough to go on, in terms of figuring out what functions need to be added and how they need to operate. I suspect it would require some insider knowledge about architectural and implementation details within GCC and its AVR backend.
Has anyone else previously investigated this? Any pointers about the best way forward if I wanted to try to get it working?
Regards,
Luke