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 generated file: collapsed
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
@@ -38,11 +38,8 @@
3838 // C calling convention (use libcCall).
3939 GLOBL ·syscall15XABI0(SB), NOPTR|RODATA, $8
4040 DATA ·syscall15XABI0(SB)/8, $syscall15X(SB)
41-TEXT syscall15X(SB), NOSPLIT|NOFRAME, $0
42- PUSHQ BP
43- MOVQ SP, BP
44- SUBQ $STACK_SIZE, SP
45- MOVQ DI, PTR_ADDRESS(BP) // save the pointer
41+TEXT syscall15X(SB), NOSPLIT, $STACK_SIZE
42+ MOVQ DI, PTR_ADDRESS(SP) // save the pointer
4643 MOVQ DI, R11
4744
4845 MOVQ syscall15Args_f1(R11), X0 // f1
@@ -61,7 +58,7 @@ TEXT syscall15X(SB), NOSPLIT|NOFRAME, $0
6158 MOVQ syscall15Args_a5(R11), R8 // a5
6259 MOVQ syscall15Args_a6(R11), R9 // a6
6360
64- // push the remaining paramters onto the stack
61+ // push the remaining parameters onto the stack
6562 MOVQ syscall15Args_a7(R11), R12
6663 MOVQ R12, 0(SP) // push a7
6764 MOVQ syscall15Args_a8(R11), R12
@@ -85,22 +82,20 @@ TEXT syscall15X(SB), NOSPLIT|NOFRAME, $0
8582 MOVQ syscall15Args_fn(R11), R10 // fn
8683 CALL R10
8784
88- MOVQ PTR_ADDRESS(BP), DI // get the pointer back
85+ MOVQ PTR_ADDRESS(SP), DI // get the pointer back
8986 MOVQ AX, syscall15Args_a1(DI) // r1
90- MOVQ DX, syscall15Args_a2(DI) // r3
87+ MOVQ DX, syscall15Args_a2(DI) // r2
9188 MOVQ X0, syscall15Args_f1(DI) // f1
9289 MOVQ X1, syscall15Args_f2(DI) // f2
9390
9491 #ifdef GOOS_darwin
95- CALL purego_error(SB)
96- MOVD (AX), AX
97- MOVD AX, syscall15Args_a3(DI) // save errno
92+ CALL purego_error(SB)
93+ MOVQ PTR_ADDRESS(SP), DI // reload (DI clobbered by call)
94+ MOVQ (AX), AX
95+ MOVQ AX, syscall15Args_a3(DI) // save errno
9896 #endif
9997
10098 XORL AX, AX // no error (it's ignored anyway)
101- ADDQ $STACK_SIZE, SP
102- MOVQ BP, SP
103- POPQ BP
10499 RET
105100
106101 TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
@@ -145,7 +140,7 @@ TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
145140 SUBQ $(24+callbackArgs__size), SP
146141 MOVQ AX, (24+callbackArgs_index)(SP) // callback index
147142 MOVQ R8, (24+callbackArgs_args)(SP) // address of args vector
148- MOVQ $0, (24+callbackArgs_result)(SP) // result
143+ MOVQ DI, (24+callbackArgs_result)(SP) // result
149144 LEAQ 24(SP), AX // take the address of callbackArgs
150145
151146 // Call cgocallback, which will call callbackWrap(frame).
@@ -158,7 +153,12 @@ TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
158153
159154 // Get callback result.
160155 MOVQ (24+callbackArgs_result)(SP), AX
161- ADDQ $(24+callbackArgs__size), SP // remove callbackArgs struct
156+ MOVQ (24+callbackArgs_result+8)(SP), DX
157+ // Restore XMM0/XMM1 from result[2]/result[3] for struct eightbytes
158+ // classified as SSE by the SysV ABI.
159+ MOVQ (24+callbackArgs_result+16)(SP), X0
160+ MOVQ (24+callbackArgs_result+24)(SP), X1
161+ ADDQ $(24+callbackArgs__size), SP // remove callbackArgs struct
162162
163163 POP_REGS_HOST_TO_ABI0()
164164
@@ -38,11 +38,8 @@
38 // C calling convention (use libcCall).38 // C calling convention (use libcCall).
39 GLOBL ·syscall15XABI0(SB), NOPTR|RODATA, $839 GLOBL ·syscall15XABI0(SB), NOPTR|RODATA, $8
40 DATA ·syscall15XABI0(SB)/8, $syscall15X(SB)40 DATA ·syscall15XABI0(SB)/8, $syscall15X(SB)
41-TEXT syscall15X(SB), NOSPLIT|NOFRAME, $041+TEXT syscall15X(SB), NOSPLIT, $STACK_SIZE
42- PUSHQ BP42+ MOVQ DI, PTR_ADDRESS(SP) // save the pointer
43- MOVQ SP, BP
44- SUBQ $STACK_SIZE, SP
45- MOVQ DI, PTR_ADDRESS(BP) // save the pointer
46 MOVQ DI, R1143 MOVQ DI, R11
47 44
48 MOVQ syscall15Args_f1(R11), X0 // f145 MOVQ syscall15Args_f1(R11), X0 // f1
@@ -61,7 +58,7 @@ TEXT syscall15X(SB), NOSPLIT|NOFRAME, $0
61 MOVQ syscall15Args_a5(R11), R8 // a558 MOVQ syscall15Args_a5(R11), R8 // a5
62 MOVQ syscall15Args_a6(R11), R9 // a659 MOVQ syscall15Args_a6(R11), R9 // a6
63 60
64- // push the remaining paramters onto the stack61+ // push the remaining parameters onto the stack
65 MOVQ syscall15Args_a7(R11), R1262 MOVQ syscall15Args_a7(R11), R12
66 MOVQ R12, 0(SP) // push a763 MOVQ R12, 0(SP) // push a7
67 MOVQ syscall15Args_a8(R11), R1264 MOVQ syscall15Args_a8(R11), R12
@@ -85,22 +82,20 @@ TEXT syscall15X(SB), NOSPLIT|NOFRAME, $0
85 MOVQ syscall15Args_fn(R11), R10 // fn82 MOVQ syscall15Args_fn(R11), R10 // fn
86 CALL R1083 CALL R10
87 84
88- MOVQ PTR_ADDRESS(BP), DI // get the pointer back85+ MOVQ PTR_ADDRESS(SP), DI // get the pointer back
89 MOVQ AX, syscall15Args_a1(DI) // r186 MOVQ AX, syscall15Args_a1(DI) // r1
90- MOVQ DX, syscall15Args_a2(DI) // r387+ MOVQ DX, syscall15Args_a2(DI) // r2
91 MOVQ X0, syscall15Args_f1(DI) // f188 MOVQ X0, syscall15Args_f1(DI) // f1
92 MOVQ X1, syscall15Args_f2(DI) // f289 MOVQ X1, syscall15Args_f2(DI) // f2
93 90
94 #ifdef GOOS_darwin91 #ifdef GOOS_darwin
95- CALL purego_error(SB)92+ CALL purego_error(SB)
96- MOVD (AX), AX93+ MOVQ PTR_ADDRESS(SP), DI // reload (DI clobbered by call)
97- MOVD AX, syscall15Args_a3(DI) // save errno94+ MOVQ (AX), AX
95+ MOVQ AX, syscall15Args_a3(DI) // save errno
98 #endif96 #endif
99 97
100 XORL AX, AX // no error (it's ignored anyway)98 XORL AX, AX // no error (it's ignored anyway)
101- ADDQ $STACK_SIZE, SP
102- MOVQ BP, SP
103- POPQ BP
104 RET99 RET
105 100
106 TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0101 TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
@@ -145,7 +140,7 @@ TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
145 SUBQ $(24+callbackArgs__size), SP140 SUBQ $(24+callbackArgs__size), SP
146 MOVQ AX, (24+callbackArgs_index)(SP) // callback index141 MOVQ AX, (24+callbackArgs_index)(SP) // callback index
147 MOVQ R8, (24+callbackArgs_args)(SP) // address of args vector142 MOVQ R8, (24+callbackArgs_args)(SP) // address of args vector
148- MOVQ $0, (24+callbackArgs_result)(SP) // result143+ MOVQ DI, (24+callbackArgs_result)(SP) // result
149 LEAQ 24(SP), AX // take the address of callbackArgs144 LEAQ 24(SP), AX // take the address of callbackArgs
150 145
151 // Call cgocallback, which will call callbackWrap(frame).146 // Call cgocallback, which will call callbackWrap(frame).
@@ -158,7 +153,12 @@ TEXT callbackasm1(SB), NOSPLIT|NOFRAME, $0
158 153
159 // Get callback result.154 // Get callback result.
160 MOVQ (24+callbackArgs_result)(SP), AX155 MOVQ (24+callbackArgs_result)(SP), AX
161- ADDQ $(24+callbackArgs__size), SP // remove callbackArgs struct156+ MOVQ (24+callbackArgs_result+8)(SP), DX
157+ // Restore XMM0/XMM1 from result[2]/result[3] for struct eightbytes
158+ // classified as SSE by the SysV ABI.
159+ MOVQ (24+callbackArgs_result+16)(SP), X0
160+ MOVQ (24+callbackArgs_result+24)(SP), X1
161+ ADDQ $(24+callbackArgs__size), SP // remove callbackArgs struct
162 162
163 POP_REGS_HOST_TO_ABI0()163 POP_REGS_HOST_TO_ABI0()
164 164
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