Created attachment 21986 [details] Script with code to show the error. A c++ program with -static-libgcc crashes on AIX (only) after throw. > terminate called after throwing an instance of 'DoException' > ./static-gcc-aix-no-catch.sh[52]: 226008 IOT/Abort trap(coredump) It works fine without "-static-libgcc" on AIX. GNU/Linux x86 does not have this problem. A sample script is attached. gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/opt/freeware/libexec/gcc/powerpc-ibm-aix6.1.0.0/4.5.1/lto-wrapper Target: powerpc-ibm-aix6.1.0.0 Configured with: ./configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++ --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --disable-nls --enable-decimal-float=dpd --host=powerpc-ibm-aix6.1.0.0 Thread model: aix gcc version 4.5.1 (GCC)
Stack trace with gdb 7.2: ( Compile option -O0 -g3 ) gdb static-gcc-aix-no-catch.static-libgcc GNU gdb (GDB) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "powerpc-ibm-aix6.1.0.0". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /tmp/static-gcc-aix-no-catch.static-libgcc...done. (gdb) r Starting program: /tmp/static-gcc-aix-no-catch.static-libgcc terminate called after throwing an instance of 'DoException' Program received signal SIGABRT, Aborted. 0xd0136800 in raise () from /usr/lib/libc.a(shr.o) (gdb) bt #0 0xd0136800 in raise () from /usr/lib/libc.a(shr.o) #1 0xd01a9028 in abort () from /usr/lib/libc.a(shr.o) #2 0xd4508990 in __gnu_cxx::__verbose_terminate_handler () at _start_ :93 #3 0xd451257c in __cxxabiv1::__terminate (handler=<error reading variable>) at _start_ :39 #4 0xd45087e8 in std::terminate () at _start_ :49 #5 0xd4512900 in __cxa_throw (obj=<error reading variable>, tinfo=<error reading variable>, dest=<error reading variable>) at _start_ :83 #6 0x100006b4 in DoTest () at /tmp/static-gcc-aix-no-catch.cpp:10 #7 0x100006f4 in main () at /tmp/static-gcc-aix-no-catch.cpp:16 (gdb)
Same error with gcc-4.2.4: g++ -v Using built-in specs. Target: powerpc-ibm-aix6.1.0.0 Configured with: ../gcc-4.2.4/configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++,fortran --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --disable-nls --enable-decimal-float=dpd --host=powerpc-ibm-aix6.1.0.0 Thread model: aix gcc version 4.2.4 ( packages from http://www.perzl.org/aix/ Latest AIX6.1 )
The problem does not happen with gcc-4.5.3 and gcc 4.6.1 on AIX 7.1. I exepct it's fixed in newer g++ versions. Christian