Source file src/runtime/testdata/testsyscall/testsyscall.go

     1  // Copyright 2025 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  package main
     6  
     7  import (
     8  	_ "runtime/testdata/testsyscall/testsyscallc" // unfortunately, we can't put C and assembly in the package
     9  	_ "unsafe"                                    // for go:linkname
    10  )
    11  
    12  //go:linkname syscall_syscall syscall.syscall
    13  func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2, err uintptr)
    14  
    15  //go:linkname syscall_syscall6 syscall.syscall6
    16  func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
    17  
    18  //go:linkname syscall_syscall9 syscall.syscall9
    19  func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2, err uintptr)
    20  
    21  var (
    22  	syscall_check0_trampoline_addr uintptr
    23  	syscall_check1_trampoline_addr uintptr
    24  	syscall_check2_trampoline_addr uintptr
    25  	syscall_check3_trampoline_addr uintptr
    26  	syscall_check4_trampoline_addr uintptr
    27  	syscall_check5_trampoline_addr uintptr
    28  	syscall_check6_trampoline_addr uintptr
    29  	syscall_check7_trampoline_addr uintptr
    30  	syscall_check8_trampoline_addr uintptr
    31  	syscall_check9_trampoline_addr uintptr
    32  )
    33  
    34  func main() {
    35  	if ret, _, _ := syscall_syscall(syscall_check0_trampoline_addr, 0, 0, 0); ret != 1 {
    36  		panic("hello0")
    37  	}
    38  	if ret, _, _ := syscall_syscall(syscall_check1_trampoline_addr, 1, 0, 0); ret != 1 {
    39  		panic("hello1")
    40  	}
    41  	if ret, _, _ := syscall_syscall(syscall_check2_trampoline_addr, 1, 2, 0); ret != 1 {
    42  		panic("hello2")
    43  	}
    44  	if ret, _, _ := syscall_syscall(syscall_check3_trampoline_addr, 1, 2, 3); ret != 1 {
    45  		panic("hello3")
    46  	}
    47  	if ret, _, _ := syscall_syscall6(syscall_check4_trampoline_addr, 1, 2, 3, 4, 0, 0); ret != 1 {
    48  		panic("hello4")
    49  	}
    50  	if ret, _, _ := syscall_syscall6(syscall_check5_trampoline_addr, 1, 2, 3, 4, 5, 0); ret != 1 {
    51  		panic("hello5")
    52  	}
    53  	if ret, _, _ := syscall_syscall6(syscall_check6_trampoline_addr, 1, 2, 3, 4, 5, 6); ret != 1 {
    54  		panic("hello6")
    55  	}
    56  	if ret, _, _ := syscall_syscall9(syscall_check7_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 0, 0); ret != 1 {
    57  		panic("hello7")
    58  	}
    59  	if ret, _, _ := syscall_syscall9(syscall_check8_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 8, 0); ret != 1 {
    60  		panic("hello8")
    61  	}
    62  	if ret, _, _ := syscall_syscall9(syscall_check9_trampoline_addr, 1, 2, 3, 4, 5, 6, 7, 8, 9); ret != 1 {
    63  		panic("hello9")
    64  	}
    65  }
    66  

View as plain text