We're seeing the behavior below in 64-bit statically linked programs on PowerPC/Linux (this has the same effect: gcc -m64 t.cpp -lsupc++). Here's the stack trace, if it helps at all:
#0 0x00000000100010e8 in .__cxa_get_globals_fast () #1 0x0000000010000d60 in .__cxa_end_catch () #2 0x0000000010000a98 in main () at t.cpp:10 $ cat t.cpp && gcc --version && g++ -m64 t.cpp -static && ./a.out void foo () { throw 0; } int main () { try { try { foo (); } catch (...) { throw; } } catch (...) { return 0; } return 1; } $ cat t.cpp && gcc --version && g++ -m64 t.cpp -static && ./a.out void foo () { throw 0; } int main () { try { try { foo (); } catch (...) { throw; } } catch (...) { return 0; } return 1; } gcc (GCC) 3.3.3 (SuSE Linux) Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Segmentation fault gcc (GCC) 3.3.3 (SuSE Linux) Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Segmentation fault -- Summary: SIGSEGV rethrowing an exception with -m64 -static on ppc/linux Product: gcc Version: 3.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sebor at roguewave dot com GCC build triplet: powerpc-suse-linux GCC host triplet: powerpc-suse-linux GCC target triplet: powerpc-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28351