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

Reply via email to