In the update to 1.13 the mOS field of an m was embedded rather than
named.  This patch updates the HURD support for that change.  This
should fix GCC PR 92842.  I built the code on x86_64-pc-linux-gnu, but
that doesn't actually test this.  Committed to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 279032)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-e32651d37e0c43bb7595ac94363b079610bed746
+f04751699e1a1ce98fe8bdbcce5a00f1be6a7d15
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/runtime/os_hurd.go
===================================================================
--- libgo/go/runtime/os_hurd.go (revision 278984)
+++ libgo/go/runtime/os_hurd.go (working copy)
@@ -39,7 +39,7 @@ func sem_timedwait(sem *_sem_t, timeout
 
 //go:nosplit
 func semacreate(mp *m) {
-       if mp.mos.waitsema != 0 {
+       if mp.waitsema != 0 {
                return
        }
 
@@ -52,7 +52,7 @@ func semacreate(mp *m) {
        if sem_init(sem, 0, 0) != 0 {
                throw("sem_init")
        }
-       mp.mos.waitsema = uintptr(unsafe.Pointer(sem))
+       mp.waitsema = uintptr(unsafe.Pointer(sem))
 }
 
 //go:nosplit
@@ -62,7 +62,7 @@ func semasleep(ns int64) int32 {
                var ts timespec
                ts.setNsec(ns)
 
-               if sem_timedwait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema)), 
&ts) != 0 {
+               if sem_timedwait((*_sem_t)(unsafe.Pointer(_m_.waitsema)), &ts) 
!= 0 {
                        err := errno()
                        if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR 
{
                                return -1
@@ -72,7 +72,7 @@ func semasleep(ns int64) int32 {
                return 0
        }
        for {
-               r1 := sem_wait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema)))
+               r1 := sem_wait((*_sem_t)(unsafe.Pointer(_m_.waitsema)))
                if r1 == 0 {
                        break
                }
@@ -86,7 +86,7 @@ func semasleep(ns int64) int32 {
 
 //go:nosplit
 func semawakeup(mp *m) {
-       if sem_post((*_sem_t)(unsafe.Pointer(mp.mos.waitsema))) != 0 {
+       if sem_post((*_sem_t)(unsafe.Pointer(mp.waitsema))) != 0 {
                throw("sem_post")
        }
 }

Reply via email to