v0.11.0-alpha.9 f9d41fc

linux.go RawHistoryFolder

1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build !cgo && linux
6
7package fakecgo
8
9import "unsafe"
10
11// argset matches runtime/cgocall.go:argset.
12type argset struct {
13	args   *uintptr
14	retval uintptr
15}
16
17//go:nosplit
18//go:norace
19func (a *argset) arg(i int) unsafe.Pointer {
20	return *(*unsafe.Pointer)(unsafe.Add(unsafe.Pointer(a.args), uintptr(i)*unsafe.Sizeof(uintptr(0))))
21}
22
23//go:linkname _cgo_libc_setegid syscall.cgo_libc_setegid
24//go:linkname _cgo_libc_seteuid syscall.cgo_libc_seteuid
25//go:linkname _cgo_libc_setgid syscall.cgo_libc_setgid
26//go:linkname _cgo_libc_setregid syscall.cgo_libc_setregid
27//go:linkname _cgo_libc_setresgid syscall.cgo_libc_setresgid
28//go:linkname _cgo_libc_setresuid syscall.cgo_libc_setresuid
29//go:linkname _cgo_libc_setreuid syscall.cgo_libc_setreuid
30//go:linkname _cgo_libc_setuid syscall.cgo_libc_setuid
31//go:linkname _cgo_libc_setgroups syscall.cgo_libc_setgroups
32
33var _cgo_libc_setegid = &_cgo_purego_setegid_trampoline
34var _cgo_libc_seteuid = &_cgo_purego_seteuid_trampoline
35var _cgo_libc_setgid = &_cgo_purego_setgid_trampoline
36var _cgo_libc_setregid = &_cgo_purego_setregid_trampoline
37var _cgo_libc_setresgid = &_cgo_purego_setresgid_trampoline
38var _cgo_libc_setresuid = &_cgo_purego_setresuid_trampoline
39var _cgo_libc_setreuid = &_cgo_purego_setreuid_trampoline
40var _cgo_libc_setuid = &_cgo_purego_setuid_trampoline
41var _cgo_libc_setgroups = &_cgo_purego_setgroups_trampoline
42
43//go:nosplit
44//go:norace
45func errno() int32 {
46	// this indirection is to avoid go vet complaining about possible misuse of unsafe.Pointer
47	loc := __errno_location()
48	return **(**int32)(unsafe.Pointer(&loc))
49}
50
51//go:linkname _cgo_purego_setegid_trampoline _cgo_purego_setegid_trampoline
52var _cgo_purego_setegid_trampoline byte
53var x_cgo_purego_setegid_call = x_cgo_purego_setegid
54
55//go:nosplit
56//go:norace
57func x_cgo_purego_setegid(c *argset) {
58	ret := setegid(uint32(uintptr(c.arg(0))))
59	if ret == -1 {
60		c.retval = uintptr(errno())
61	} else {
62		c.retval = uintptr(ret)
63	}
64}
65
66//go:linkname _cgo_purego_seteuid_trampoline _cgo_purego_seteuid_trampoline
67var _cgo_purego_seteuid_trampoline byte
68var x_cgo_purego_seteuid_call = x_cgo_purego_seteuid
69
70//go:nosplit
71//go:norace
72func x_cgo_purego_seteuid(c *argset) {
73	ret := seteuid(uint32(uintptr(c.arg(0))))
74	if ret == -1 {
75		c.retval = uintptr(errno())
76	} else {
77		c.retval = uintptr(ret)
78	}
79}
80
81//go:linkname _cgo_purego_setgid_trampoline _cgo_purego_setgid_trampoline
82var _cgo_purego_setgid_trampoline byte
83var x_cgo_purego_setgid_call = x_cgo_purego_setgid
84
85//go:nosplit
86//go:norace
87func x_cgo_purego_setgid(c *argset) {
88	ret := setgid(uint32(uintptr(c.arg(0))))
89	if ret == -1 {
90		c.retval = uintptr(errno())
91	} else {
92		c.retval = uintptr(ret)
93	}
94}
95
96//go:linkname _cgo_purego_setregid_trampoline _cgo_purego_setregid_trampoline
97var _cgo_purego_setregid_trampoline byte
98var x_cgo_purego_setregid_call = x_cgo_purego_setregid
99
100//go:nosplit
101//go:norace
102func x_cgo_purego_setregid(c *argset) {
103	ret := setregid(uint32(uintptr(c.arg(0))), uint32(uintptr(c.arg(1))))
104	if ret == -1 {
105		c.retval = uintptr(errno())
106	} else {
107		c.retval = uintptr(ret)
108	}
109}
110
111//go:linkname _cgo_purego_setresgid_trampoline _cgo_purego_setresgid_trampoline
112var _cgo_purego_setresgid_trampoline byte
113var x_cgo_purego_setresgid_call = x_cgo_purego_setresgid
114
115//go:nosplit
116//go:norace
117func x_cgo_purego_setresgid(c *argset) {
118	ret := setresgid(uint32(uintptr(c.arg(0))), uint32(uintptr(c.arg(1))), uint32(uintptr(c.arg(2))))
119	if ret == -1 {
120		c.retval = uintptr(errno())
121	} else {
122		c.retval = uintptr(ret)
123	}
124}
125
126//go:linkname _cgo_purego_setresuid_trampoline _cgo_purego_setresuid_trampoline
127var _cgo_purego_setresuid_trampoline byte
128var x_cgo_purego_setresuid_call = x_cgo_purego_setresuid
129
130//go:nosplit
131//go:norace
132func x_cgo_purego_setresuid(c *argset) {
133	ret := setresuid(uint32(uintptr(c.arg(0))), uint32(uintptr(c.arg(1))), uint32(uintptr(c.arg(2))))
134	if ret == -1 {
135		c.retval = uintptr(errno())
136	} else {
137		c.retval = uintptr(ret)
138	}
139}
140
141//go:linkname _cgo_purego_setreuid_trampoline _cgo_purego_setreuid_trampoline
142var _cgo_purego_setreuid_trampoline byte
143var x_cgo_purego_setreuid_call = x_cgo_purego_setreuid
144
145//go:nosplit
146//go:norace
147func x_cgo_purego_setreuid(c *argset) {
148	ret := setreuid(uint32(uintptr(c.arg(0))), uint32(uintptr(c.arg(1))))
149	if ret == -1 {
150		c.retval = uintptr(errno())
151	} else {
152		c.retval = uintptr(ret)
153	}
154}
155
156//go:linkname _cgo_purego_setuid_trampoline _cgo_purego_setuid_trampoline
157var _cgo_purego_setuid_trampoline byte
158var x_cgo_purego_setuid_call = x_cgo_purego_setuid
159
160//go:nosplit
161//go:norace
162func x_cgo_purego_setuid(c *argset) {
163	ret := setuid(uint32(uintptr(c.arg(0))))
164	if ret == -1 {
165		c.retval = uintptr(errno())
166	} else {
167		c.retval = uintptr(ret)
168	}
169}
170
171//go:linkname _cgo_purego_setgroups_trampoline _cgo_purego_setgroups_trampoline
172var _cgo_purego_setgroups_trampoline byte
173var x_cgo_purego_setgroups_call = x_cgo_purego_setgroups
174
175//go:nosplit
176//go:norace
177func x_cgo_purego_setgroups(c *argset) {
178	ret := setgroups(uint32(uintptr(c.arg(0))), (*uint32)(c.arg(1)))
179	if ret == -1 {
180		c.retval = uintptr(errno())
181	} else {
182		c.retval = uintptr(ret)
183	}
184}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close