Skip to content

Commit b30814b

Browse files
runtime: add ctxt parameter to cgocallback called from Go
The cgocallback function picked up a ctxt parameter in CL 22508. That CL updated the assembler implementation, but there are a few mentions in Go code that were not updated. This CL fixes that. Fixes #16326 Change-Id: I5f68e23565c6a0b11057aff476d13990bff54a66 Reviewed-on: https://go-review.googlesource.com/24848 Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]> Reviewed-by: Minux Ma <[email protected]>
1 parent 1f4e68d commit b30814b

8 files changed

+13
-13
lines changed

src/runtime/cgocall.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
// call arbitrary Go code directly and must be careful not to allocate
4545
// memory or use up m->g0's stack.
4646
//
47-
// _cgoexp_GoF calls runtime.cgocallback(p.GoF, frame, framesize).
47+
// _cgoexp_GoF calls runtime.cgocallback(p.GoF, frame, framesize, ctxt).
4848
// (The reason for having _cgoexp_GoF instead of writing a crosscall3
4949
// to make this call directly is that _cgoexp_GoF, because it is compiled
5050
// with 6c instead of gcc, can refer to dotted names like

src/runtime/os_nacl.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ func memlimit() uintptr {
246246
//go:norace
247247
//go:nowritebarrierrec
248248
func badsignal(sig uintptr) {
249-
cgocallback(unsafe.Pointer(funcPC(badsignalgo)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
249+
cgocallback(unsafe.Pointer(funcPC(badsignalgo)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
250250
}
251251

252252
func badsignalgo(sig uintptr) {

src/runtime/signal1_unix.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func sigNotOnStack(sig uint32) {
338338
//go:norace
339339
//go:nowritebarrierrec
340340
func badsignal(sig uintptr, c *sigctxt) {
341-
cgocallback(unsafe.Pointer(funcPC(badsignalgo)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig)+unsafe.Sizeof(c))
341+
cgocallback(unsafe.Pointer(funcPC(badsignalgo)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig)+unsafe.Sizeof(c), 0)
342342
}
343343

344344
func badsignalgo(sig uintptr, c *sigctxt) {

src/runtime/signal_darwin.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ func sigtrampgo(fn uintptr, infostyle, sig uint32, info *siginfo, ctx unsafe.Poi
7070
sigaltstack(nil, &st)
7171
if st.ss_flags&_SS_DISABLE != 0 {
7272
setg(nil)
73-
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
73+
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7474
}
7575
stsp := uintptr(unsafe.Pointer(st.ss_sp))
7676
if sp < stsp || sp >= stsp+st.ss_size {
7777
setg(nil)
78-
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
78+
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7979
}
8080
g.m.gsignal.stack.lo = stsp
8181
g.m.gsignal.stack.hi = stsp + st.ss_size

src/runtime/signal_freebsd.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) {
6666
sigaltstack(nil, &st)
6767
if st.ss_flags&_SS_DISABLE != 0 {
6868
setg(nil)
69-
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
69+
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7070
}
7171
stsp := uintptr(unsafe.Pointer(st.ss_sp))
7272
if sp < stsp || sp >= stsp+st.ss_size {
7373
setg(nil)
74-
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
74+
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7575
}
7676
g.m.gsignal.stack.lo = stsp
7777
g.m.gsignal.stack.hi = stsp + st.ss_size

src/runtime/signal_openbsd.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) {
6666
sigaltstack(nil, &st)
6767
if st.ss_flags&_SS_DISABLE != 0 {
6868
setg(nil)
69-
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
69+
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7070
}
7171
stsp := uintptr(unsafe.Pointer(st.ss_sp))
7272
if sp < stsp || sp >= stsp+st.ss_size {
7373
setg(nil)
74-
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
74+
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
7575
}
7676
g.m.gsignal.stack.lo = stsp
7777
g.m.gsignal.stack.hi = stsp + st.ss_size

src/runtime/signal_sigtramp.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ func sigtrampgo(sig uint32, info *siginfo, ctx unsafe.Pointer) {
3737
sigaltstack(nil, &st)
3838
if st.ss_flags&_SS_DISABLE != 0 {
3939
setg(nil)
40-
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
40+
cgocallback(unsafe.Pointer(funcPC(noSignalStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
4141
}
4242
stsp := uintptr(unsafe.Pointer(st.ss_sp))
4343
if sp < stsp || sp >= stsp+st.ss_size {
4444
setg(nil)
45-
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig))
45+
cgocallback(unsafe.Pointer(funcPC(sigNotOnStack)), noescape(unsafe.Pointer(&sig)), unsafe.Sizeof(sig), 0)
4646
}
4747
g.m.gsignal.stack.lo = stsp
4848
g.m.gsignal.stack.hi = stsp + st.ss_size

src/runtime/stubs.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func noescape(p unsafe.Pointer) unsafe.Pointer {
9898
return unsafe.Pointer(x ^ 0)
9999
}
100100

101-
func cgocallback(fn, frame unsafe.Pointer, framesize uintptr)
101+
func cgocallback(fn, frame unsafe.Pointer, framesize, ctxt uintptr)
102102
func gogo(buf *gobuf)
103103
func gosave(buf *gobuf)
104104
func mincore(addr unsafe.Pointer, n uintptr, dst *byte) int32
@@ -143,7 +143,7 @@ func goexit(neverCallThisFunction)
143143
// cgocallback_gofunc is not called from go, only from cgocallback,
144144
// so the arguments will be found via cgocallback's pointer-declared arguments.
145145
// See the assembly implementations for more details.
146-
func cgocallback_gofunc(fv uintptr, frame uintptr, framesize uintptr)
146+
func cgocallback_gofunc(fv uintptr, frame uintptr, framesize, ctxt uintptr)
147147

148148
// publicationBarrier performs a store/store barrier (a "publication"
149149
// or "export" barrier). Some form of synchronization is required

0 commit comments

Comments
 (0)