Hello, I have a problem with a (big) C++ program compiled with gcc 4.4.0 on a 64-bit Sparc.
Target: sparc-sun-solaris2.10 Configured with: /opt/sources/gnu/gcc-4.4.0/configure --prefix=/opt/gnu/gcc-4.4.0 --with-local-prefix=/opt/gnu/gcc-4.4.0 --enable-threads=posix --with-cpu=ultrasparc3 --enable-tls=yes --with-tune=ultrasparc3 --enable-languages=c,c++ --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --with-gmp=/opt/gnu/gmp-4.2.1 --with-mpfr=/opt/gnu/mpfr-2.4.1 --disable-nls Thread model: posix gcc version 4.4.0 (GCC) The compiler generated the following code (debug version): 0xffffffff751407b4 <Functions+204>: nop 0xffffffff751407b8 <Functions+208>: ldx [ %fp + 0x87f ], %o0 0xffffffff751407bc <Functions+212>: clr %o1 0xffffffff751407c0 <Functions+216>: call 0xffffffff7543bc00 <_zn6parser8internal9functions11setcategoryens0_11eh_catego...@plt> 0xffffffff751407c4 <Functions+220>: nop 0xffffffff751407c8 <Functions+224>: ta 5 <=== Here the SIGILL happens The function SetCategory(v) returns void and simply assigns the value of v to a class member, so there are no trap conditions. TA, on the other hand, stands for "trap always", so the condition code is unimportant anyway. Why has the trap instruction been generated? Best regards Piotr Wyderski