Can you help please to make compiler gcc 4.2 work? 2014-10-16 16:47 GMT+04:00 alexander.bubnov@xxxxxxxxx <alexander.bubnov@xxxxxxxxx>: > Hello! > If I build toolchain based on gcc 4.6.3 compiler it works fine and > catching exceptions does not lead to abort() call. > > 2014-10-16 15:30 GMT+04:00 alexander.bubnov@xxxxxxxxx > <alexander.bubnov@xxxxxxxxx>: >> Hello! >> I have compiled cross compiler gcc 4.2.3 for FreeBSD using >> binutils-2.17.50. To compiler that compiler I used gcc 4.4.3 compiler. >> >> Before that I patched files removing freebsd1* and freebsd[1... and >> freebsd[[1 if/case. It is well known problem which I found in >> Changelog of gcc 4.6.3 >> >> binutils-2.17.5/ld/configure >> binutils-2.17.5/gas/configure >> binutils-2.17.5/gprof/configure >> binutils-2.17.5/opcodes/configure >> binutils-2.17.5/configure >> binutils-2.17.5/binutils/configure >> binutils-2.17.5/bfd/configure >> binutils-2.17.5/config.rpath >> binutils-2.17.5/libtool.m4 >> binutils-2.17.5/ld/configure.host >> binutils-2.17.5/ld/configure.tgt >> binutils-2.17.5/bfd/config.bfd >> binutils-2.17.5/bfd/configure >> >> gcc-4.2.3/boehm-gc/configure >> gcc-4.2.3/configure >> gcc-4.2.3/fixincludes/configure >> gcc-4.2.3/gcc/configure >> gcc-4.2.3/gnattools/configure >> gcc-4.2.3/intl/configure >> gcc-4.2.3/libada/configure >> gcc-4.2.3/libcpp/configure >> gcc-4.2.3/libdecnumber/configure >> gcc-4.2.3/libffi/configure >> gcc-4.2.3/libgfortran/configure >> gcc-4.2.3/libgomp/configure >> gcc-4.2.3/libiberty/configure >> gcc-4.2.3/libjava/classpath/configure >> gcc-4.2.3/libjava/configure >> gcc-4.2.3/libjava/libltdl/configure >> gcc-4.2.3/libmudflap/configure >> gcc-4.2.3/libobjc/configure >> gcc-4.2.3/libssp/configure >> gcc-4.2.3/libstdc++-v3/configure >> gcc-4.2.3/zlib/configure >> gcc compiler built with no errors. >> >> Next I tried to compile a simple example of c++ code >> >> int main() >> { >> try >> { >> throw 10; >> } >> catch(...) >> { >> return 1; >> } >> >> return 0; >> } >> But I got a coredump >> >> root@:~ # ./42.out >> Abort (core dumped) >> root@:~ # ldd ./42.out >> ./42.out: >> libstdc++.so.6 => /root/4.2/libstdc++.so.6 (0x28069000) >> libm.so.5 => /lib/libm.so.5 (0x28155000) >> libgcc_s.so.1 => /root/4.2/libgcc_s.so.1 (0x28177000) >> libc.so.7 => /lib/libc.so.7 (0x28185000) >> >> root@:~ # gdb 42.out 42.out.core >> GNU gdb 6.1.1 [FreeBSD] >> Copyright 2004 Free Software Foundation, Inc. >> GDB is free software, covered by the GNU General Public License, and you are >> welcome to change it and/or distribute copies of it under certain conditions. >> Type "show copying" to see the conditions. >> There is absolutely no warranty for GDB. Type "show warranty" for details. >> This GDB was configured as "i386-marcel-freebsd"...(no debugging >> symbols found)... >> Attaching to program: /root/42.out, process 42 >> ptrace: No such process. >> Core was generated by `42.out'. >> Program terminated with signal 6, Aborted. >> Reading symbols from /root/4.2/libstdc++.so.6...done. >> Loaded symbols for /root/4.2/libstdc++.so.6 >> Reading symbols from /lib/libm.so.5...done. >> Loaded symbols for /lib/libm.so.5 >> Reading symbols from /root/4.2/libgcc_s.so.1...done. >> Loaded symbols for /root/4.2/libgcc_s.so.1 >> Reading symbols from /lib/libc.so.7...done. >> Loaded symbols for /lib/libc.so.7 >> Reading symbols from /libexec/ld-elf.so.1...done. >> Loaded symbols for /libexec/ld-elf.so.1 >> #0 0x282afed7 in kill () from /lib/libc.so.7 >> (gdb) bt >> #0 0x282afed7 in kill () from /lib/libc.so.7 >> #1 0x282afe67 in raise () from /lib/libc.so.7 >> #2 0x282ae8a6 in abort () from /lib/libc.so.7 >> #3 0x28180078 in uw_init_context_1 (context=0xbfbfdb68, >> outer_cfa=0xbfbfdc10, outer_ra=0x281214f1) at >> ../../gcc/unwind-dw2.c:1413 >> #4 0x281804e2 in _Unwind_RaiseException (exc=0x28803070) at unwind.inc:92 >> #5 0x281214f1 in __cxa_throw (obj=0x28803090, tinfo=0x80499a0, >> dest=0) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:71 >> #6 0x08048770 in main () >> >> part of gcc/unwind-dw2.c:1413 >> ... >> code = uw_frame_state_for (context, &fs); >> gcc_assert (code == _URC_NO_REASON); <--- line 14, here I got code >> == _URC_END_OF_STACK >> ... >> >> Then I linked libgcc and libstdc++ statically >> >> root@:~ # ldd 42.out >> 42.out: >> libm.so.5 => /lib/libm.so.5 (0x2807c000) >> libc.so.7 => /lib/libc.so.7 (0x2809e000) >> >> But the problem was reproducted again >> >> root@:~ # ./42.out >> Abort (core dumped) >> >> With the same stack trace >> >> root@:~ # gdb 42.out 42.out.core >> GNU gdb 6.1.1 [FreeBSD] >> Copyright 2004 Free Software Foundation, Inc. >> GDB is free software, covered by the GNU General Public License, and you are >> welcome to change it and/or distribute copies of it under certain conditions. >> Type "show copying" to see the conditions. >> There is absolutely no warranty for GDB. Type "show warranty" for details. >> This GDB was configured as "i386-marcel-freebsd"... >> Attaching to program: /root/42.out, process 42 >> ptrace: No such process. >> Core was generated by `42.out'. >> Program terminated with signal 6, Aborted. >> Reading symbols from /lib/libm.so.5...done. >> Loaded symbols for /lib/libm.so.5 >> Reading symbols from /lib/libc.so.7...done. >> Loaded symbols for /lib/libc.so.7 >> Reading symbols from /libexec/ld-elf.so.1...done. >> Loaded symbols for /libexec/ld-elf.so.1 >> #0 0x281c8ed7 in kill () from /lib/libc.so.7 >> (gdb) bt >> #0 0x281c8ed7 in kill () from /lib/libc.so.7 >> #1 0x281c8e67 in raise () from /lib/libc.so.7 >> #2 0x281c78a6 in abort () from /lib/libc.so.7 >> #3 0x08056268 in uw_init_context_1 (context=0xbfbfdb68, >> outer_cfa=0xbfbfdc10, outer_ra=0x804d537) at >> ../../gcc/unwind-dw2.c:1413 >> #4 0x080566d2 in _Unwind_RaiseException (exc=0x28803070) at unwind.inc:92 >> #5 0x0804d537 in __cxa_throw (obj=0x28803090, tinfo=0x805c480, >> dest=0) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:71 >> #6 0x080492c0 in main () >> >> Can you please tell me where to dig to get workable compiler? >> >> -- >> /BR, Alexander > > > > -- > /BR, Alexander -- /BR, Alexander