mirror of https://github.com/golang/go.git
all: remove darwin/arm build-tags and files
This removes all files that are only used on darwin/arm and cleans up build tags in files that are still used on other platforms. Updates #37611. Change-Id: Ic9490cf0edfc157c6276a7ca950c1768b34a998f Reviewed-on: https://go-review.googlesource.com/c/go/+/227197 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
79b6900cc7
commit
da8591b61c
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build cgo,!arm,!arm64,!ios
|
||||
// +build cgo,!arm64,!ios
|
||||
|
||||
package x509
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
// Code generated by root_darwin_arm_gen --output root_darwin_armx.go; DO NOT EDIT.
|
||||
// Code generated by root_darwin_arm_gen --output root_darwin_arm64.go; DO NOT EDIT.
|
||||
|
||||
// Copyright 2015 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.
|
||||
|
||||
// +build cgo
|
||||
// +build darwin
|
||||
// +build arm arm64 ios
|
||||
|
||||
package x509
|
||||
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
// +build ignore
|
||||
|
||||
// Generates root_darwin_armx.go.
|
||||
// Generates root_darwin_arm64.go.
|
||||
//
|
||||
// As of iOS 8, there is no API for querying the system trusted X.509 root
|
||||
// certificates. We could use SecTrustEvaluate to verify that a trust chain
|
||||
|
|
@ -33,7 +33,7 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
var output = flag.String("output", "root_darwin_armx.go", "file name to write")
|
||||
var output = flag.String("output", "root_darwin_arm64.go", "file name to write")
|
||||
|
||||
func main() {
|
||||
certs, err := selectCerts()
|
||||
|
|
@ -173,8 +173,6 @@ const header = `
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build cgo
|
||||
// +build darwin
|
||||
// +build arm arm64 ios
|
||||
|
||||
package x509
|
||||
|
||||
|
|
|
|||
|
|
@ -1,164 +0,0 @@
|
|||
// Copyright 2014 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 <limits.h>
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <string.h> /* for strerror */
|
||||
#include <sys/param.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <CoreFoundation/CFBundle.h>
|
||||
#include <CoreFoundation/CFString.h>
|
||||
|
||||
#include "libcgo.h"
|
||||
#include "libcgo_unix.h"
|
||||
|
||||
#define magic (0xe696c4f4U)
|
||||
|
||||
// inittls allocates a thread-local storage slot for g.
|
||||
//
|
||||
// It finds the first available slot using pthread_key_create and uses
|
||||
// it as the offset value for runtime.tlsg.
|
||||
static void
|
||||
inittls(void **tlsg, void **tlsbase)
|
||||
{
|
||||
pthread_key_t k;
|
||||
int i, err;
|
||||
|
||||
err = pthread_key_create(&k, nil);
|
||||
if(err != 0) {
|
||||
fprintf(stderr, "runtime/cgo: pthread_key_create failed: %d\n", err);
|
||||
abort();
|
||||
}
|
||||
//fprintf(stderr, "runtime/cgo: k = %d, tlsbase = %p\n", (int)k, tlsbase); // debug
|
||||
pthread_setspecific(k, (void*)magic);
|
||||
// The first key should be at 258.
|
||||
for (i=0; i<PTHREAD_KEYS_MAX; i++) {
|
||||
if (*(tlsbase+i) == (void*)magic) {
|
||||
*tlsg = (void*)(i*sizeof(void *));
|
||||
pthread_setspecific(k, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
fprintf(stderr, "runtime/cgo: could not find pthread key.\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
static void *threadentry(void*);
|
||||
static void (*setg_gcc)(void*);
|
||||
|
||||
void
|
||||
_cgo_sys_thread_start(ThreadStart *ts)
|
||||
{
|
||||
pthread_attr_t attr;
|
||||
sigset_t ign, oset;
|
||||
pthread_t p;
|
||||
size_t size;
|
||||
int err;
|
||||
|
||||
sigfillset(&ign);
|
||||
pthread_sigmask(SIG_SETMASK, &ign, &oset);
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
size = 0;
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
// Leave stacklo=0 and set stackhi=size; mstart will do the rest.
|
||||
ts->g->stackhi = size;
|
||||
err = _cgo_try_pthread_create(&p, &attr, threadentry, ts);
|
||||
|
||||
pthread_sigmask(SIG_SETMASK, &oset, nil);
|
||||
|
||||
if (err != 0) {
|
||||
fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err));
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
extern void crosscall_arm1(void (*fn)(void), void (*setg_gcc)(void*), void *g);
|
||||
static void*
|
||||
threadentry(void *v)
|
||||
{
|
||||
ThreadStart ts;
|
||||
|
||||
ts = *(ThreadStart*)v;
|
||||
free(v);
|
||||
|
||||
darwin_arm_init_thread_exception_port();
|
||||
|
||||
crosscall_arm1(ts.fn, setg_gcc, (void*)ts.g);
|
||||
return nil;
|
||||
}
|
||||
|
||||
// init_working_dir sets the current working directory to the app root.
|
||||
// By default darwin/arm processes start in "/".
|
||||
static void
|
||||
init_working_dir()
|
||||
{
|
||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
||||
if (bundle == NULL) {
|
||||
fprintf(stderr, "runtime/cgo: no main bundle\n");
|
||||
return;
|
||||
}
|
||||
CFURLRef url_ref = CFBundleCopyResourceURL(bundle, CFSTR("Info"), CFSTR("plist"), NULL);
|
||||
if (url_ref == NULL) {
|
||||
// No Info.plist found. It can happen on Corellium virtual devices.
|
||||
return;
|
||||
}
|
||||
CFStringRef url_str_ref = CFURLGetString(url_ref);
|
||||
char buf[MAXPATHLEN];
|
||||
Boolean res = CFStringGetCString(url_str_ref, buf, sizeof(buf), kCFStringEncodingUTF8);
|
||||
CFRelease(url_ref);
|
||||
if (!res) {
|
||||
fprintf(stderr, "runtime/cgo: cannot get URL string\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// url is of the form "file:///path/to/Info.plist".
|
||||
// strip it down to the working directory "/path/to".
|
||||
int url_len = strlen(buf);
|
||||
if (url_len < sizeof("file://")+sizeof("/Info.plist")) {
|
||||
fprintf(stderr, "runtime/cgo: bad URL: %s\n", buf);
|
||||
return;
|
||||
}
|
||||
buf[url_len-sizeof("/Info.plist")+1] = 0;
|
||||
char *dir = &buf[0] + sizeof("file://")-1;
|
||||
|
||||
if (chdir(dir) != 0) {
|
||||
fprintf(stderr, "runtime/cgo: chdir(%s) failed\n", dir);
|
||||
}
|
||||
|
||||
// The test harness in go_darwin_arm_exec passes the relative working directory
|
||||
// in the GoExecWrapperWorkingDirectory property of the app bundle.
|
||||
CFStringRef wd_ref = CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("GoExecWrapperWorkingDirectory"));
|
||||
if (wd_ref != NULL) {
|
||||
if (!CFStringGetCString(wd_ref, buf, sizeof(buf), kCFStringEncodingUTF8)) {
|
||||
fprintf(stderr, "runtime/cgo: cannot get GoExecWrapperWorkingDirectory string\n");
|
||||
return;
|
||||
}
|
||||
if (chdir(buf) != 0) {
|
||||
fprintf(stderr, "runtime/cgo: chdir(%s) failed\n", buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
x_cgo_init(G *g, void (*setg)(void*), void **tlsg, void **tlsbase)
|
||||
{
|
||||
pthread_attr_t attr;
|
||||
size_t size;
|
||||
|
||||
setg_gcc = setg;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_getstacksize(&attr, &size);
|
||||
g->stacklo = (uintptr)&attr - size + 4096;
|
||||
pthread_attr_destroy(&attr);
|
||||
|
||||
// yes, tlsbase from mrc might not be correctly aligned.
|
||||
inittls(tlsg, (void**)((uintptr)tlsbase & ~3));
|
||||
|
||||
darwin_arm_init_mach_exception_handler();
|
||||
darwin_arm_init_thread_exception_port();
|
||||
init_working_dir();
|
||||
}
|
||||
|
|
@ -3,10 +3,8 @@
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build lldb
|
||||
// +build darwin
|
||||
// +build arm arm64
|
||||
|
||||
// Used by gcc_signal_darwin_armx.c when doing the test build during cgo.
|
||||
// Used by gcc_signal_darwin_arm64.c when doing the test build during cgo.
|
||||
// We hope that for real binaries the definition provided by Go will take precedence
|
||||
// and the linker will drop this .o file altogether, which is why this definition
|
||||
// is all by itself in its own file.
|
||||
|
|
@ -18,8 +18,6 @@
|
|||
// The dist tool enables this by build flag when testing.
|
||||
|
||||
// +build lldb
|
||||
// +build darwin
|
||||
// +build arm arm64
|
||||
|
||||
#include <limits.h>
|
||||
#include <pthread.h>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
// +build !lldb
|
||||
// +build darwin
|
||||
// +build arm arm64
|
||||
// +build arm64
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
// Copyright 2015 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"
|
||||
|
||||
// xx_cgo_panicmem is the entrypoint for SIGSEGV as intercepted via a
|
||||
// mach thread port as EXC_BAD_ACCESS. As the segfault may have happened
|
||||
// in C code, we first need to load_g then call xx_cgo_panicmem.
|
||||
//
|
||||
// R1 - LR at moment of fault
|
||||
// R2 - PC at moment of fault
|
||||
TEXT xx_cgo_panicmem(SB),NOSPLIT|NOFRAME,$0
|
||||
// If in external C code, we need to load the g register.
|
||||
BL runtime·load_g(SB)
|
||||
CMP $0, g
|
||||
BNE ongothread
|
||||
|
||||
// On a foreign thread. We call badsignal, which will, if all
|
||||
// goes according to plan, not return.
|
||||
SUB $4, R13
|
||||
MOVW $11, R1
|
||||
MOVW $11, R2
|
||||
MOVM.DB.W [R1,R2], (R13)
|
||||
// TODO: badsignal should not return, but it does. Issue #10139.
|
||||
//BL runtime·badsignal(SB)
|
||||
MOVW $139, R1
|
||||
MOVW R1, 4(R13)
|
||||
B runtime·exit(SB)
|
||||
|
||||
ongothread:
|
||||
// Trigger a SIGSEGV panic.
|
||||
//
|
||||
// The goal is to arrange the stack so it looks like the runtime
|
||||
// function sigpanic was called from the PC that faulted. It has
|
||||
// to be sigpanic, as the stack unwinding code in traceback.go
|
||||
// looks explicitly for it.
|
||||
//
|
||||
// To do this we call into runtime·setsigsegv, which sets the
|
||||
// appropriate state inside the g object. We give it the faulting
|
||||
// PC on the stack, then put it in the LR before calling sigpanic.
|
||||
MOVM.DB.W [R1,R2], (R13)
|
||||
BL runtime·setsigsegv(SB)
|
||||
MOVM.IA.W (R13), [R1,R2]
|
||||
|
||||
SUB $4, R13
|
||||
MOVW R1, 0(R13)
|
||||
MOVW R2, R14
|
||||
B runtime·sigpanic(SB)
|
||||
|
|
@ -2,9 +2,6 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build darwin
|
||||
// +build arm arm64
|
||||
|
||||
package cgo
|
||||
|
||||
import _ "unsafe"
|
||||
|
|
@ -1,231 +0,0 @@
|
|||
// Note: cgo can't handle some Darwin/ARM structures, so this file can't
|
||||
// be auto generated by cgo yet.
|
||||
// Created based on output of `cgo -cdefs defs_darwin.go` and Darwin/ARM
|
||||
// specific header (mainly mcontext and ucontext related stuff)
|
||||
|
||||
package runtime
|
||||
|
||||
import "unsafe"
|
||||
|
||||
const (
|
||||
_EINTR = 0x4
|
||||
_EFAULT = 0xe
|
||||
_EAGAIN = 0x23
|
||||
_ETIMEDOUT = 0x3c
|
||||
|
||||
_PROT_NONE = 0x0
|
||||
_PROT_READ = 0x1
|
||||
_PROT_WRITE = 0x2
|
||||
_PROT_EXEC = 0x4
|
||||
|
||||
_MAP_ANON = 0x1000
|
||||
_MAP_PRIVATE = 0x2
|
||||
_MAP_FIXED = 0x10
|
||||
|
||||
_MADV_DONTNEED = 0x4
|
||||
_MADV_FREE = 0x5
|
||||
_MADV_FREE_REUSABLE = 0x7
|
||||
_MADV_FREE_REUSE = 0x8
|
||||
|
||||
_SA_SIGINFO = 0x40
|
||||
_SA_RESTART = 0x2
|
||||
_SA_ONSTACK = 0x1
|
||||
_SA_USERTRAMP = 0x100
|
||||
_SA_64REGSET = 0x200
|
||||
|
||||
_SIGHUP = 0x1
|
||||
_SIGINT = 0x2
|
||||
_SIGQUIT = 0x3
|
||||
_SIGILL = 0x4
|
||||
_SIGTRAP = 0x5
|
||||
_SIGABRT = 0x6
|
||||
_SIGEMT = 0x7
|
||||
_SIGFPE = 0x8
|
||||
_SIGKILL = 0x9
|
||||
_SIGBUS = 0xa
|
||||
_SIGSEGV = 0xb
|
||||
_SIGSYS = 0xc
|
||||
_SIGPIPE = 0xd
|
||||
_SIGALRM = 0xe
|
||||
_SIGTERM = 0xf
|
||||
_SIGURG = 0x10
|
||||
_SIGSTOP = 0x11
|
||||
_SIGTSTP = 0x12
|
||||
_SIGCONT = 0x13
|
||||
_SIGCHLD = 0x14
|
||||
_SIGTTIN = 0x15
|
||||
_SIGTTOU = 0x16
|
||||
_SIGIO = 0x17
|
||||
_SIGXCPU = 0x18
|
||||
_SIGXFSZ = 0x19
|
||||
_SIGVTALRM = 0x1a
|
||||
_SIGPROF = 0x1b
|
||||
_SIGWINCH = 0x1c
|
||||
_SIGINFO = 0x1d
|
||||
_SIGUSR1 = 0x1e
|
||||
_SIGUSR2 = 0x1f
|
||||
|
||||
_FPE_INTDIV = 0x7
|
||||
_FPE_INTOVF = 0x8
|
||||
_FPE_FLTDIV = 0x1
|
||||
_FPE_FLTOVF = 0x2
|
||||
_FPE_FLTUND = 0x3
|
||||
_FPE_FLTRES = 0x4
|
||||
_FPE_FLTINV = 0x5
|
||||
_FPE_FLTSUB = 0x6
|
||||
|
||||
_BUS_ADRALN = 0x1
|
||||
_BUS_ADRERR = 0x2
|
||||
_BUS_OBJERR = 0x3
|
||||
|
||||
_SEGV_MAPERR = 0x1
|
||||
_SEGV_ACCERR = 0x2
|
||||
|
||||
_ITIMER_REAL = 0x0
|
||||
_ITIMER_VIRTUAL = 0x1
|
||||
_ITIMER_PROF = 0x2
|
||||
|
||||
_EV_ADD = 0x1
|
||||
_EV_DELETE = 0x2
|
||||
_EV_CLEAR = 0x20
|
||||
_EV_RECEIPT = 0x40
|
||||
_EV_ERROR = 0x4000
|
||||
_EV_EOF = 0x8000
|
||||
_EVFILT_READ = -0x1
|
||||
_EVFILT_WRITE = -0x2
|
||||
|
||||
_PTHREAD_CREATE_DETACHED = 0x2
|
||||
|
||||
_F_SETFD = 0x2
|
||||
_F_GETFL = 0x3
|
||||
_F_SETFL = 0x4
|
||||
_FD_CLOEXEC = 0x1
|
||||
|
||||
_O_NONBLOCK = 4
|
||||
)
|
||||
|
||||
type stackt struct {
|
||||
ss_sp *byte
|
||||
ss_size uintptr
|
||||
ss_flags int32
|
||||
}
|
||||
|
||||
type sigactiont struct {
|
||||
__sigaction_u [4]byte
|
||||
sa_tramp unsafe.Pointer
|
||||
sa_mask uint32
|
||||
sa_flags int32
|
||||
}
|
||||
|
||||
type usigactiont struct {
|
||||
__sigaction_u [4]byte
|
||||
sa_mask uint32
|
||||
sa_flags int32
|
||||
}
|
||||
|
||||
type siginfo struct {
|
||||
si_signo int32
|
||||
si_errno int32
|
||||
si_code int32
|
||||
si_pid int32
|
||||
si_uid uint32
|
||||
si_status int32
|
||||
si_addr uint32
|
||||
si_value [4]byte
|
||||
si_band int32
|
||||
__pad [7]uint32
|
||||
}
|
||||
|
||||
type timeval struct {
|
||||
tv_sec int32
|
||||
tv_usec int32
|
||||
}
|
||||
|
||||
func (tv *timeval) set_usec(x int32) {
|
||||
tv.tv_usec = x
|
||||
}
|
||||
|
||||
type itimerval struct {
|
||||
it_interval timeval
|
||||
it_value timeval
|
||||
}
|
||||
|
||||
type timespec struct {
|
||||
tv_sec int32
|
||||
tv_nsec int32
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func (ts *timespec) setNsec(ns int64) {
|
||||
ts.tv_sec = timediv(ns, 1e9, &ts.tv_nsec)
|
||||
}
|
||||
|
||||
type floatstate32 struct {
|
||||
r [32]uint32
|
||||
fpscr uint32
|
||||
}
|
||||
|
||||
type regs32 struct {
|
||||
r [13]uint32 // r0 to r12
|
||||
sp uint32 // r13
|
||||
lr uint32 // r14
|
||||
pc uint32 // r15
|
||||
cpsr uint32
|
||||
}
|
||||
|
||||
type exceptionstate32 struct {
|
||||
trapno uint32 // NOTE: on 386, the trapno field is split into trapno and cpu
|
||||
err uint32
|
||||
faultvaddr uint32
|
||||
}
|
||||
|
||||
type mcontext32 struct {
|
||||
es exceptionstate32
|
||||
ss regs32
|
||||
fs floatstate32
|
||||
}
|
||||
|
||||
type ucontext struct {
|
||||
uc_onstack int32
|
||||
uc_sigmask uint32
|
||||
uc_stack stackt
|
||||
uc_link *ucontext
|
||||
uc_mcsize uint32
|
||||
uc_mcontext *mcontext32
|
||||
}
|
||||
|
||||
type keventt struct {
|
||||
ident uint32
|
||||
filter int16
|
||||
flags uint16
|
||||
fflags uint32
|
||||
data int32
|
||||
udata *byte
|
||||
}
|
||||
|
||||
type pthread uintptr
|
||||
type pthreadattr struct {
|
||||
X__sig int32
|
||||
X__opaque [36]int8
|
||||
}
|
||||
type pthreadmutex struct {
|
||||
X__sig int32
|
||||
X__opaque [40]int8
|
||||
}
|
||||
type pthreadmutexattr struct {
|
||||
X__sig int32
|
||||
X__opaque [8]int8
|
||||
}
|
||||
type pthreadcond struct {
|
||||
X__sig int32
|
||||
X__opaque [24]int8
|
||||
}
|
||||
type pthreadcondattr struct {
|
||||
X__sig int32
|
||||
X__opaque [4]int8
|
||||
}
|
||||
|
||||
type machTimebaseInfo struct {
|
||||
numer uint32
|
||||
denom uint32
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
// Copyright 2014 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 runtime
|
||||
|
||||
func checkgoarm() {
|
||||
// TODO(minux): FP checks like in os_linux_arm.go.
|
||||
|
||||
// osinit not called yet, so ncpu not set: must use getncpu directly.
|
||||
if getncpu() > 1 && goarm < 7 {
|
||||
print("runtime: this system has multiple CPUs and must use\n")
|
||||
print("atomic synchronization instructions. Recompile using GOARM=7.\n")
|
||||
exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
func cputicks() int64 {
|
||||
// Currently cputicks() is used in blocking profiler and to seed runtime·fastrand().
|
||||
// runtime·nanotime() is a poor approximation of CPU ticks that is enough for the profiler.
|
||||
return nanotime()
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
// Copyright 2014 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 _rt0_arm_darwin(SB),7,$0
|
||||
B _rt0_asm(SB)
|
||||
|
||||
TEXT _rt0_arm_darwin_lib(SB),NOSPLIT,$0
|
||||
B _rt0_arm_lib(SB)
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build darwin dragonfly freebsd linux netbsd openbsd
|
||||
// +build dragonfly freebsd linux netbsd openbsd
|
||||
|
||||
package runtime
|
||||
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
// Copyright 2014 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 runtime
|
||||
|
||||
import "unsafe"
|
||||
|
||||
type sigctxt struct {
|
||||
info *siginfo
|
||||
ctxt unsafe.Pointer
|
||||
}
|
||||
|
||||
//go:nosplit
|
||||
//go:nowritebarrierrec
|
||||
func (c *sigctxt) regs() *regs32 { return &(*ucontext)(c.ctxt).uc_mcontext.ss }
|
||||
|
||||
func (c *sigctxt) r0() uint32 { return c.regs().r[0] }
|
||||
func (c *sigctxt) r1() uint32 { return c.regs().r[1] }
|
||||
func (c *sigctxt) r2() uint32 { return c.regs().r[2] }
|
||||
func (c *sigctxt) r3() uint32 { return c.regs().r[3] }
|
||||
func (c *sigctxt) r4() uint32 { return c.regs().r[4] }
|
||||
func (c *sigctxt) r5() uint32 { return c.regs().r[5] }
|
||||
func (c *sigctxt) r6() uint32 { return c.regs().r[6] }
|
||||
func (c *sigctxt) r7() uint32 { return c.regs().r[7] }
|
||||
func (c *sigctxt) r8() uint32 { return c.regs().r[8] }
|
||||
func (c *sigctxt) r9() uint32 { return c.regs().r[9] }
|
||||
func (c *sigctxt) r10() uint32 { return c.regs().r[10] }
|
||||
func (c *sigctxt) fp() uint32 { return c.regs().r[11] }
|
||||
func (c *sigctxt) ip() uint32 { return c.regs().r[12] }
|
||||
func (c *sigctxt) sp() uint32 { return c.regs().sp }
|
||||
func (c *sigctxt) lr() uint32 { return c.regs().lr }
|
||||
|
||||
//go:nosplit
|
||||
//go:nowritebarrierrec
|
||||
func (c *sigctxt) pc() uint32 { return c.regs().pc }
|
||||
|
||||
func (c *sigctxt) cpsr() uint32 { return c.regs().cpsr }
|
||||
func (c *sigctxt) fault() uintptr { return uintptr(c.info.si_addr) }
|
||||
func (c *sigctxt) sigcode() uint32 { return uint32(c.info.si_code) }
|
||||
func (c *sigctxt) trap() uint32 { return 0 }
|
||||
func (c *sigctxt) error() uint32 { return 0 }
|
||||
func (c *sigctxt) oldmask() uint32 { return 0 }
|
||||
|
||||
func (c *sigctxt) set_pc(x uint32) { c.regs().pc = x }
|
||||
func (c *sigctxt) set_sp(x uint32) { c.regs().sp = x }
|
||||
func (c *sigctxt) set_lr(x uint32) { c.regs().lr = x }
|
||||
func (c *sigctxt) set_r10(x uint32) { c.regs().r[10] = x }
|
||||
|
||||
func (c *sigctxt) set_sigcode(x uint32) { c.info.si_code = int32(x) }
|
||||
func (c *sigctxt) set_sigaddr(x uint32) { c.info.si_addr = x }
|
||||
|
||||
//go:nosplit
|
||||
func (c *sigctxt) fixsigcode(sig uint32) {
|
||||
switch sig {
|
||||
case _SIGTRAP:
|
||||
// OS X sets c.sigcode() == TRAP_BRKPT unconditionally for all SIGTRAPs,
|
||||
// leaving no way to distinguish a breakpoint-induced SIGTRAP
|
||||
// from an asynchronous signal SIGTRAP.
|
||||
// They all look breakpoint-induced by default.
|
||||
// Try looking at the code to see if it's a breakpoint.
|
||||
// The assumption is that we're very unlikely to get an
|
||||
// asynchronous SIGTRAP at just the moment that the
|
||||
// PC started to point at unmapped memory.
|
||||
pc := uintptr(c.pc())
|
||||
// OS X will leave the pc just after the instruction.
|
||||
code := (*uint32)(unsafe.Pointer(pc - 4))
|
||||
if *code != 0xe7f001f0 {
|
||||
// SIGTRAP on something other than breakpoint.
|
||||
c.set_sigcode(_SI_USER)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build darwin
|
||||
// +build 386 arm
|
||||
// +build 386
|
||||
|
||||
package runtime
|
||||
|
||||
|
|
|
|||
|
|
@ -1,603 +0,0 @@
|
|||
// Copyright 2014 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.
|
||||
|
||||
// System calls and other sys.stuff for ARM, Darwin
|
||||
// System calls are implemented in libSystem, this file contains
|
||||
// trampolines that convert from Go to C calling convention.
|
||||
|
||||
#include "go_asm.h"
|
||||
#include "go_tls.h"
|
||||
#include "textflag.h"
|
||||
|
||||
TEXT notok<>(SB),NOSPLIT,$0
|
||||
MOVW $0, R8
|
||||
MOVW R8, (R8)
|
||||
B 0(PC)
|
||||
|
||||
TEXT runtime·open_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 mode
|
||||
MOVW 8(R0), R2 // arg 3 perm
|
||||
MOVW 0(R0), R0 // arg 1 name
|
||||
BL libc_open(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·close_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 fd
|
||||
BL libc_close(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·write_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 buf
|
||||
MOVW 8(R0), R2 // arg 3 count
|
||||
MOVW 0(R0), R0 // arg 1 fd
|
||||
BL libc_write(SB)
|
||||
MOVW $-1, R1
|
||||
CMP R0, R1
|
||||
BNE noerr
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
RSB $0, R0, R0 // caller expects negative errno value
|
||||
noerr:
|
||||
RET
|
||||
|
||||
TEXT runtime·read_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 buf
|
||||
MOVW 8(R0), R2 // arg 3 count
|
||||
MOVW 0(R0), R0 // arg 1 fd
|
||||
BL libc_read(SB)
|
||||
MOVW $-1, R1
|
||||
CMP R0, R1
|
||||
BNE noerr
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
RSB $0, R0, R0 // caller expects negative errno value
|
||||
noerr:
|
||||
RET
|
||||
|
||||
TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0
|
||||
BL libc_pipe(SB) // pointer already in R0
|
||||
CMP $0, R0
|
||||
BEQ 3(PC)
|
||||
BL libc_error(SB) // return negative errno value
|
||||
RSB $0, R0, R0
|
||||
RET
|
||||
|
||||
TEXT runtime·exit_trampoline(SB),NOSPLIT|NOFRAME,$0
|
||||
MOVW 0(R0), R0 // arg 0 code
|
||||
BL libc_exit(SB)
|
||||
MOVW $1234, R0
|
||||
MOVW $1002, R1
|
||||
MOVW R0, (R1) // fail hard
|
||||
|
||||
TEXT runtime·raiseproc_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R8 // signal
|
||||
BL libc_getpid(SB)
|
||||
// arg 1 pid already in R0 from getpid
|
||||
MOVW R8, R1 // arg 2 signal
|
||||
BL libc_kill(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·mmap_trampoline(SB),NOSPLIT,$0
|
||||
MOVW R0, R8
|
||||
MOVW 0(R8), R0 // arg 1 addr
|
||||
MOVW 4(R8), R1 // arg 2 len
|
||||
MOVW 8(R8), R2 // arg 3 prot
|
||||
MOVW 12(R8), R3 // arg 4 flags
|
||||
MOVW 16(R8), R4 // arg 5 fid
|
||||
MOVW 20(R8), R5 // arg 6 offset
|
||||
MOVW $0, R6 // off_t is uint64_t
|
||||
// Only R0-R3 are used for arguments, the rest
|
||||
// go on the stack.
|
||||
MOVM.DB.W [R4-R6], (R13)
|
||||
BL libc_mmap(SB)
|
||||
ADD $12, R13
|
||||
MOVW $0, R1
|
||||
MOVW $-1, R2
|
||||
CMP R0, R2
|
||||
BNE ok
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R1
|
||||
MOVW $0, R0
|
||||
ok:
|
||||
MOVW R0, 24(R8) // ret 1 addr
|
||||
MOVW R1, 28(R8) // ret 2 err
|
||||
RET
|
||||
|
||||
TEXT runtime·munmap_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 len
|
||||
MOVW 0(R0), R0 // arg 1 addr
|
||||
BL libc_munmap(SB)
|
||||
MOVW $-1, R2
|
||||
CMP R0, R2
|
||||
BL.EQ notok<>(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·madvise_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 len
|
||||
MOVW 8(R0), R2 // arg 3 advice
|
||||
MOVW 0(R0), R0 // arg 1 addr
|
||||
BL libc_madvise(SB)
|
||||
MOVW $-1, R2
|
||||
CMP R0, R2
|
||||
BL.EQ notok<>(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·setitimer_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 new
|
||||
MOVW 8(R0), R2 // arg 3 old
|
||||
MOVW 0(R0), R0 // arg 1 which
|
||||
BL libc_setitimer(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·walltime_trampoline(SB),NOSPLIT,$0
|
||||
// R0 already has *timeval
|
||||
MOVW $0, R1 // no timezone needed
|
||||
BL libc_gettimeofday(SB)
|
||||
RET
|
||||
|
||||
GLOBL timebase<>(SB),NOPTR,$(machTimebaseInfo__size)
|
||||
|
||||
TEXT runtime·nanotime_trampoline(SB),NOSPLIT,$0
|
||||
MOVW R0, R8
|
||||
BL libc_mach_absolute_time(SB)
|
||||
MOVW R0, 0(R8)
|
||||
MOVW R1, 4(R8)
|
||||
MOVW timebase<>+machTimebaseInfo_numer(SB), R6
|
||||
MOVW $timebase<>+machTimebaseInfo_denom(SB), R5
|
||||
MOVW (R5), R7
|
||||
DMB MB_ISH // memory barrier for atomic read
|
||||
CMP $0, R7
|
||||
BNE initialized
|
||||
|
||||
SUB $(machTimebaseInfo__size+7)/8*8, R13
|
||||
MOVW R13, R0
|
||||
BL libc_mach_timebase_info(SB)
|
||||
MOVW machTimebaseInfo_numer(R13), R6
|
||||
MOVW machTimebaseInfo_denom(R13), R7
|
||||
ADD $(machTimebaseInfo__size+7)/8*8, R13
|
||||
|
||||
MOVW R6, timebase<>+machTimebaseInfo_numer(SB)
|
||||
MOVW $timebase<>+machTimebaseInfo_denom(SB), R5
|
||||
DMB MB_ISH // memory barrier for atomic write
|
||||
MOVW R7, (R5)
|
||||
DMB MB_ISH
|
||||
|
||||
initialized:
|
||||
MOVW R6, 8(R8)
|
||||
MOVW R7, 12(R8)
|
||||
RET
|
||||
|
||||
TEXT runtime·sigfwd(SB),NOSPLIT,$0-16
|
||||
MOVW sig+4(FP), R0
|
||||
MOVW info+8(FP), R1
|
||||
MOVW ctx+12(FP), R2
|
||||
MOVW fn+0(FP), R11
|
||||
MOVW R13, R4
|
||||
SUB $24, R13
|
||||
BIC $0x7, R13 // alignment for ELF ABI
|
||||
BL (R11)
|
||||
MOVW R4, R13
|
||||
RET
|
||||
|
||||
TEXT runtime·sigtramp(SB),NOSPLIT,$0
|
||||
// Reserve space for callee-save registers and arguments.
|
||||
MOVM.DB.W [R4-R11], (R13)
|
||||
SUB $16, R13
|
||||
|
||||
// Save arguments.
|
||||
MOVW R0, 4(R13) // sig
|
||||
MOVW R1, 8(R13) // info
|
||||
MOVW R2, 12(R13) // ctx
|
||||
|
||||
// this might be called in external code context,
|
||||
// where g is not set.
|
||||
MOVB runtime·iscgo(SB), R0
|
||||
CMP $0, R0
|
||||
BL.NE runtime·load_g(SB)
|
||||
|
||||
MOVW R13, R6
|
||||
CMP $0, g
|
||||
BEQ nog
|
||||
|
||||
// iOS always use the main stack to run the signal handler.
|
||||
// We need to switch to gsignal ourselves.
|
||||
MOVW g_m(g), R11
|
||||
MOVW m_gsignal(R11), R5
|
||||
MOVW (g_stack+stack_hi)(R5), R6
|
||||
|
||||
nog:
|
||||
// Restore arguments.
|
||||
MOVW 4(R13), R0
|
||||
MOVW 8(R13), R1
|
||||
MOVW 12(R13), R2
|
||||
|
||||
// Reserve space for args and the stack pointer on the
|
||||
// gsignal stack.
|
||||
SUB $24, R6
|
||||
// Save stack pointer.
|
||||
MOVW R13, R4
|
||||
MOVW R4, 16(R6)
|
||||
// Switch to gsignal stack.
|
||||
MOVW R6, R13
|
||||
|
||||
// Call sigtrampgo
|
||||
MOVW R0, 4(R13)
|
||||
MOVW R1, 8(R13)
|
||||
MOVW R2, 12(R13)
|
||||
BL runtime·sigtrampgo(SB)
|
||||
|
||||
// Switch to old stack.
|
||||
MOVW 16(R13), R5
|
||||
MOVW R5, R13
|
||||
|
||||
// Restore callee-save registers.
|
||||
ADD $16, R13
|
||||
MOVM.IA.W (R13), [R4-R11]
|
||||
|
||||
RET
|
||||
|
||||
TEXT runtime·cgoSigtramp(SB),NOSPLIT,$0
|
||||
JMP runtime·sigtramp(SB)
|
||||
|
||||
TEXT runtime·sigprocmask_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 new
|
||||
MOVW 8(R0), R2 // arg 3 old
|
||||
MOVW 0(R0), R0 // arg 1 how
|
||||
BL libc_pthread_sigmask(SB)
|
||||
CMP $0, R0
|
||||
BL.NE notok<>(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·sigaction_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 new
|
||||
MOVW 8(R0), R2 // arg 3 old
|
||||
MOVW 0(R0), R0 // arg 1 how
|
||||
BL libc_sigaction(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·usleep_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 usec
|
||||
BL libc_usleep(SB)
|
||||
RET
|
||||
|
||||
TEXT ·publicationBarrier(SB),NOSPLIT|NOFRAME,$0-0
|
||||
B runtime·armPublicationBarrier(SB)
|
||||
|
||||
TEXT runtime·sysctl_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 miblen
|
||||
MOVW 8(R0), R2 // arg 3 out
|
||||
MOVW 12(R0), R3 // arg 4 size
|
||||
MOVW 16(R0), R4 // arg 5 dst
|
||||
MOVW 20(R0), R5 // arg 6 ndst
|
||||
MOVW 0(R0), R0 // arg 1 mib
|
||||
// Only R0-R3 are used for arguments, the rest
|
||||
// go on the stack.
|
||||
MOVM.DB.W [R4-R5], (R13)
|
||||
BL libc_sysctl(SB)
|
||||
ADD $(2*4), R13
|
||||
RET
|
||||
|
||||
TEXT runtime·kqueue_trampoline(SB),NOSPLIT,$0
|
||||
BL libc_kqueue(SB)
|
||||
RET
|
||||
|
||||
// int32 runtime·kevent(int kq, Kevent *changelist, int nchanges, Kevent *eventlist, int events, Timespec *timeout)
|
||||
TEXT runtime·kevent_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 keventss
|
||||
MOVW 8(R0), R2 // arg 3 nch
|
||||
MOVW 12(R0), R3 // arg 4 ev
|
||||
MOVW 16(R0), R4 // arg 5 nev
|
||||
MOVW 20(R0), R5 // arg 6 ts
|
||||
MOVW 0(R0), R0 // arg 1 kq
|
||||
// Only R0-R3 are used for arguments, the rest
|
||||
// go on the stack.
|
||||
MOVM.DB.W [R4-R5], (R13)
|
||||
BL libc_kevent(SB)
|
||||
ADD $(2*4), R13
|
||||
MOVW $-1, R2
|
||||
CMP R0, R2
|
||||
BNE ok
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0 // errno
|
||||
RSB $0, R0, R0 // caller wants it as a negative error code
|
||||
ok:
|
||||
RET
|
||||
|
||||
TEXT runtime·fcntl_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 cmd
|
||||
MOVW 8(R0), R2 // arg 3 arg
|
||||
MOVW 0(R0), R0 // arg 1 fd
|
||||
BL libc_fcntl(SB)
|
||||
RET
|
||||
|
||||
// sigaltstack is not supported on iOS, so our sigtramp has
|
||||
// to do the stack switch ourselves.
|
||||
TEXT runtime·sigaltstack_trampoline(SB),NOSPLIT,$0
|
||||
MOVW $43, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
// Thread related functions
|
||||
// Note: On darwin/arm, the runtime always use runtime/cgo to
|
||||
// create threads, so all thread related functions will just exit with a
|
||||
// unique status.
|
||||
|
||||
TEXT runtime·mstart_stub(SB),NOSPLIT,$0
|
||||
MOVW $44, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_attr_init_trampoline(SB),NOSPLIT,$0
|
||||
MOVW $45, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_attr_getstacksize_trampoline(SB),NOSPLIT,$0
|
||||
MOVW $46, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_attr_setdetachstate_trampoline(SB),NOSPLIT,$0
|
||||
MOVW $47, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_create_trampoline(SB),NOSPLIT,$0
|
||||
MOVW $48, R0
|
||||
BL libc_exit(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·raise_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 sig
|
||||
BL libc_raise(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_mutex_init_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 attr
|
||||
MOVW 0(R0), R0 // arg 1 mutex
|
||||
BL libc_pthread_mutex_init(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_mutex_lock_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 mutex
|
||||
BL libc_pthread_mutex_lock(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_mutex_unlock_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 mutex
|
||||
BL libc_pthread_mutex_unlock(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_cond_init_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 attr
|
||||
MOVW 0(R0), R0 // arg 1 cond
|
||||
BL libc_pthread_cond_init(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_cond_wait_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 mutex
|
||||
MOVW 0(R0), R0 // arg 1 cond
|
||||
BL libc_pthread_cond_wait(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_cond_timedwait_relative_np_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 mutex
|
||||
MOVW 8(R0), R2 // arg 3 timeout
|
||||
MOVW 0(R0), R0 // arg 1 cond
|
||||
BL libc_pthread_cond_timedwait_relative_np(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_cond_signal_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 0(R0), R0 // arg 1 cond
|
||||
BL libc_pthread_cond_signal(SB)
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_self_trampoline(SB),NOSPLIT,$0
|
||||
MOVW R0, R4 // R4 is callee-save
|
||||
BL libc_pthread_self(SB)
|
||||
MOVW R0, 0(R4) // return value
|
||||
RET
|
||||
|
||||
TEXT runtime·pthread_kill_trampoline(SB),NOSPLIT,$0
|
||||
MOVW 4(R0), R1 // arg 2 sig
|
||||
MOVW 0(R0), R0 // arg 1 thread
|
||||
BL libc_pthread_kill(SB)
|
||||
RET
|
||||
|
||||
// syscall calls a function in libc on behalf of the syscall package.
|
||||
// syscall takes a pointer to a struct like:
|
||||
// struct {
|
||||
// fn uintptr
|
||||
// a1 uintptr
|
||||
// a2 uintptr
|
||||
// a3 uintptr
|
||||
// r1 uintptr
|
||||
// r2 uintptr
|
||||
// err uintptr
|
||||
// }
|
||||
// syscall must be called on the g0 stack with the
|
||||
// C calling convention (use libcCall).
|
||||
TEXT runtime·syscall(SB),NOSPLIT,$0
|
||||
MOVW.W R0, -4(R13) // push structure pointer
|
||||
MOVW 0(R0), R12 // fn
|
||||
MOVW 8(R0), R1 // a2
|
||||
MOVW 12(R0), R2 // a3
|
||||
MOVW 4(R0), R0 // a1
|
||||
BL (R12)
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 16(R2) // save r1
|
||||
MOVW R1, 20(R2) // save r2
|
||||
MOVW $-1, R3
|
||||
CMP R0, R3
|
||||
BNE ok
|
||||
MOVW.W R2, -4(R13) // push structure pointer
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 24(R2) // save err
|
||||
ok:
|
||||
RET
|
||||
|
||||
// syscallPtr is like syscall except the libc function reports an
|
||||
// error by returning NULL and setting errno.
|
||||
TEXT runtime·syscallPtr(SB),NOSPLIT,$0
|
||||
MOVW.W R0, -4(R13) // push structure pointer
|
||||
MOVW 0(R0), R12 // fn
|
||||
MOVW 8(R0), R1 // a2
|
||||
MOVW 12(R0), R2 // a3
|
||||
MOVW 4(R0), R0 // a1
|
||||
BL (R12)
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 16(R2) // save r1
|
||||
MOVW R1, 20(R2) // save r2
|
||||
MOVW $0, R3
|
||||
CMP R0, R3
|
||||
BNE ok
|
||||
MOVW.W R2, -4(R13) // push structure pointer
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 24(R2) // save err
|
||||
ok:
|
||||
RET
|
||||
|
||||
// syscall6 calls a function in libc on behalf of the syscall package.
|
||||
// syscall6 takes a pointer to a struct like:
|
||||
// struct {
|
||||
// fn uintptr
|
||||
// a1 uintptr
|
||||
// a2 uintptr
|
||||
// a3 uintptr
|
||||
// a4 uintptr
|
||||
// a5 uintptr
|
||||
// a6 uintptr
|
||||
// r1 uintptr
|
||||
// r2 uintptr
|
||||
// err uintptr
|
||||
// }
|
||||
// syscall6 must be called on the g0 stack with the
|
||||
// C calling convention (use libcCall).
|
||||
TEXT runtime·syscall6(SB),NOSPLIT,$0
|
||||
MOVW.W R0, -4(R13) // push structure pointer
|
||||
MOVW 0(R0), R12 // fn
|
||||
MOVW 24(R0), R1 // a6
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 20(R0), R1 // a5
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 8(R0), R1 // a2
|
||||
MOVW 12(R0), R2 // a3
|
||||
MOVW 16(R0), R3 // a4
|
||||
MOVW 4(R0), R0 // a1
|
||||
BL (R12)
|
||||
ADD $8, R13
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 28(R2) // save r1
|
||||
MOVW R1, 32(R2) // save r2
|
||||
MOVW $-1, R3
|
||||
CMP R0, R3
|
||||
BNE ok
|
||||
MOVW.W R2, -4(R13) // push structure pointer
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 36(R2) // save err
|
||||
ok:
|
||||
RET
|
||||
|
||||
// syscall6X calls a function in libc on behalf of the syscall package.
|
||||
// syscall6X takes a pointer to a struct like:
|
||||
// struct {
|
||||
// fn uintptr
|
||||
// a1 uintptr
|
||||
// a2 uintptr
|
||||
// a3 uintptr
|
||||
// a4 uintptr
|
||||
// a5 uintptr
|
||||
// a6 uintptr
|
||||
// r1 uintptr
|
||||
// r2 uintptr
|
||||
// err uintptr
|
||||
// }
|
||||
// syscall6X must be called on the g0 stack with the
|
||||
// C calling convention (use libcCall).
|
||||
TEXT runtime·syscall6X(SB),NOSPLIT,$0
|
||||
MOVW.W R0, -4(R13) // push structure pointer
|
||||
MOVW 0(R0), R12 // fn
|
||||
MOVW 24(R0), R1 // a6
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 20(R0), R1 // a5
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 8(R0), R1 // a2
|
||||
MOVW 12(R0), R2 // a3
|
||||
MOVW 16(R0), R3 // a4
|
||||
MOVW 4(R0), R0 // a1
|
||||
BL (R12)
|
||||
ADD $8, R13
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 28(R2) // save r1
|
||||
MOVW R1, 32(R2) // save r2
|
||||
MOVW $-1, R3
|
||||
CMP R0, R3
|
||||
BNE ok
|
||||
CMP R1, R3
|
||||
BNE ok
|
||||
MOVW.W R2, -4(R13) // push structure pointer
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 36(R2) // save err
|
||||
ok:
|
||||
RET
|
||||
|
||||
// syscall9 calls a function in libc on behalf of the syscall package.
|
||||
// syscall9 takes a pointer to a struct like:
|
||||
// struct {
|
||||
// fn uintptr
|
||||
// a1 uintptr
|
||||
// a2 uintptr
|
||||
// a3 uintptr
|
||||
// a4 uintptr
|
||||
// a5 uintptr
|
||||
// a6 uintptr
|
||||
// a7 uintptr
|
||||
// a8 uintptr
|
||||
// a9 uintptr
|
||||
// r1 uintptr
|
||||
// r2 uintptr
|
||||
// err uintptr
|
||||
// }
|
||||
// syscall9 must be called on the g0 stack with the
|
||||
// C calling convention (use libcCall).
|
||||
TEXT runtime·syscall9(SB),NOSPLIT,$0
|
||||
MOVW.W R0, -4(R13) // push structure pointer
|
||||
MOVW 0(R0), R12 // fn
|
||||
MOVW 36(R0), R1 // a9
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 32(R0), R1 // a8
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 28(R0), R1 // a7
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 24(R0), R1 // a6
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 20(R0), R1 // a5
|
||||
MOVW.W R1, -4(R13)
|
||||
MOVW 8(R0), R1 // a2
|
||||
MOVW 12(R0), R2 // a3
|
||||
MOVW 16(R0), R3 // a4
|
||||
MOVW 4(R0), R0 // a1
|
||||
BL (R12)
|
||||
ADD $20, R13
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 40(R2) // save r1
|
||||
MOVW R1, 44(R2) // save r2
|
||||
MOVW $-1, R3
|
||||
CMP R0, R3
|
||||
BNE ok
|
||||
MOVW.W R2, -4(R13) // push structure pointer
|
||||
BL libc_error(SB)
|
||||
MOVW (R0), R0
|
||||
MOVW.P 4(R13), R2 // pop structure pointer
|
||||
MOVW R0, 48(R2) // save err
|
||||
ok:
|
||||
RET
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
// Copyright 2014 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"
|
||||
|
||||
//
|
||||
// System call support for ARM, Darwin
|
||||
//
|
||||
|
||||
// func Syscall(syscall uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
|
||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVW trap+0(FP), R12
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
SWI $0x80
|
||||
BCC ok
|
||||
MOVW $-1, R1
|
||||
MOVW R1, r1+16(FP) // r1
|
||||
MOVW $0, R2
|
||||
MOVW R2, r2+20(FP) // r2
|
||||
MOVW R0, err+24(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
ok:
|
||||
MOVW R0, r1+16(FP) // r1
|
||||
MOVW R1, r2+20(FP) // r2
|
||||
MOVW $0, R0
|
||||
MOVW R0, err+24(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
// func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
|
||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
||||
MOVW trap+0(FP), R12 // syscall entry
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
SWI $0x80
|
||||
BCC ok1
|
||||
MOVW $-1, R1
|
||||
MOVW R1, r1+16(FP) // r1
|
||||
MOVW $0, R2
|
||||
MOVW R2, r2+20(FP) // r2
|
||||
MOVW R0, err+24(FP) // err
|
||||
RET
|
||||
ok1:
|
||||
MOVW R0, r1+16(FP) // r1
|
||||
MOVW R1, r2+20(FP) // r2
|
||||
MOVW $0, R0
|
||||
MOVW R0, err+24(FP) // err
|
||||
RET
|
||||
|
||||
// func Syscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
|
||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVW trap+0(FP), R12 // syscall entry
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
MOVW a4+16(FP), R3
|
||||
MOVW a5+20(FP), R4
|
||||
MOVW a6+24(FP), R5
|
||||
SWI $0x80
|
||||
BCC ok6
|
||||
MOVW $-1, R1
|
||||
MOVW R1, r1+28(FP) // r1
|
||||
MOVW $0, R2
|
||||
MOVW R2, r2+32(FP) // r2
|
||||
MOVW R0, err+36(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
ok6:
|
||||
MOVW R0, r1+28(FP) // r1
|
||||
MOVW R1, r2+32(FP) // r2
|
||||
MOVW $0, R0
|
||||
MOVW R0, err+36(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
||||
// func RawSyscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
|
||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
||||
MOVW trap+0(FP), R12 // syscall entry
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
MOVW a4+16(FP), R3
|
||||
MOVW a5+20(FP), R4
|
||||
MOVW a6+24(FP), R5
|
||||
SWI $0x80
|
||||
BCC ok2
|
||||
MOVW $-1, R1
|
||||
MOVW R1, r1+28(FP) // r1
|
||||
MOVW $0, R2
|
||||
MOVW R2, r2+32(FP) // r2
|
||||
MOVW R0, err+36(FP) // err
|
||||
RET
|
||||
ok2:
|
||||
MOVW R0, r1+28(FP) // r1
|
||||
MOVW R1, r2+32(FP) // r2
|
||||
MOVW $0, R0
|
||||
MOVW R0, err+36(FP) // err
|
||||
RET
|
||||
|
||||
// Actually Syscall7.
|
||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
||||
BL runtime·entersyscall(SB)
|
||||
MOVW num+0(FP), R12 // syscall entry
|
||||
MOVW a1+4(FP), R0
|
||||
MOVW a2+8(FP), R1
|
||||
MOVW a3+12(FP), R2
|
||||
MOVW a4+16(FP), R3
|
||||
MOVW a5+20(FP), R4
|
||||
MOVW a6+24(FP), R5
|
||||
MOVW a7+28(FP), R6
|
||||
SWI $0x80
|
||||
BCC ok9
|
||||
MOVW $-1, R1
|
||||
MOVW R1, r1+40(FP) // r1
|
||||
MOVW $0, R2
|
||||
MOVW R2, r2+44(FP) // r2
|
||||
MOVW R0, err+48(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
ok9:
|
||||
MOVW R0, r1+40(FP) // r1
|
||||
MOVW R1, r2+44(FP) // r2
|
||||
MOVW $0, R0
|
||||
MOVW R0, err+48(FP) // err
|
||||
BL runtime·exitsyscall(SB)
|
||||
RET
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
// Copyright 2014 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 syscall
|
||||
|
||||
import "unsafe"
|
||||
|
||||
func setTimespec(sec, nsec int64) Timespec {
|
||||
return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
|
||||
}
|
||||
|
||||
func setTimeval(sec, usec int64) Timeval {
|
||||
return Timeval{Sec: int32(sec), Usec: int32(usec)}
|
||||
}
|
||||
|
||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||
//sys Fstatfs(fd int, stat *Statfs_t) (err error)
|
||||
//sysnb Gettimeofday(tp *Timeval) (err error)
|
||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||
//sys Stat(path string, stat *Stat_t) (err error)
|
||||
//sys Statfs(path string, stat *Statfs_t) (err error)
|
||||
//sys fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
|
||||
|
||||
// Marked nosplit because it is called from forkAndExecInChild where
|
||||
// stack growth is forbidden.
|
||||
//go:nosplit
|
||||
func ptrace(request int, pid int, addr uintptr, data uintptr) error {
|
||||
return ENOTSUP
|
||||
}
|
||||
|
||||
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
||||
k.Ident = uint32(fd)
|
||||
k.Filter = int16(mode)
|
||||
k.Flags = uint16(flags)
|
||||
}
|
||||
|
||||
func (iov *Iovec) SetLen(length int) {
|
||||
iov.Len = uint32(length)
|
||||
}
|
||||
|
||||
func (msghdr *Msghdr) SetControllen(length int) {
|
||||
msghdr.Controllen = uint32(length)
|
||||
}
|
||||
|
||||
func (cmsg *Cmsghdr) SetLen(length int) {
|
||||
cmsg.Len = uint32(length)
|
||||
}
|
||||
|
||||
func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
|
||||
var length = uint64(count)
|
||||
|
||||
_, _, e1 := Syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
|
||||
|
||||
written = int(length)
|
||||
|
||||
if e1 != 0 {
|
||||
err = e1
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func libc_sendfile_trampoline()
|
||||
|
||||
//go:linkname libc_sendfile libc_sendfile
|
||||
//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
|
||||
|
||||
// Implemented in the runtime package (runtime/sys_darwin_32.go)
|
||||
func syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)
|
||||
|
||||
func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // sic
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,251 +0,0 @@
|
|||
// go run mkasm_darwin.go arm
|
||||
// Code generated by the command above; DO NOT EDIT.
|
||||
#include "textflag.h"
|
||||
TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getattrlist(SB)
|
||||
TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getfsstat(SB)
|
||||
TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setattrlist(SB)
|
||||
TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fdopendir(SB)
|
||||
TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_sendfile(SB)
|
||||
TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getgroups(SB)
|
||||
TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setgroups(SB)
|
||||
TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_wait4(SB)
|
||||
TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_accept(SB)
|
||||
TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_bind(SB)
|
||||
TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_connect(SB)
|
||||
TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_socket(SB)
|
||||
TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getsockopt(SB)
|
||||
TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setsockopt(SB)
|
||||
TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getpeername(SB)
|
||||
TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getsockname(SB)
|
||||
TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_shutdown(SB)
|
||||
TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_socketpair(SB)
|
||||
TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_recvfrom(SB)
|
||||
TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_sendto(SB)
|
||||
TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_recvmsg(SB)
|
||||
TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_sendmsg(SB)
|
||||
TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_kevent(SB)
|
||||
TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_utimes(SB)
|
||||
TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_futimes(SB)
|
||||
TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fcntl(SB)
|
||||
TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_pipe(SB)
|
||||
TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_kill(SB)
|
||||
TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_access(SB)
|
||||
TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_adjtime(SB)
|
||||
TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_chdir(SB)
|
||||
TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_chflags(SB)
|
||||
TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_chmod(SB)
|
||||
TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_chown(SB)
|
||||
TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_chroot(SB)
|
||||
TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_close(SB)
|
||||
TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_closedir(SB)
|
||||
TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_dup(SB)
|
||||
TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_dup2(SB)
|
||||
TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_exchangedata(SB)
|
||||
TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fchdir(SB)
|
||||
TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fchflags(SB)
|
||||
TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fchmod(SB)
|
||||
TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fchown(SB)
|
||||
TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_flock(SB)
|
||||
TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fpathconf(SB)
|
||||
TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fsync(SB)
|
||||
TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_ftruncate(SB)
|
||||
TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getdtablesize(SB)
|
||||
TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getegid(SB)
|
||||
TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_geteuid(SB)
|
||||
TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getgid(SB)
|
||||
TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getpgid(SB)
|
||||
TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getpgrp(SB)
|
||||
TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getpid(SB)
|
||||
TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getppid(SB)
|
||||
TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getpriority(SB)
|
||||
TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getrlimit(SB)
|
||||
TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getrusage(SB)
|
||||
TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getsid(SB)
|
||||
TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_getuid(SB)
|
||||
TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_issetugid(SB)
|
||||
TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_kqueue(SB)
|
||||
TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_lchown(SB)
|
||||
TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_link(SB)
|
||||
TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_listen(SB)
|
||||
TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mkdir(SB)
|
||||
TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mkfifo(SB)
|
||||
TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mknod(SB)
|
||||
TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mlock(SB)
|
||||
TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mlockall(SB)
|
||||
TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mprotect(SB)
|
||||
TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_munlock(SB)
|
||||
TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_munlockall(SB)
|
||||
TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_open(SB)
|
||||
TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_pathconf(SB)
|
||||
TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_pread(SB)
|
||||
TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_pwrite(SB)
|
||||
TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_read(SB)
|
||||
TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_readdir_r(SB)
|
||||
TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_readlink(SB)
|
||||
TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_rename(SB)
|
||||
TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_revoke(SB)
|
||||
TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_rmdir(SB)
|
||||
TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_lseek(SB)
|
||||
TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_select(SB)
|
||||
TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setegid(SB)
|
||||
TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_seteuid(SB)
|
||||
TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setgid(SB)
|
||||
TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setlogin(SB)
|
||||
TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setpgid(SB)
|
||||
TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setpriority(SB)
|
||||
TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setprivexec(SB)
|
||||
TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setregid(SB)
|
||||
TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setreuid(SB)
|
||||
TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setrlimit(SB)
|
||||
TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setsid(SB)
|
||||
TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_settimeofday(SB)
|
||||
TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_setuid(SB)
|
||||
TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_symlink(SB)
|
||||
TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_sync(SB)
|
||||
TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_truncate(SB)
|
||||
TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_umask(SB)
|
||||
TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_undelete(SB)
|
||||
TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_unlink(SB)
|
||||
TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_unmount(SB)
|
||||
TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_write(SB)
|
||||
TEXT ·libc_writev_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_writev(SB)
|
||||
TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_mmap(SB)
|
||||
TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_munmap(SB)
|
||||
TEXT ·libc_fork_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fork(SB)
|
||||
TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_ioctl(SB)
|
||||
TEXT ·libc_execve_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_execve(SB)
|
||||
TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_exit(SB)
|
||||
TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_sysctl(SB)
|
||||
TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_unlinkat(SB)
|
||||
TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_openat(SB)
|
||||
TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fstat(SB)
|
||||
TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fstatfs(SB)
|
||||
TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_gettimeofday(SB)
|
||||
TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_lstat(SB)
|
||||
TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_stat(SB)
|
||||
TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_statfs(SB)
|
||||
TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
|
||||
JMP libc_fstatat(SB)
|
||||
|
|
@ -1,347 +0,0 @@
|
|||
// mksysnum_darwin.pl /usr/include/sys/syscall.h
|
||||
// Code generated by the command above; DO NOT EDIT.
|
||||
|
||||
// +build arm,darwin
|
||||
|
||||
package syscall
|
||||
|
||||
const (
|
||||
SYS_SYSCALL = 0
|
||||
SYS_EXIT = 1
|
||||
SYS_FORK = 2
|
||||
SYS_READ = 3
|
||||
SYS_WRITE = 4
|
||||
SYS_OPEN = 5
|
||||
SYS_CLOSE = 6
|
||||
SYS_WAIT4 = 7
|
||||
SYS_LINK = 9
|
||||
SYS_UNLINK = 10
|
||||
SYS_CHDIR = 12
|
||||
SYS_FCHDIR = 13
|
||||
SYS_MKNOD = 14
|
||||
SYS_CHMOD = 15
|
||||
SYS_CHOWN = 16
|
||||
SYS_OBREAK = 17
|
||||
SYS_OGETFSSTAT = 18
|
||||
SYS_GETFSSTAT = 18
|
||||
SYS_GETPID = 20
|
||||
SYS_SETUID = 23
|
||||
SYS_GETUID = 24
|
||||
SYS_GETEUID = 25
|
||||
SYS_PTRACE = 26
|
||||
SYS_RECVMSG = 27
|
||||
SYS_SENDMSG = 28
|
||||
SYS_RECVFROM = 29
|
||||
SYS_ACCEPT = 30
|
||||
SYS_GETPEERNAME = 31
|
||||
SYS_GETSOCKNAME = 32
|
||||
SYS_ACCESS = 33
|
||||
SYS_CHFLAGS = 34
|
||||
SYS_FCHFLAGS = 35
|
||||
SYS_SYNC = 36
|
||||
SYS_KILL = 37
|
||||
SYS_GETPPID = 39
|
||||
SYS_DUP = 41
|
||||
SYS_PIPE = 42
|
||||
SYS_GETEGID = 43
|
||||
SYS_PROFIL = 44
|
||||
SYS_SIGACTION = 46
|
||||
SYS_GETGID = 47
|
||||
SYS_SIGPROCMASK = 48
|
||||
SYS_GETLOGIN = 49
|
||||
SYS_SETLOGIN = 50
|
||||
SYS_ACCT = 51
|
||||
SYS_SIGPENDING = 52
|
||||
SYS_SIGALTSTACK = 53
|
||||
SYS_IOCTL = 54
|
||||
SYS_REBOOT = 55
|
||||
SYS_REVOKE = 56
|
||||
SYS_SYMLINK = 57
|
||||
SYS_READLINK = 58
|
||||
SYS_EXECVE = 59
|
||||
SYS_UMASK = 60
|
||||
SYS_CHROOT = 61
|
||||
SYS_MSYNC = 65
|
||||
SYS_VFORK = 66
|
||||
SYS_SBRK = 69
|
||||
SYS_SSTK = 70
|
||||
SYS_OVADVISE = 72
|
||||
SYS_MUNMAP = 73
|
||||
SYS_MPROTECT = 74
|
||||
SYS_MADVISE = 75
|
||||
SYS_MINCORE = 78
|
||||
SYS_GETGROUPS = 79
|
||||
SYS_SETGROUPS = 80
|
||||
SYS_GETPGRP = 81
|
||||
SYS_SETPGID = 82
|
||||
SYS_SETITIMER = 83
|
||||
SYS_SWAPON = 85
|
||||
SYS_GETITIMER = 86
|
||||
SYS_GETDTABLESIZE = 89
|
||||
SYS_DUP2 = 90
|
||||
SYS_FCNTL = 92
|
||||
SYS_SELECT = 93
|
||||
SYS_FSYNC = 95
|
||||
SYS_SETPRIORITY = 96
|
||||
SYS_SOCKET = 97
|
||||
SYS_CONNECT = 98
|
||||
SYS_GETPRIORITY = 100
|
||||
SYS_BIND = 104
|
||||
SYS_SETSOCKOPT = 105
|
||||
SYS_LISTEN = 106
|
||||
SYS_SIGSUSPEND = 111
|
||||
SYS_GETTIMEOFDAY = 116
|
||||
SYS_GETRUSAGE = 117
|
||||
SYS_GETSOCKOPT = 118
|
||||
SYS_READV = 120
|
||||
SYS_WRITEV = 121
|
||||
SYS_SETTIMEOFDAY = 122
|
||||
SYS_FCHOWN = 123
|
||||
SYS_FCHMOD = 124
|
||||
SYS_SETREUID = 126
|
||||
SYS_SETREGID = 127
|
||||
SYS_RENAME = 128
|
||||
SYS_FLOCK = 131
|
||||
SYS_MKFIFO = 132
|
||||
SYS_SENDTO = 133
|
||||
SYS_SHUTDOWN = 134
|
||||
SYS_SOCKETPAIR = 135
|
||||
SYS_MKDIR = 136
|
||||
SYS_RMDIR = 137
|
||||
SYS_UTIMES = 138
|
||||
SYS_FUTIMES = 139
|
||||
SYS_ADJTIME = 140
|
||||
SYS_GETHOSTUUID = 142
|
||||
SYS_SETSID = 147
|
||||
SYS_GETPGID = 151
|
||||
SYS_SETPRIVEXEC = 152
|
||||
SYS_PREAD = 153
|
||||
SYS_PWRITE = 154
|
||||
SYS_NFSSVC = 155
|
||||
SYS_STATFS = 157
|
||||
SYS_FSTATFS = 158
|
||||
SYS_UNMOUNT = 159
|
||||
SYS_GETFH = 161
|
||||
SYS_QUOTACTL = 165
|
||||
SYS_MOUNT = 167
|
||||
SYS_CSOPS = 169
|
||||
SYS_TABLE = 170
|
||||
SYS_WAITID = 173
|
||||
SYS_ADD_PROFIL = 176
|
||||
SYS_KDEBUG_TRACE = 180
|
||||
SYS_SETGID = 181
|
||||
SYS_SETEGID = 182
|
||||
SYS_SETEUID = 183
|
||||
SYS_SIGRETURN = 184
|
||||
SYS_CHUD = 185
|
||||
SYS_STAT = 188
|
||||
SYS_FSTAT = 189
|
||||
SYS_LSTAT = 190
|
||||
SYS_PATHCONF = 191
|
||||
SYS_FPATHCONF = 192
|
||||
SYS_GETRLIMIT = 194
|
||||
SYS_SETRLIMIT = 195
|
||||
SYS_GETDIRENTRIES = 196
|
||||
SYS_MMAP = 197
|
||||
SYS_LSEEK = 199
|
||||
SYS_TRUNCATE = 200
|
||||
SYS_FTRUNCATE = 201
|
||||
SYS___SYSCTL = 202
|
||||
SYS_MLOCK = 203
|
||||
SYS_MUNLOCK = 204
|
||||
SYS_UNDELETE = 205
|
||||
SYS_ATSOCKET = 206
|
||||
SYS_ATGETMSG = 207
|
||||
SYS_ATPUTMSG = 208
|
||||
SYS_ATPSNDREQ = 209
|
||||
SYS_ATPSNDRSP = 210
|
||||
SYS_ATPGETREQ = 211
|
||||
SYS_ATPGETRSP = 212
|
||||
SYS_KQUEUE_FROM_PORTSET_NP = 214
|
||||
SYS_KQUEUE_PORTSET_NP = 215
|
||||
SYS_MKCOMPLEX = 216
|
||||
SYS_STATV = 217
|
||||
SYS_LSTATV = 218
|
||||
SYS_FSTATV = 219
|
||||
SYS_GETATTRLIST = 220
|
||||
SYS_SETATTRLIST = 221
|
||||
SYS_GETDIRENTRIESATTR = 222
|
||||
SYS_EXCHANGEDATA = 223
|
||||
SYS_SEARCHFS = 225
|
||||
SYS_DELETE = 226
|
||||
SYS_COPYFILE = 227
|
||||
SYS_POLL = 230
|
||||
SYS_WATCHEVENT = 231
|
||||
SYS_WAITEVENT = 232
|
||||
SYS_MODWATCH = 233
|
||||
SYS_GETXATTR = 234
|
||||
SYS_FGETXATTR = 235
|
||||
SYS_SETXATTR = 236
|
||||
SYS_FSETXATTR = 237
|
||||
SYS_REMOVEXATTR = 238
|
||||
SYS_FREMOVEXATTR = 239
|
||||
SYS_LISTXATTR = 240
|
||||
SYS_FLISTXATTR = 241
|
||||
SYS_FSCTL = 242
|
||||
SYS_INITGROUPS = 243
|
||||
SYS_POSIX_SPAWN = 244
|
||||
SYS_NFSCLNT = 247
|
||||
SYS_FHOPEN = 248
|
||||
SYS_MINHERIT = 250
|
||||
SYS_SEMSYS = 251
|
||||
SYS_MSGSYS = 252
|
||||
SYS_SHMSYS = 253
|
||||
SYS_SEMCTL = 254
|
||||
SYS_SEMGET = 255
|
||||
SYS_SEMOP = 256
|
||||
SYS_MSGCTL = 258
|
||||
SYS_MSGGET = 259
|
||||
SYS_MSGSND = 260
|
||||
SYS_MSGRCV = 261
|
||||
SYS_SHMAT = 262
|
||||
SYS_SHMCTL = 263
|
||||
SYS_SHMDT = 264
|
||||
SYS_SHMGET = 265
|
||||
SYS_SHM_OPEN = 266
|
||||
SYS_SHM_UNLINK = 267
|
||||
SYS_SEM_OPEN = 268
|
||||
SYS_SEM_CLOSE = 269
|
||||
SYS_SEM_UNLINK = 270
|
||||
SYS_SEM_WAIT = 271
|
||||
SYS_SEM_TRYWAIT = 272
|
||||
SYS_SEM_POST = 273
|
||||
SYS_SEM_GETVALUE = 274
|
||||
SYS_SEM_INIT = 275
|
||||
SYS_SEM_DESTROY = 276
|
||||
SYS_OPEN_EXTENDED = 277
|
||||
SYS_UMASK_EXTENDED = 278
|
||||
SYS_STAT_EXTENDED = 279
|
||||
SYS_LSTAT_EXTENDED = 280
|
||||
SYS_FSTAT_EXTENDED = 281
|
||||
SYS_CHMOD_EXTENDED = 282
|
||||
SYS_FCHMOD_EXTENDED = 283
|
||||
SYS_ACCESS_EXTENDED = 284
|
||||
SYS_SETTID = 285
|
||||
SYS_GETTID = 286
|
||||
SYS_SETSGROUPS = 287
|
||||
SYS_GETSGROUPS = 288
|
||||
SYS_SETWGROUPS = 289
|
||||
SYS_GETWGROUPS = 290
|
||||
SYS_MKFIFO_EXTENDED = 291
|
||||
SYS_MKDIR_EXTENDED = 292
|
||||
SYS_IDENTITYSVC = 293
|
||||
SYS_SHARED_REGION_CHECK_NP = 294
|
||||
SYS_SHARED_REGION_MAP_NP = 295
|
||||
SYS___PTHREAD_MUTEX_DESTROY = 301
|
||||
SYS___PTHREAD_MUTEX_INIT = 302
|
||||
SYS___PTHREAD_MUTEX_LOCK = 303
|
||||
SYS___PTHREAD_MUTEX_TRYLOCK = 304
|
||||
SYS___PTHREAD_MUTEX_UNLOCK = 305
|
||||
SYS___PTHREAD_COND_INIT = 306
|
||||
SYS___PTHREAD_COND_DESTROY = 307
|
||||
SYS___PTHREAD_COND_BROADCAST = 308
|
||||
SYS___PTHREAD_COND_SIGNAL = 309
|
||||
SYS_GETSID = 310
|
||||
SYS_SETTID_WITH_PID = 311
|
||||
SYS___PTHREAD_COND_TIMEDWAIT = 312
|
||||
SYS_AIO_FSYNC = 313
|
||||
SYS_AIO_RETURN = 314
|
||||
SYS_AIO_SUSPEND = 315
|
||||
SYS_AIO_CANCEL = 316
|
||||
SYS_AIO_ERROR = 317
|
||||
SYS_AIO_READ = 318
|
||||
SYS_AIO_WRITE = 319
|
||||
SYS_LIO_LISTIO = 320
|
||||
SYS___PTHREAD_COND_WAIT = 321
|
||||
SYS_IOPOLICYSYS = 322
|
||||
SYS_MLOCKALL = 324
|
||||
SYS_MUNLOCKALL = 325
|
||||
SYS_ISSETUGID = 327
|
||||
SYS___PTHREAD_KILL = 328
|
||||
SYS___PTHREAD_SIGMASK = 329
|
||||
SYS___SIGWAIT = 330
|
||||
SYS___DISABLE_THREADSIGNAL = 331
|
||||
SYS___PTHREAD_MARKCANCEL = 332
|
||||
SYS___PTHREAD_CANCELED = 333
|
||||
SYS___SEMWAIT_SIGNAL = 334
|
||||
SYS_PROC_INFO = 336
|
||||
SYS_SENDFILE = 337
|
||||
SYS_STAT64 = 338
|
||||
SYS_FSTAT64 = 339
|
||||
SYS_LSTAT64 = 340
|
||||
SYS_STAT64_EXTENDED = 341
|
||||
SYS_LSTAT64_EXTENDED = 342
|
||||
SYS_FSTAT64_EXTENDED = 343
|
||||
SYS_GETDIRENTRIES64 = 344
|
||||
SYS_STATFS64 = 345
|
||||
SYS_FSTATFS64 = 346
|
||||
SYS_GETFSSTAT64 = 347
|
||||
SYS___PTHREAD_CHDIR = 348
|
||||
SYS___PTHREAD_FCHDIR = 349
|
||||
SYS_AUDIT = 350
|
||||
SYS_AUDITON = 351
|
||||
SYS_GETAUID = 353
|
||||
SYS_SETAUID = 354
|
||||
SYS_GETAUDIT = 355
|
||||
SYS_SETAUDIT = 356
|
||||
SYS_GETAUDIT_ADDR = 357
|
||||
SYS_SETAUDIT_ADDR = 358
|
||||
SYS_AUDITCTL = 359
|
||||
SYS_BSDTHREAD_CREATE = 360
|
||||
SYS_BSDTHREAD_TERMINATE = 361
|
||||
SYS_KQUEUE = 362
|
||||
SYS_KEVENT = 363
|
||||
SYS_LCHOWN = 364
|
||||
SYS_STACK_SNAPSHOT = 365
|
||||
SYS_BSDTHREAD_REGISTER = 366
|
||||
SYS_WORKQ_OPEN = 367
|
||||
SYS_WORKQ_OPS = 368
|
||||
SYS___MAC_EXECVE = 380
|
||||
SYS___MAC_SYSCALL = 381
|
||||
SYS___MAC_GET_FILE = 382
|
||||
SYS___MAC_SET_FILE = 383
|
||||
SYS___MAC_GET_LINK = 384
|
||||
SYS___MAC_SET_LINK = 385
|
||||
SYS___MAC_GET_PROC = 386
|
||||
SYS___MAC_SET_PROC = 387
|
||||
SYS___MAC_GET_FD = 388
|
||||
SYS___MAC_SET_FD = 389
|
||||
SYS___MAC_GET_PID = 390
|
||||
SYS___MAC_GET_LCID = 391
|
||||
SYS___MAC_GET_LCTX = 392
|
||||
SYS___MAC_SET_LCTX = 393
|
||||
SYS_SETLCID = 394
|
||||
SYS_GETLCID = 395
|
||||
SYS_READ_NOCANCEL = 396
|
||||
SYS_WRITE_NOCANCEL = 397
|
||||
SYS_OPEN_NOCANCEL = 398
|
||||
SYS_CLOSE_NOCANCEL = 399
|
||||
SYS_WAIT4_NOCANCEL = 400
|
||||
SYS_RECVMSG_NOCANCEL = 401
|
||||
SYS_SENDMSG_NOCANCEL = 402
|
||||
SYS_RECVFROM_NOCANCEL = 403
|
||||
SYS_ACCEPT_NOCANCEL = 404
|
||||
SYS_MSYNC_NOCANCEL = 405
|
||||
SYS_FCNTL_NOCANCEL = 406
|
||||
SYS_SELECT_NOCANCEL = 407
|
||||
SYS_FSYNC_NOCANCEL = 408
|
||||
SYS_CONNECT_NOCANCEL = 409
|
||||
SYS_SIGSUSPEND_NOCANCEL = 410
|
||||
SYS_READV_NOCANCEL = 411
|
||||
SYS_WRITEV_NOCANCEL = 412
|
||||
SYS_SENDTO_NOCANCEL = 413
|
||||
SYS_PREAD_NOCANCEL = 414
|
||||
SYS_PWRITE_NOCANCEL = 415
|
||||
SYS_WAITID_NOCANCEL = 416
|
||||
SYS_POLL_NOCANCEL = 417
|
||||
SYS_MSGSND_NOCANCEL = 418
|
||||
SYS_MSGRCV_NOCANCEL = 419
|
||||
SYS_SEM_WAIT_NOCANCEL = 420
|
||||
SYS_AIO_SUSPEND_NOCANCEL = 421
|
||||
SYS___SIGWAIT_NOCANCEL = 422
|
||||
SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
|
||||
SYS___MAC_MOUNT = 424
|
||||
SYS___MAC_GET_MOUNT = 425
|
||||
SYS___MAC_GETFSSTAT = 426
|
||||
SYS_MAXSYSCALL = 427
|
||||
)
|
||||
|
|
@ -1,453 +0,0 @@
|
|||
// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet
|
||||
// Created by cgo -godefs - DO NOT EDIT
|
||||
// cgo -godefs types_darwin.go
|
||||
|
||||
// +build arm,darwin
|
||||
|
||||
package syscall
|
||||
|
||||
const (
|
||||
sizeofPtr = 0x4
|
||||
sizeofShort = 0x2
|
||||
sizeofInt = 0x4
|
||||
sizeofLong = 0x4
|
||||
sizeofLongLong = 0x8
|
||||
)
|
||||
|
||||
type (
|
||||
_C_short int16
|
||||
_C_int int32
|
||||
_C_long int32
|
||||
_C_long_long int64
|
||||
)
|
||||
|
||||
type Timespec struct {
|
||||
Sec int32
|
||||
Nsec int32
|
||||
}
|
||||
|
||||
type Timeval struct {
|
||||
Sec int32
|
||||
Usec int32
|
||||
}
|
||||
|
||||
type Timeval32 [0]byte
|
||||
|
||||
type Rusage struct {
|
||||
Utime Timeval
|
||||
Stime Timeval
|
||||
Maxrss int32
|
||||
Ixrss int32
|
||||
Idrss int32
|
||||
Isrss int32
|
||||
Minflt int32
|
||||
Majflt int32
|
||||
Nswap int32
|
||||
Inblock int32
|
||||
Oublock int32
|
||||
Msgsnd int32
|
||||
Msgrcv int32
|
||||
Nsignals int32
|
||||
Nvcsw int32
|
||||
Nivcsw int32
|
||||
}
|
||||
|
||||
type Rlimit struct {
|
||||
Cur uint64
|
||||
Max uint64
|
||||
}
|
||||
|
||||
type _Gid_t uint32
|
||||
|
||||
type Stat_t struct {
|
||||
Dev int32
|
||||
Mode uint16
|
||||
Nlink uint16
|
||||
Ino uint64
|
||||
Uid uint32
|
||||
Gid uint32
|
||||
Rdev int32
|
||||
Atimespec Timespec
|
||||
Mtimespec Timespec
|
||||
Ctimespec Timespec
|
||||
Birthtimespec Timespec
|
||||
Size int64
|
||||
Blocks int64
|
||||
Blksize int32
|
||||
Flags uint32
|
||||
Gen uint32
|
||||
Lspare int32
|
||||
Qspare [2]int64
|
||||
}
|
||||
|
||||
type Statfs_t struct {
|
||||
Bsize uint32
|
||||
Iosize int32
|
||||
Blocks uint64
|
||||
Bfree uint64
|
||||
Bavail uint64
|
||||
Files uint64
|
||||
Ffree uint64
|
||||
Fsid Fsid
|
||||
Owner uint32
|
||||
Type uint32
|
||||
Flags uint32
|
||||
Fssubtype uint32
|
||||
Fstypename [16]int8
|
||||
Mntonname [1024]int8
|
||||
Mntfromname [1024]int8
|
||||
Reserved [8]uint32
|
||||
}
|
||||
|
||||
type Flock_t struct {
|
||||
Start int64
|
||||
Len int64
|
||||
Pid int32
|
||||
Type int16
|
||||
Whence int16
|
||||
}
|
||||
|
||||
type Fstore_t struct {
|
||||
Flags uint32
|
||||
Posmode int32
|
||||
Offset int64
|
||||
Length int64
|
||||
Bytesalloc int64
|
||||
}
|
||||
|
||||
type Radvisory_t struct {
|
||||
Offset int64
|
||||
Count int32
|
||||
}
|
||||
|
||||
type Fbootstraptransfer_t struct {
|
||||
Offset int64
|
||||
Length uint32
|
||||
Buffer *byte
|
||||
}
|
||||
|
||||
type Log2phys_t struct {
|
||||
Flags uint32
|
||||
Contigbytes int64
|
||||
Devoffset int64
|
||||
}
|
||||
|
||||
type Fsid struct {
|
||||
Val [2]int32
|
||||
}
|
||||
|
||||
type Dirent struct {
|
||||
Ino uint64
|
||||
Seekoff uint64
|
||||
Reclen uint16
|
||||
Namlen uint16
|
||||
Type uint8
|
||||
Name [1024]int8
|
||||
Pad_cgo_0 [3]byte
|
||||
}
|
||||
|
||||
type RawSockaddrInet4 struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
Port uint16
|
||||
Addr [4]byte /* in_addr */
|
||||
Zero [8]int8
|
||||
}
|
||||
|
||||
type RawSockaddrInet6 struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
Port uint16
|
||||
Flowinfo uint32
|
||||
Addr [16]byte /* in6_addr */
|
||||
Scope_id uint32
|
||||
}
|
||||
|
||||
type RawSockaddrUnix struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
Path [104]int8
|
||||
}
|
||||
|
||||
type RawSockaddrDatalink struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
Index uint16
|
||||
Type uint8
|
||||
Nlen uint8
|
||||
Alen uint8
|
||||
Slen uint8
|
||||
Data [12]int8
|
||||
}
|
||||
|
||||
type RawSockaddr struct {
|
||||
Len uint8
|
||||
Family uint8
|
||||
Data [14]int8
|
||||
}
|
||||
|
||||
type RawSockaddrAny struct {
|
||||
Addr RawSockaddr
|
||||
Pad [92]int8
|
||||
}
|
||||
|
||||
type _Socklen uint32
|
||||
|
||||
type Linger struct {
|
||||
Onoff int32
|
||||
Linger int32
|
||||
}
|
||||
|
||||
type Iovec struct {
|
||||
Base *byte
|
||||
Len uint32
|
||||
}
|
||||
|
||||
type IPMreq struct {
|
||||
Multiaddr [4]byte /* in_addr */
|
||||
Interface [4]byte /* in_addr */
|
||||
}
|
||||
|
||||
type IPv6Mreq struct {
|
||||
Multiaddr [16]byte /* in6_addr */
|
||||
Interface uint32
|
||||
}
|
||||
|
||||
type Msghdr struct {
|
||||
Name *byte
|
||||
Namelen uint32
|
||||
Iov *Iovec
|
||||
Iovlen int32
|
||||
Control *byte
|
||||
Controllen uint32
|
||||
Flags int32
|
||||
}
|
||||
|
||||
type Cmsghdr struct {
|
||||
Len uint32
|
||||
Level int32
|
||||
Type int32
|
||||
}
|
||||
|
||||
type Inet4Pktinfo struct {
|
||||
Ifindex uint32
|
||||
Spec_dst [4]byte /* in_addr */
|
||||
Addr [4]byte /* in_addr */
|
||||
}
|
||||
|
||||
type Inet6Pktinfo struct {
|
||||
Addr [16]byte /* in6_addr */
|
||||
Ifindex uint32
|
||||
}
|
||||
|
||||
type IPv6MTUInfo struct {
|
||||
Addr RawSockaddrInet6
|
||||
Mtu uint32
|
||||
}
|
||||
|
||||
type ICMPv6Filter struct {
|
||||
Filt [8]uint32
|
||||
}
|
||||
|
||||
const (
|
||||
SizeofSockaddrInet4 = 0x10
|
||||
SizeofSockaddrInet6 = 0x1c
|
||||
SizeofSockaddrAny = 0x6c
|
||||
SizeofSockaddrUnix = 0x6a
|
||||
SizeofSockaddrDatalink = 0x14
|
||||
SizeofLinger = 0x8
|
||||
SizeofIPMreq = 0x8
|
||||
SizeofIPv6Mreq = 0x14
|
||||
SizeofMsghdr = 0x1c
|
||||
SizeofCmsghdr = 0xc
|
||||
SizeofInet4Pktinfo = 0xc
|
||||
SizeofInet6Pktinfo = 0x14
|
||||
SizeofIPv6MTUInfo = 0x20
|
||||
SizeofICMPv6Filter = 0x20
|
||||
)
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = 0x0
|
||||
PTRACE_CONT = 0x7
|
||||
PTRACE_KILL = 0x8
|
||||
)
|
||||
|
||||
type Kevent_t struct {
|
||||
Ident uint32
|
||||
Filter int16
|
||||
Flags uint16
|
||||
Fflags uint32
|
||||
Data int32
|
||||
Udata *byte
|
||||
}
|
||||
|
||||
type FdSet struct {
|
||||
Bits [32]int32
|
||||
}
|
||||
|
||||
const (
|
||||
SizeofIfMsghdr = 0x70
|
||||
SizeofIfData = 0x60
|
||||
SizeofIfaMsghdr = 0x14
|
||||
SizeofIfmaMsghdr = 0x10
|
||||
SizeofIfmaMsghdr2 = 0x14
|
||||
SizeofRtMsghdr = 0x5c
|
||||
SizeofRtMetrics = 0x38
|
||||
)
|
||||
|
||||
type IfMsghdr struct {
|
||||
Msglen uint16
|
||||
Version uint8
|
||||
Type uint8
|
||||
Addrs int32
|
||||
Flags int32
|
||||
Index uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
Data IfData
|
||||
}
|
||||
|
||||
type IfData struct {
|
||||
Type uint8
|
||||
Typelen uint8
|
||||
Physical uint8
|
||||
Addrlen uint8
|
||||
Hdrlen uint8
|
||||
Recvquota uint8
|
||||
Xmitquota uint8
|
||||
Unused1 uint8
|
||||
Mtu uint32
|
||||
Metric uint32
|
||||
Baudrate uint32
|
||||
Ipackets uint32
|
||||
Ierrors uint32
|
||||
Opackets uint32
|
||||
Oerrors uint32
|
||||
Collisions uint32
|
||||
Ibytes uint32
|
||||
Obytes uint32
|
||||
Imcasts uint32
|
||||
Omcasts uint32
|
||||
Iqdrops uint32
|
||||
Noproto uint32
|
||||
Recvtiming uint32
|
||||
Xmittiming uint32
|
||||
Lastchange Timeval
|
||||
Unused2 uint32
|
||||
Hwassist uint32
|
||||
Reserved1 uint32
|
||||
Reserved2 uint32
|
||||
}
|
||||
|
||||
type IfaMsghdr struct {
|
||||
Msglen uint16
|
||||
Version uint8
|
||||
Type uint8
|
||||
Addrs int32
|
||||
Flags int32
|
||||
Index uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
Metric int32
|
||||
}
|
||||
|
||||
type IfmaMsghdr struct {
|
||||
Msglen uint16
|
||||
Version uint8
|
||||
Type uint8
|
||||
Addrs int32
|
||||
Flags int32
|
||||
Index uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
}
|
||||
|
||||
type IfmaMsghdr2 struct {
|
||||
Msglen uint16
|
||||
Version uint8
|
||||
Type uint8
|
||||
Addrs int32
|
||||
Flags int32
|
||||
Index uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
Refcount int32
|
||||
}
|
||||
|
||||
type RtMsghdr struct {
|
||||
Msglen uint16
|
||||
Version uint8
|
||||
Type uint8
|
||||
Index uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
Flags int32
|
||||
Addrs int32
|
||||
Pid int32
|
||||
Seq int32
|
||||
Errno int32
|
||||
Use int32
|
||||
Inits uint32
|
||||
Rmx RtMetrics
|
||||
}
|
||||
|
||||
type RtMetrics struct {
|
||||
Locks uint32
|
||||
Mtu uint32
|
||||
Hopcount uint32
|
||||
Expire int32
|
||||
Recvpipe uint32
|
||||
Sendpipe uint32
|
||||
Ssthresh uint32
|
||||
Rtt uint32
|
||||
Rttvar uint32
|
||||
Pksent uint32
|
||||
Filler [4]uint32
|
||||
}
|
||||
|
||||
const (
|
||||
SizeofBpfVersion = 0x4
|
||||
SizeofBpfStat = 0x8
|
||||
SizeofBpfProgram = 0x8
|
||||
SizeofBpfInsn = 0x8
|
||||
SizeofBpfHdr = 0x14
|
||||
)
|
||||
|
||||
type BpfVersion struct {
|
||||
Major uint16
|
||||
Minor uint16
|
||||
}
|
||||
|
||||
type BpfStat struct {
|
||||
Recv uint32
|
||||
Drop uint32
|
||||
}
|
||||
|
||||
type BpfProgram struct {
|
||||
Len uint32
|
||||
Insns *BpfInsn
|
||||
}
|
||||
|
||||
type BpfInsn struct {
|
||||
Code uint16
|
||||
Jt uint8
|
||||
Jf uint8
|
||||
K uint32
|
||||
}
|
||||
|
||||
type BpfHdr struct {
|
||||
Tstamp Timeval
|
||||
Caplen uint32
|
||||
Datalen uint32
|
||||
Hdrlen uint16
|
||||
Pad_cgo_0 [2]byte
|
||||
}
|
||||
|
||||
const (
|
||||
_AT_FDCWD = -0x2
|
||||
)
|
||||
|
||||
type Termios struct {
|
||||
Iflag uint32
|
||||
Oflag uint32
|
||||
Cflag uint32
|
||||
Lflag uint32
|
||||
Cc [20]uint8
|
||||
Ispeed uint32
|
||||
Ospeed uint32
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build darwin
|
||||
// +build arm arm64
|
||||
// +build arm64
|
||||
|
||||
package time
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// +build !nacl,!js,!android,!darwin darwin,!arm
|
||||
// +build !nacl,!js,!android
|
||||
// run
|
||||
|
||||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
|
|
|
|||
Loading…
Reference in New Issue