https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66212
Bug ID: 66212
Summary: Exception handling broken on powerpc
Product: gcc
Version: 5.1.0
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: andri.yngvason at marel dot com
Target Milestone: ---
All exceptions cause the running process to be aborted.
The following program is aborted when trying to unwind the stack:
#include <exception>
#include <stdexcept>
#include <iostream>
using std::cout;
using std::endl;
void foobar()
{
cout << "..." << endl;
throw std::runtime_error("Whoohoo");
cout << "Wtf?" << endl;
}
int main(int, char**)
{
cout << "Throwing standard exception..." << endl;
try {
foobar();
} catch(std::exception& e) {
cout << "Caught: " << e.what() << endl;
}
cout << "Done!" << endl;
return 0;
}
Backtrace:
#0 0x0fbff76c in raise () from /lib/libc.so.6
#1 0x0fc010cc in abort () from /lib/libc.so.6
#2 0x0fd5fc1c in uw_init_context_1 () from /lib/glibc2.21/libgcc_s.so.1
#3 0x0fd60408 in _Unwind_RaiseException () from /lib/glibc2.21/libgcc_s.so.1
#4 0x0fed10ac in __cxa_throw () at
../../../../gcc-5.1.0/libstdc++-v3/libsupc++/eh_throw.cc:82
#5 0x10000c28 in foobar() ()
#6 0x10000cac in main ()
$ powerpc-marel-linux-gnu-g++ -v
Using built-in specs.
COLLECT_GCC=powerpc-marel-linux-gnu-g++
COLLECT_LTO_WRAPPER=/opt/plutotoolchain/libexec/gcc/powerpc-marel-linux-gnu/5.1.0/lto-wrapper
Target: powerpc-marel-linux-gnu
Configured with: ../gcc-5.1.0/configure --prefix=/opt/plutotoolchain
--target=powerpc-marel-linux-gnu --enable-languages=c,c++
--enable-threads=posix --enable-shared --disable-multilib --enable-__cxa_atexit
--disable-sjlj-exceptions --disable-nls --enable-symvers=gnu --enable-c99
--enable-long-long --enable-profile --with-tune=e300c3 --disable-altivec
Thread model: posix
gcc version 5.1.0 (GCC)
I tried to compile libgcc with debug symbols so that I could see which
assertion fails, but my attempts had no effect. I'd be happy to learn how to
get those debug symbols in there.