https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72814
Bug ID: 72814 Summary: reflect FAILs on 32-bit Solaris/SPARC: SIGILL Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: ro at gcc dot gnu.org CC: cmang at google dot com Target Milestone: --- Host: sparc*-sun-solaris2.* Target: sparc*-sun-solaris2.* Build: sparc*-sun-solaris2.* When building to avoid PR go/72812, the 32-bit reflect test FAILs on Solaris/SPARC: Illegal Instruction runtime_sighandler /vol/gcc/src/hg/trunk/local/libgo/runtime/go-signal.c:223 :0 [...] Thread 6 received signal SIGILL, Illegal instruction. [Switching to Thread 4 (LWP 4)] 0xff0d2ea8 in ffi_call_v8 () at /vol/gcc/src/hg/trunk/local/libffi/src/sparc/v8.S:225 225 rept256; rept256; rept256; rept256 1: x/i $pc => 0xff0d2ea8 <ffi_call_v8+440>: illtrap 0x1 (gdb) where #0 0xff0d2ea8 in ffi_call_v8 () at /vol/gcc/src/hg/trunk/local/libffi/src/sparc/v8.S:225 #1 0xfeca7da4 in reflect.call ( func_type=0x981b4 <__go_td_FrN24_reflect_test.emptyStructee>, func_val=0x98188 <reflect_test.returnEmpty$descriptor>, is_interface=<optimized out>, is_method=<optimized out>, params=0x0, results=0x1030cbc8) at /vol/gcc/src/hg/trunk/local/libgo/runtime/go-reflect-call.c:225 #2 0x000b23d0 in reflect.call.N13_reflect.Value ( pointer=pointer@entry=0x111aa590, op=<error reading variable: Cannot access memory at address 0x99>, param=...) at value.go:451 #3 0x000b18cc in reflect.Call.N13_reflect.Value ( pointer=pointer@entry=0x10d71d3c, in=...) at value.go:299 #4 0x000ce690 in reflect_test.TestCallWithStruct (t=0x1074e680) at all_test.go:1509 #5 0xfeda315c in testing.tRunner (param=0x1074e680, fn=0x98310 <reflect_test.TestCallWithStruct$descriptor>) at /vol/gcc/src/hg/trunk/local/libgo/go/testing/testing.go:609 #6 0xfeda31cc in testing.$thunk22 (__go_thunk_parameter=0x1030cb98) at /vol/gcc/src/hg/trunk/local/libgo/go/testing/testing.go:645 #7 0xfecb75bc in kickoff () at /vol/gcc/src/hg/trunk/local/libgo/runtime/proc.c:235 #8 0xfe14a46c in __makecontext_v2 () from /lib/libc.so.1 It seems that the SIGILL is expected here and libgo catching it interferes with libffi. Rainer