detached 8b02958

chore: switch purego dependency to bnema/purego fork

Replace local path replace directive with GitHub URL pointing to
bnema/purego@91aa177 to avoid accidental pushes to upstream.
commit
8b029581aa8aebd90aa84a2b638058062afa9bdd
author
brice · · 2026-03-23 19:51 UTC
parent
f14f9b6
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
51 files · +1860 -488
M go.mod +2 -0
@@ -3,3 +3,5 @@ module github.com/bnema/puregotk
33 go 1.26.1
44
55 require github.com/ebitengine/purego v0.10.0
6+
7+replace github.com/ebitengine/purego => github.com/bnema/purego v0.0.0-20260323095903-91aa177a2704
@@ -3,3 +3,5 @@ module github.com/bnema/puregotk
3 go 1.26.13 go 1.26.1
4 4
5 require github.com/ebitengine/purego v0.10.05 require github.com/ebitengine/purego v0.10.0
6+
7+replace github.com/ebitengine/purego => github.com/bnema/purego v0.0.0-20260323095903-91aa177a2704
M go.sum +2 -2 generated file: collapsed
M vendor/github.com/ebitengine/purego/README.md +3 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/dlfcn_nocgo_netbsd.go +2 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/func.go +220 -107 generated file: collapsed
A vendor/github.com/ebitengine/purego/hostlayout_go123.go +12 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/hostlayout_nogo123.go +11 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/abi_riscv64.h +72 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/asm_riscv64.s +14 -55 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/go_freebsd.go +4 -25 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/go_linux.go +4 -25 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/go_netbsd.go +4 -25 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/libcgo_netbsd.go +2 -2 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/linux.go +184 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/netbsd.go +1 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_386.s +18 -4 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_amd64.s +1 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_arm.s +44 -3 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_arm64.s +1 -4 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_386.s +78 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_amd64.s +69 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_arm.s +69 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_arm64.s +60 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_loong64.s +60 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_ppc64le.s +69 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_linux_riscv64.s +60 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_loong64.s +1 -11 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_ppc64le.s +30 -129 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_riscv64.s +11 -7 generated file: collapsed
M vendor/github.com/ebitengine/purego/internal/fakecgo/zsymbols_linux.go +110 -0
@@ -16,6 +16,16 @@ import "unsafe"
1616 //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6"
1717 //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6"
1818 //go:cgo_import_dynamic purego_abort abort "libc.so.6"
19+//go:cgo_import_dynamic purego___errno_location __errno_location "libc.so.6"
20+//go:cgo_import_dynamic purego_setegid setegid "libc.so.6"
21+//go:cgo_import_dynamic purego_seteuid seteuid "libc.so.6"
22+//go:cgo_import_dynamic purego_setgid setgid "libc.so.6"
23+//go:cgo_import_dynamic purego_setregid setregid "libc.so.6"
24+//go:cgo_import_dynamic purego_setresgid setresgid "libc.so.6"
25+//go:cgo_import_dynamic purego_setresuid setresuid "libc.so.6"
26+//go:cgo_import_dynamic purego_setreuid setreuid "libc.so.6"
27+//go:cgo_import_dynamic purego_setuid setuid "libc.so.6"
28+//go:cgo_import_dynamic purego_setgroups setgroups "libc.so.6"
1929 //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0"
2030 //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0"
2131 //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0"
@@ -27,6 +37,66 @@ import "unsafe"
2737 //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0"
2838 //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0"
2939
40+//go:nosplit
41+//go:norace
42+func __errno_location() uintptr {
43+ return uintptr(call5(__errno_locationABI0, 0, 0, 0, 0, 0))
44+}
45+
46+//go:nosplit
47+//go:norace
48+func setegid(egid uint32) int32 {
49+ return int32(call5(setegidABI0, uintptr(egid), 0, 0, 0, 0))
50+}
51+
52+//go:nosplit
53+//go:norace
54+func seteuid(euid uint32) int32 {
55+ return int32(call5(seteuidABI0, uintptr(euid), 0, 0, 0, 0))
56+}
57+
58+//go:nosplit
59+//go:norace
60+func setgid(gid uint32) int32 {
61+ return int32(call5(setgidABI0, uintptr(gid), 0, 0, 0, 0))
62+}
63+
64+//go:nosplit
65+//go:norace
66+func setregid(rgid uint32, egid uint32) int32 {
67+ return int32(call5(setregidABI0, uintptr(rgid), uintptr(egid), 0, 0, 0))
68+}
69+
70+//go:nosplit
71+//go:norace
72+func setresgid(rgid uint32, egid uint32, sgid uint32) int32 {
73+ return int32(call5(setresgidABI0, uintptr(rgid), uintptr(egid), uintptr(sgid), 0, 0))
74+}
75+
76+//go:nosplit
77+//go:norace
78+func setresuid(ruid uint32, euid uint32, suid uint32) int32 {
79+ return int32(call5(setresuidABI0, uintptr(ruid), uintptr(euid), uintptr(suid), 0, 0))
80+}
81+
82+//go:nosplit
83+//go:norace
84+func setreuid(ruid uint32, euid uint32) int32 {
85+ return int32(call5(setreuidABI0, uintptr(ruid), uintptr(euid), 0, 0, 0))
86+}
87+
88+//go:nosplit
89+//go:norace
90+func setuid(uid uint32) int32 {
91+ return int32(call5(setuidABI0, uintptr(uid), 0, 0, 0, 0))
92+}
93+
94+//go:nosplit
95+//go:norace
96+func setgroups(ngid uint32, gidset *uint32) int32 {
97+ return int32(call5(setgroupsABI0, uintptr(ngid), uintptr(unsafe.Pointer(gidset)), 0, 0, 0))
98+}
99+
30100 //go:nosplit
31101 //go:norace
32102 func pthread_attr_getstacksize(attr *pthread_attr_t, stacksize *size_t) int32 {
@@ -39,6 +109,46 @@ func pthread_attr_destroy(attr *pthread_attr_t) int32 {
39109 return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0))
40110 }
41111
112+//go:linkname ___errno_location ___errno_location
113+var ___errno_location uint8
114+var __errno_locationABI0 = uintptr(unsafe.Pointer(&___errno_location))
115+
116+//go:linkname _setegid _setegid
117+var _setegid uint8
118+var setegidABI0 = uintptr(unsafe.Pointer(&_setegid))
119+
120+//go:linkname _seteuid _seteuid
121+var _seteuid uint8
122+var seteuidABI0 = uintptr(unsafe.Pointer(&_seteuid))
123+
124+//go:linkname _setgid _setgid
125+var _setgid uint8
126+var setgidABI0 = uintptr(unsafe.Pointer(&_setgid))
127+
128+//go:linkname _setregid _setregid
129+var _setregid uint8
130+var setregidABI0 = uintptr(unsafe.Pointer(&_setregid))
131+
132+//go:linkname _setresgid _setresgid
133+var _setresgid uint8
134+var setresgidABI0 = uintptr(unsafe.Pointer(&_setresgid))
135+
136+//go:linkname _setresuid _setresuid
137+var _setresuid uint8
138+var setresuidABI0 = uintptr(unsafe.Pointer(&_setresuid))
139+
140+//go:linkname _setreuid _setreuid
141+var _setreuid uint8
142+var setreuidABI0 = uintptr(unsafe.Pointer(&_setreuid))
143+
144+//go:linkname _setuid _setuid
145+var _setuid uint8
146+var setuidABI0 = uintptr(unsafe.Pointer(&_setuid))
147+
148+//go:linkname _setgroups _setgroups
149+var _setgroups uint8
150+var setgroupsABI0 = uintptr(unsafe.Pointer(&_setgroups))
151+
42152 //go:linkname _pthread_attr_getstacksize _pthread_attr_getstacksize
43153 var _pthread_attr_getstacksize uint8
44154 var pthread_attr_getstacksizeABI0 = uintptr(unsafe.Pointer(&_pthread_attr_getstacksize))
@@ -16,6 +16,16 @@ import "unsafe"
16 //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6"16 //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6"
17 //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6"17 //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6"
18 //go:cgo_import_dynamic purego_abort abort "libc.so.6"18 //go:cgo_import_dynamic purego_abort abort "libc.so.6"
19+//go:cgo_import_dynamic purego___errno_location __errno_location "libc.so.6"
20+//go:cgo_import_dynamic purego_setegid setegid "libc.so.6"
21+//go:cgo_import_dynamic purego_seteuid seteuid "libc.so.6"
22+//go:cgo_import_dynamic purego_setgid setgid "libc.so.6"
23+//go:cgo_import_dynamic purego_setregid setregid "libc.so.6"
24+//go:cgo_import_dynamic purego_setresgid setresgid "libc.so.6"
25+//go:cgo_import_dynamic purego_setresuid setresuid "libc.so.6"
26+//go:cgo_import_dynamic purego_setreuid setreuid "libc.so.6"
27+//go:cgo_import_dynamic purego_setuid setuid "libc.so.6"
28+//go:cgo_import_dynamic purego_setgroups setgroups "libc.so.6"
19 //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0"29 //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0"
20 //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0"30 //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0"
21 //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0"31 //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0"
@@ -27,6 +37,66 @@ import "unsafe"
27 //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0"37 //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0"
28 //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0"38 //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0"
29 39
40+//go:nosplit
41+//go:norace
42+func __errno_location() uintptr {
43+ return uintptr(call5(__errno_locationABI0, 0, 0, 0, 0, 0))
44+}
45+
46+//go:nosplit
47+//go:norace
48+func setegid(egid uint32) int32 {
49+ return int32(call5(setegidABI0, uintptr(egid), 0, 0, 0, 0))
50+}
51+
52+//go:nosplit
53+//go:norace
54+func seteuid(euid uint32) int32 {
55+ return int32(call5(seteuidABI0, uintptr(euid), 0, 0, 0, 0))
56+}
57+
58+//go:nosplit
59+//go:norace
60+func setgid(gid uint32) int32 {
61+ return int32(call5(setgidABI0, uintptr(gid), 0, 0, 0, 0))
62+}
63+
64+//go:nosplit
65+//go:norace
66+func setregid(rgid uint32, egid uint32) int32 {
67+ return int32(call5(setregidABI0, uintptr(rgid), uintptr(egid), 0, 0, 0))
68+}
69+
70+//go:nosplit
71+//go:norace
72+func setresgid(rgid uint32, egid uint32, sgid uint32) int32 {
73+ return int32(call5(setresgidABI0, uintptr(rgid), uintptr(egid), uintptr(sgid), 0, 0))
74+}
75+
76+//go:nosplit
77+//go:norace
78+func setresuid(ruid uint32, euid uint32, suid uint32) int32 {
79+ return int32(call5(setresuidABI0, uintptr(ruid), uintptr(euid), uintptr(suid), 0, 0))
80+}
81+
82+//go:nosplit
83+//go:norace
84+func setreuid(ruid uint32, euid uint32) int32 {
85+ return int32(call5(setreuidABI0, uintptr(ruid), uintptr(euid), 0, 0, 0))
86+}
87+
88+//go:nosplit
89+//go:norace
90+func setuid(uid uint32) int32 {
91+ return int32(call5(setuidABI0, uintptr(uid), 0, 0, 0, 0))
92+}
93+
94+//go:nosplit
95+//go:norace
96+func setgroups(ngid uint32, gidset *uint32) int32 {
97+ return int32(call5(setgroupsABI0, uintptr(ngid), uintptr(unsafe.Pointer(gidset)), 0, 0, 0))
98+}
99+
30 //go:nosplit100 //go:nosplit
31 //go:norace101 //go:norace
32 func pthread_attr_getstacksize(attr *pthread_attr_t, stacksize *size_t) int32 {102 func pthread_attr_getstacksize(attr *pthread_attr_t, stacksize *size_t) int32 {
@@ -39,6 +109,46 @@ func pthread_attr_destroy(attr *pthread_attr_t) int32 {
39 return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0))109 return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0))
40 }110 }
41 111
112+//go:linkname ___errno_location ___errno_location
113+var ___errno_location uint8
114+var __errno_locationABI0 = uintptr(unsafe.Pointer(&___errno_location))
115+
116+//go:linkname _setegid _setegid
117+var _setegid uint8
118+var setegidABI0 = uintptr(unsafe.Pointer(&_setegid))
119+
120+//go:linkname _seteuid _seteuid
121+var _seteuid uint8
122+var seteuidABI0 = uintptr(unsafe.Pointer(&_seteuid))
123+
124+//go:linkname _setgid _setgid
125+var _setgid uint8
126+var setgidABI0 = uintptr(unsafe.Pointer(&_setgid))
127+
128+//go:linkname _setregid _setregid
129+var _setregid uint8
130+var setregidABI0 = uintptr(unsafe.Pointer(&_setregid))
131+
132+//go:linkname _setresgid _setresgid
133+var _setresgid uint8
134+var setresgidABI0 = uintptr(unsafe.Pointer(&_setresgid))
135+
136+//go:linkname _setresuid _setresuid
137+var _setresuid uint8
138+var setresuidABI0 = uintptr(unsafe.Pointer(&_setresuid))
139+
140+//go:linkname _setreuid _setreuid
141+var _setreuid uint8
142+var setreuidABI0 = uintptr(unsafe.Pointer(&_setreuid))
143+
144+//go:linkname _setuid _setuid
145+var _setuid uint8
146+var setuidABI0 = uintptr(unsafe.Pointer(&_setuid))
147+
148+//go:linkname _setgroups _setgroups
149+var _setgroups uint8
150+var setgroupsABI0 = uintptr(unsafe.Pointer(&_setgroups))
151+
42 //go:linkname _pthread_attr_getstacksize _pthread_attr_getstacksize152 //go:linkname _pthread_attr_getstacksize _pthread_attr_getstacksize
43 var _pthread_attr_getstacksize uint8153 var _pthread_attr_getstacksize uint8
44 var pthread_attr_getstacksizeABI0 = uintptr(unsafe.Pointer(&_pthread_attr_getstacksize))154 var pthread_attr_getstacksizeABI0 = uintptr(unsafe.Pointer(&_pthread_attr_getstacksize))
M vendor/github.com/ebitengine/purego/internal/fakecgo/ztrampolines_linux.s +30 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_386.go +12 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_amd64.go +162 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_arm.go +8 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_arm64.go +203 -7 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_loong64.go +9 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_ppc64le.go +9 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_riscv64.go +9 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/struct_s390x.go +9 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/sys_amd64.s +16 -16 generated file: collapsed
M vendor/github.com/ebitengine/purego/sys_arm64.s +2 -1 generated file: collapsed
M vendor/github.com/ebitengine/purego/sys_unix_arm64.s +8 -3 generated file: collapsed
M vendor/github.com/ebitengine/purego/sys_unix_loong64.s +9 -5 generated file: collapsed
M vendor/github.com/ebitengine/purego/syscall.go +21 -0 generated file: collapsed
M vendor/github.com/ebitengine/purego/syscall_32bit.go +21 -0 generated file: collapsed
A vendor/github.com/ebitengine/purego/syscall_notstackargs.go +38 -0 generated file: collapsed
R vendor/github.com/ebitengine/purego/syscall_sysv_stackargs.go → vendor/github.com/ebitengine/purego/syscall_stackargs.go +13 -3 generated file: collapsed · renamed, 54% similar
D vendor/github.com/ebitengine/purego/syscall_sysv_others.go +0 -28 generated file: collapsed
R vendor/github.com/ebitengine/purego/syscall_sysv.go → vendor/github.com/ebitengine/purego/syscall_unix.go +53 -18 generated file: collapsed · renamed, 85% similar
M vendor/github.com/ebitengine/purego/syscall_windows.go +8 -0 generated file: collapsed
M vendor/modules.txt +2 -1 generated file: collapsed

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