Skip to content

Commit e8a74dc

Browse files
committed
runtime: fix solaris build, part 2
This file was already assigned to another CL so it didn't make it into the build fix CL. Sigh. TBR=iant CC=golang-codereviews https://golang.org/cl/144850043
1 parent 6c59cdc commit e8a74dc

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

src/runtime/os_solaris.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,69 +31,70 @@ var asmsysvicall6 libcFunc
3131
//go:nosplit
3232
func sysvicall0(fn *libcFunc) uintptr {
3333
libcall := &getg().m.libcall
34-
libcall.fn = unsafe.Pointer(fn)
34+
libcall.fn = uintptr(unsafe.Pointer(fn))
3535
libcall.n = 0
36-
libcall.args = unsafe.Pointer(fn) // it's unused but must be non-nil, otherwise crashes
36+
// TODO(rsc): Why is noescape necessary here and below?
37+
libcall.args = uintptr(noescape(unsafe.Pointer(&fn))) // it's unused but must be non-nil, otherwise crashes
3738
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
3839
return libcall.r1
3940
}
4041

4142
//go:nosplit
4243
func sysvicall1(fn *libcFunc, a1 uintptr) uintptr {
4344
libcall := &getg().m.libcall
44-
libcall.fn = unsafe.Pointer(fn)
45+
libcall.fn = uintptr(unsafe.Pointer(fn))
4546
libcall.n = 1
46-
libcall.args = noescape(unsafe.Pointer(&a1))
47+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
4748
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
4849
return libcall.r1
4950
}
5051

5152
//go:nosplit
5253
func sysvicall2(fn *libcFunc, a1, a2 uintptr) uintptr {
5354
libcall := &getg().m.libcall
54-
libcall.fn = unsafe.Pointer(fn)
55+
libcall.fn = uintptr(unsafe.Pointer(fn))
5556
libcall.n = 2
56-
libcall.args = noescape(unsafe.Pointer(&a1))
57+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
5758
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
5859
return libcall.r1
5960
}
6061

6162
//go:nosplit
6263
func sysvicall3(fn *libcFunc, a1, a2, a3 uintptr) uintptr {
6364
libcall := &getg().m.libcall
64-
libcall.fn = unsafe.Pointer(fn)
65+
libcall.fn = uintptr(unsafe.Pointer(fn))
6566
libcall.n = 3
66-
libcall.args = noescape(unsafe.Pointer(&a1))
67+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
6768
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
6869
return libcall.r1
6970
}
7071

7172
//go:nosplit
7273
func sysvicall4(fn *libcFunc, a1, a2, a3, a4 uintptr) uintptr {
7374
libcall := &getg().m.libcall
74-
libcall.fn = unsafe.Pointer(fn)
75+
libcall.fn = uintptr(unsafe.Pointer(fn))
7576
libcall.n = 4
76-
libcall.args = noescape(unsafe.Pointer(&a1))
77+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
7778
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
7879
return libcall.r1
7980
}
8081

8182
//go:nosplit
8283
func sysvicall5(fn *libcFunc, a1, a2, a3, a4, a5 uintptr) uintptr {
8384
libcall := &getg().m.libcall
84-
libcall.fn = unsafe.Pointer(fn)
85+
libcall.fn = uintptr(unsafe.Pointer(fn))
8586
libcall.n = 5
86-
libcall.args = noescape(unsafe.Pointer(&a1))
87+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
8788
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
8889
return libcall.r1
8990
}
9091

9192
//go:nosplit
9293
func sysvicall6(fn *libcFunc, a1, a2, a3, a4, a5, a6 uintptr) uintptr {
9394
libcall := &getg().m.libcall
94-
libcall.fn = unsafe.Pointer(fn)
95+
libcall.fn = uintptr(unsafe.Pointer(fn))
9596
libcall.n = 6
96-
libcall.args = noescape(unsafe.Pointer(&a1))
97+
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
9798
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
9899
return libcall.r1
99100
}

0 commit comments

Comments
 (0)