aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/testdata
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2025-09-16 10:22:34 -0400
committerCherry Mui <cherryyz@google.com>2025-09-16 10:22:34 -0400
commitbdd30e25caa0b69e335ba1f1f48566924850fa4b (patch)
tree3f7dba7bae3eaf8de272679aa7a00bf85585cd16 /src/runtime/testdata
parent0e590a505d7f1050ac60df4b52c414cfc618239d (diff)
parentca0e03560df7279bc307da08db7237beb32b0d99 (diff)
downloadgo-bdd30e25caa0b69e335ba1f1f48566924850fa4b.tar.xz
[dev.simd] all: merge master (ca0e035) into dev.simd
Conflicts: - src/internal/goexperiment/flags.go Merge List: + 2025-09-15 ca0e03560d cmd/link: remove support for windows/arm relocations + 2025-09-15 17a0fabc43 cmd/link: remove support for darwin/386 relocations + 2025-09-15 eb7c67fdc9 cmd/internal/obj/loong64: use the MOVVP instruction to optimize prologue + 2025-09-15 6b8d507508 cmd/internal/obj/riscv: implement vector segment load/store instructions + 2025-09-15 7ddbf4d820 cmd/asm: add double precision comparision testcases for riscv64 + 2025-09-15 c39abe0658 runtime: fix TestSehUnwind + 2025-09-15 e3ed0fbe6a all: replace strings.Split with strings.SplitSeq + 2025-09-15 10bfddc91d all: remove redundant words in comment + 2025-09-15 2469e92d8c cmd/compile: combine doubling with shift on riscv64 + 2025-09-15 aa83aee7de net/http: clarify panic conditions in Handle, HandleFunc, AddInsecureBypassPattern + 2025-09-15 b9e2977f1d crypto/internal/cryptotest: use linux-amd64_avx512 builder for SHA-NI + 2025-09-15 8105d0ccc2 cmd/go,crypto/internal/fips140: prevent using FIPS 140-3 mode with purego tag + 2025-09-15 7f70ca8726 crypto/internal/cryptotest: add MustSupportFIPS140 + 2025-09-15 9e71d8a9f7 cmd/internal/testdir: re-enable default all codegen flag on linux-amd64 + 2025-09-15 004858ccdd all: replace os.Getenv("GO_BUILDER_NAME") with testenv.Builder in tests + 2025-09-15 dbde15800c cmd: vendor x/tools@9fccddc + 2025-09-15 8ace10dad2 os: add (*Process).WithHandle + 2025-09-15 3573227fe3 os: add and use errProcessReleased + 2025-09-15 68c6a73380 internal/syscall/unix: add KernelVersionGE + 2025-09-15 e603e9834e cmd/link: support race mode with MSVC clang + 2025-09-15 e5ee1f2600 test/codegen: check zerobase for newobject on 0-sized types + 2025-09-15 77b93d41d5 net/http: add comments for transport gzip reader + 2025-09-15 30d510ca2d cmd/compile,cmd/gofmt: use reflect.TypeFor + 2025-09-15 8320fe8f0e runtime: deduplicate syscall assembly for darwin + 2025-09-14 080882a928 net: use context.AfterFunc in connect + 2025-09-12 ac803b5949 cmd/go/internal/work: copy vet tool's stdout to our stdout + 2025-09-12 889e71c2ac runtime: move Windows types and consts to internal/runtime/syscall/windows + 2025-09-12 cc8a6780ac vendor: update x/tools to 3adf0e9, and other repos + 2025-09-12 911455fe18 cmd/link: don't count tbss section in TestFlagD + 2025-09-12 f1fd13016a cmd/compile: optimize abi.Type.GCData loads + 2025-09-12 dc960d0bfe cmd/compile, reflect: further allow inlining of TypeFor + 2025-09-12 7acb0d0446 runtime: fix syscall9 on darwin/arm64 + 2025-09-12 60c1ee9183 internal/goexperiment: add a sizespecializedmalloc goexperiment setting + 2025-09-12 c70713da82 cmd/link: support MSVC clang + 2025-09-12 9271bbbb80 internal/testenv: update Builder docs with LUCI builder names + 2025-09-12 a4e25c3d65 net,internal/poll: skip TestAllocs when race is enabled on Windows + 2025-09-12 dd8276657f cmd/asm, cmd/internal/obj: add riscv64 generic CSR ops + 2025-09-11 f37d75472d runtime: move mksizeclasses.go to runtime/_mkmalloc + 2025-09-11 73676e3223 cmd/go: run cgo and cgo compiles in their own actions + 2025-09-11 0e1b98993e testing: exit B.Loop early upon saturation + 2025-09-11 84e9ab3984 cmd/go/internal/work: remove deps[1]="fmt" vet hack Change-Id: I1424228bcd9291c9ff29f6ae843d5b90652f237e
Diffstat (limited to 'src/runtime/testdata')
-rw-r--r--src/runtime/testdata/testsyscall/testsyscall.go65
-rw-r--r--src/runtime/testdata/testsyscall/testsyscall.s55
-rw-r--r--src/runtime/testdata/testsyscall/testsyscallc/testsyscallc.go48
3 files changed, 168 insertions, 0 deletions
diff --git a/src/runtime/testdata/testsyscall/testsyscall.go b/src/runtime/testdata/testsyscall/testsyscall.go
new file mode 100644
index 0000000000..23cca16494
--- /dev/null
+++ b/src/runtime/testdata/testsyscall/testsyscall.go
@@ -0,0 +1,65 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ _ "runtime/testdata/testsyscall/testsyscallc" // unfortunately, we can't put C and assembly in the package
+ _ "unsafe" // for go:linkname
+)
+
+//go:linkname syscall_syscall syscall.syscall
+func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2, err uintptr)
+
+//go:linkname syscall_syscall6 syscall.syscall6
+func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
+
+//go:linkname syscall_syscall9 syscall.syscall9
+func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2, err uintptr)
+
+var (
+ syscall_check0_trampoline_addr uintptr
+ syscall_check1_trampoline_addr uintptr
+ syscall_check2_trampoline_addr uintptr
+ syscall_check3_trampoline_addr uintptr
+ syscall_check4_trampoline_addr uintptr
+ syscall_check5_trampoline_addr uintptr
+ syscall_check6_trampoline_addr uintptr
+ syscall_check7_trampoline_addr uintptr
+ syscall_check8_trampoline_addr uintptr
+ syscall_check9_trampoline_addr uintptr
+)
+
+func main() {
+ if ret, _, _ := syscall_syscall(syscall_check0_trampoline_addr, 0, 0, 0); ret != 1 {
+ panic("hello0")
+ }
+ if ret, _, _ := syscall_syscall(syscall_check1_trampoline_addr, 1, 0, 0); ret != 1 {
+ panic("hello1")
+ }
+ if ret, _, _ := syscall_syscall(syscall_check2_trampoline_addr, 1, 2, 0); ret != 1 {
+ panic("hello2")
+ }
+ if ret, _, _ := syscall_syscall(syscall_check3_trampoline_addr, 1, 2, 3); ret != 1 {
+ panic("hello3")
+ }
+ if ret, _, _ := syscall_syscall6(syscall_check4_trampoline_addr, 1, 2, 3, 4, 0, 0); ret != 1 {
+ panic("hello4")
+ }
+ if ret, _, _ := syscall_syscall6(syscall_check5_trampoline_addr, 1, 2, 3, 4, 5, 0); ret != 1 {
+ panic("hello5")
+ }
+ if ret, _, _ := syscall_syscall6(syscall_check6_trampoline_addr, 1, 2, 3, 4, 5, 6); ret != 1 {
+ panic("hello6")
+ }
+ if ret, _, _ := syscall_syscall9(syscall_check7_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 0, 0); ret != 1 {
+ panic("hello7")
+ }
+ if ret, _, _ := syscall_syscall9(syscall_check8_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 8, 0); ret != 1 {
+ panic("hello8")
+ }
+ if ret, _, _ := syscall_syscall9(syscall_check9_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 8, 9); ret != 1 {
+ panic("hello9")
+ }
+}
diff --git a/src/runtime/testdata/testsyscall/testsyscall.s b/src/runtime/testdata/testsyscall/testsyscall.s
new file mode 100644
index 0000000000..c8d556dfd9
--- /dev/null
+++ b/src/runtime/testdata/testsyscall/testsyscall.s
@@ -0,0 +1,55 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+TEXT syscall_check0_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check0(SB)
+GLOBL ·syscall_check0_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check0_trampoline_addr(SB)/8, $syscall_check0_trampoline<>(SB)
+
+TEXT syscall_check1_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check1(SB)
+GLOBL ·syscall_check1_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check1_trampoline_addr(SB)/8, $syscall_check1_trampoline<>(SB)
+
+TEXT syscall_check2_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check2(SB)
+GLOBL ·syscall_check2_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check2_trampoline_addr(SB)/8, $syscall_check2_trampoline<>(SB)
+
+TEXT syscall_check3_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check3(SB)
+GLOBL ·syscall_check3_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check3_trampoline_addr(SB)/8, $syscall_check3_trampoline<>(SB)
+
+TEXT syscall_check4_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check4(SB)
+GLOBL ·syscall_check4_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check4_trampoline_addr(SB)/8, $syscall_check4_trampoline<>(SB)
+
+TEXT syscall_check5_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check5(SB)
+GLOBL ·syscall_check5_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check5_trampoline_addr(SB)/8, $syscall_check5_trampoline<>(SB)
+
+TEXT syscall_check6_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check6(SB)
+GLOBL ·syscall_check6_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check6_trampoline_addr(SB)/8, $syscall_check6_trampoline<>(SB)
+
+TEXT syscall_check7_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check7(SB)
+GLOBL ·syscall_check7_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check7_trampoline_addr(SB)/8, $syscall_check7_trampoline<>(SB)
+
+TEXT syscall_check8_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check8(SB)
+GLOBL ·syscall_check8_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check8_trampoline_addr(SB)/8, $syscall_check8_trampoline<>(SB)
+
+TEXT syscall_check9_trampoline<>(SB),NOSPLIT,$0-0
+ JMP syscall_check9(SB)
+GLOBL ·syscall_check9_trampoline_addr(SB), RODATA, $8
+DATA ·syscall_check9_trampoline_addr(SB)/8, $syscall_check9_trampoline<>(SB)
diff --git a/src/runtime/testdata/testsyscall/testsyscallc/testsyscallc.go b/src/runtime/testdata/testsyscall/testsyscallc/testsyscallc.go
new file mode 100644
index 0000000000..0b2a220b59
--- /dev/null
+++ b/src/runtime/testdata/testsyscall/testsyscallc/testsyscallc.go
@@ -0,0 +1,48 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package testsyscallc
+
+/*
+int syscall_check0(void) {
+ return 1;
+}
+
+int syscall_check1(int a1) {
+ return a1 == 1;
+}
+
+int syscall_check2(int a1, int a2) {
+ return a1 == 1 && a2 == 2;
+}
+
+int syscall_check3(int a1, int a2, int a3) {
+ return a1 == 1 && a2 == 2 && a3 == 3;
+}
+
+int syscall_check4(int a1, int a2, int a3, int a4) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4;
+}
+
+int syscall_check5(int a1, int a2, int a3, int a4, int a5) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4 && a5 == 5;
+}
+
+int syscall_check6(int a1, int a2, int a3, int a4, int a5, int a6) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4 && a5 == 5 && a6 == 6;
+}
+
+int syscall_check7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4 && a5 == 5 && a6 == 6 && a7 == 7;
+}
+
+int syscall_check8(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4 && a5 == 5 && a6 == 6 && a7 == 7 && a8 == 8;
+}
+
+int syscall_check9(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9) {
+ return a1 == 1 && a2 == 2 && a3 == 3 && a4 == 4 && a5 == 5 && a6 == 6 && a7 == 7 && a8 == 8 && a9 == 9;
+}
+*/
+import "C"