a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh
at main 1.5 kB view raw
1// Copyright 2015 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 gccgo && !aix && !hurd 6 7#include <errno.h> 8#include <stdint.h> 9#include <unistd.h> 10 11#define _STRINGIFY2_(x) #x 12#define _STRINGIFY_(x) _STRINGIFY2_(x) 13#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__) 14 15// Call syscall from C code because the gccgo support for calling from 16// Go to C does not support varargs functions. 17 18struct ret { 19 uintptr_t r; 20 uintptr_t err; 21}; 22 23struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) 24 __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall"); 25 26struct ret 27gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) 28{ 29 struct ret r; 30 31 errno = 0; 32 r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); 33 r.err = errno; 34 return r; 35} 36 37uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) 38 __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError"); 39 40uintptr_t 41gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) 42{ 43 return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); 44}