On Sun, Jan 15, 2017 at 3:12 AM, Andreas Schwab <sch...@linux-m68k.org> wrote:
> In file included from ../../../libgo/runtime/runtime.h:113:0,
>                  from ../../../libgo/runtime/go-libmain.c:15:
> ./runtime.inc:650:8: error: redefinition of 'struct siginfo'
>  struct siginfo {
>         ^~~~~~~
> In file included from /usr/include/signal.h:79:0,
>                  from ../../../libgo/runtime/runtime.h:9,
>                  from ../../../libgo/runtime/go-libmain.c:15:
> /usr/include/bits/siginfo.h:46:16: note: originally defined here
>  typedef struct siginfo
>                 ^~~~~~~
> In file included from ../../../libgo/runtime/runtime.h:113:0,
>                  from ../../../libgo/runtime/go-main.c:17:
> ./runtime.inc:650:8: error: redefinition of 'struct siginfo'
>  struct siginfo {
>         ^~~~~~~
> In file included from /usr/include/signal.h:79:0,
>                  from ../../../libgo/runtime/runtime.h:9,
>                  from ../../../libgo/runtime/go-main.c:17:
> /usr/include/bits/siginfo.h:46:16: note: originally defined here
>  typedef struct siginfo
>                 ^~~~~~~
> In file included from ../../../libgo/runtime/runtime.h:113:0,
>                  from ../../../libgo/runtime/aeshash.c:7:
> ./runtime.inc:650:8: error: redefinition of 'struct siginfo'
>  struct siginfo {
>         ^~~~~~~
> In file included from /usr/include/signal.h:79:0,
>                  from ../../../libgo/runtime/runtime.h:9,
>                  from ../../../libgo/runtime/aeshash.c:7:
> /usr/include/bits/siginfo.h:46:16: note: originally defined here
>  typedef struct siginfo
>                 ^~~~~~~
> make[4]: *** [libgobegin_a-go-main.o] Error 1

Thanks.  I committed this patch, which I think should fix the problem.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 244483)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-a28b04adaeff8de61c336374db66b24ed96c30f0
+223cba75b947afc1ee5a13a60c15c66f6ff355c1
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/runtime/signal_gccgo.go
===================================================================
--- libgo/go/runtime/signal_gccgo.go    (revision 244456)
+++ libgo/go/runtime/signal_gccgo.go    (working copy)
@@ -46,15 +46,13 @@ func kill(pid _pid_t, sig uint32) int32
 //extern setitimer
 func setitimer(which int32, new *_itimerval, old *_itimerval) int32
 
-type siginfo _siginfo_t
-
 type sigTabT struct {
        flags int32
        name  string
 }
 
 type sigctxt struct {
-       info *siginfo
+       info *_siginfo_t
        ctxt unsafe.Pointer
 }
 
@@ -128,9 +126,9 @@ func raiseproc(sig uint32) {
 
 //go:nosplit
 //go:nowritebarrierrec
-func sigfwd(fn uintptr, sig uint32, info *siginfo, ctx unsafe.Pointer) {
+func sigfwd(fn uintptr, sig uint32, info *_siginfo_t, ctx unsafe.Pointer) {
        f1 := &[1]uintptr{fn}
-       f2 := *(*func(uint32, *siginfo, unsafe.Pointer))(unsafe.Pointer(&f1))
+       f2 := *(*func(uint32, *_siginfo_t, unsafe.Pointer))(unsafe.Pointer(&f1))
        f2(sig, info, ctx)
 }
 
Index: libgo/go/runtime/signal_sighandler.go
===================================================================
--- libgo/go/runtime/signal_sighandler.go       (revision 244456)
+++ libgo/go/runtime/signal_sighandler.go       (working copy)
@@ -25,7 +25,7 @@ var crashing int32
 // are not allowed.
 //
 //go:nowritebarrierrec
-func sighandler(sig uint32, info *siginfo, ctxt unsafe.Pointer, gp *g) {
+func sighandler(sig uint32, info *_siginfo_t, ctxt unsafe.Pointer, gp *g) {
        _g_ := getg()
        c := sigctxt{info, ctxt}
 
Index: libgo/go/runtime/signal_unix.go
===================================================================
--- libgo/go/runtime/signal_unix.go     (revision 244456)
+++ libgo/go/runtime/signal_unix.go     (working copy)
@@ -202,7 +202,7 @@ func sigpipe() {
 // This is called by the signal handler, and the world may be stopped.
 //go:nosplit
 //go:nowritebarrierrec
-func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) {
+func sigtrampgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) {
        if sigfwdgo(sig, info, ctx) {
                return
        }
@@ -446,7 +446,7 @@ func badsignal(sig uintptr, c *sigctxt)
 // This is called by the signal handler, and the world may be stopped.
 //go:nosplit
 //go:nowritebarrierrec
-func sigfwdgo(sig uint32, info *siginfo, ctx unsafe.Pointer) bool {
+func sigfwdgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) bool {
        if sig >= uint32(len(sigtable)) {
                return false
        }
Index: libgo/go/runtime/stubs.go
===================================================================
--- libgo/go/runtime/stubs.go   (revision 244456)
+++ libgo/go/runtime/stubs.go   (working copy)
@@ -485,10 +485,10 @@ func setSigactionHandler(*_sigaction, ui
 // Retrieve fields from the siginfo_t and ucontext_t pointers passed
 // to a signal handler using C, as they are often hidden in a union.
 // Returns  and, if available, PC where signal occurred.
-func getSiginfo(*siginfo, unsafe.Pointer) (sigaddr uintptr, sigpc uintptr)
+func getSiginfo(*_siginfo_t, unsafe.Pointer) (sigaddr uintptr, sigpc uintptr)
 
 // Implemented in C for gccgo.
-func dumpregs(*siginfo, unsafe.Pointer)
+func dumpregs(*_siginfo_t, unsafe.Pointer)
 
 // Temporary for gccgo until we port proc.go.
 //go:linkname getsched runtime.getsched

Reply via email to