auto-generated, renamed, and deleted files
associated with CL 29709.

R=r
DELTA=6444  (3476 added, 2958 deleted, 10 changed)
OCL=29710
CL=29724
diff --git a/src/lib/syscall/Makefile b/src/lib/syscall/Makefile
index 8c28d08..eadde0f 100644
--- a/src/lib/syscall/Makefile
+++ b/src/lib/syscall/Makefile
@@ -3,7 +3,7 @@
 # license that can be found in the LICENSE file.
 
 # DO NOT EDIT.  Automatically generated by gobuild.
-# gobuild -m errstr_${GOOS}.go file_${GOOS}.go socket_${GOOS}.go syscall_${GOARCH}_${GOOS}.go time_${GOARCH}_${GOOS}.go types_${GOARCH}_${GOOS}.go asm_${GOARCH}_${GOOS}.s syscall.go signal_${GOARCH}_${GOOS}.go exec.go proc_${GOOS}.go >Makefile
+# gobuild -m asm_${GOOS}_${GOARCH}.s errstr.go exec.go syscall.go syscall_${GOOS}.go syscall_${GOOS}_${GOARCH}.go zerrors_${GOOS}_${GOARCH}.go zsyscall_${GOOS}_${GOARCH}.go zsysnum_${GOOS}_${GOARCH}.go ztypes_${GOOS}_${GOARCH}.go >Makefile
 
 D=
 
@@ -40,44 +40,49 @@
 	$(AS) $*.s
 
 O1=\
-	asm_$(GOARCH)_$(GOOS).$O\
-	errstr_$(GOOS).$O\
-	signal_$(GOARCH)_$(GOOS).$O\
+	asm_$(GOOS)_$(GOARCH).$O\
 	syscall.$O\
-	syscall_$(GOARCH)_$(GOOS).$O\
+	zerrors_$(GOOS)_$(GOARCH).$O\
+	zsysnum_$(GOOS)_$(GOARCH).$O\
+	ztypes_$(GOOS)_$(GOARCH).$O\
 
 O2=\
-	types_$(GOARCH)_$(GOOS).$O\
+	errstr.$O\
+	syscall_$(GOOS)_$(GOARCH).$O\
 
 O3=\
-	file_$(GOOS).$O\
-	proc_$(GOOS).$O\
-	socket_$(GOOS).$O\
-	time_$(GOARCH)_$(GOOS).$O\
+	zsyscall_$(GOOS)_$(GOARCH).$O\
 
 O4=\
+	syscall_$(GOOS).$O\
+
+O5=\
 	exec.$O\
 
 
-phases: a1 a2 a3 a4
+phases: a1 a2 a3 a4 a5
 _obj$D/syscall.a: phases
 
 a1: $(O1)
-	$(AR) grc _obj$D/syscall.a asm_$(GOARCH)_$(GOOS).$O errstr_$(GOOS).$O signal_$(GOARCH)_$(GOOS).$O syscall.$O syscall_$(GOARCH)_$(GOOS).$O
+	$(AR) grc _obj$D/syscall.a asm_$(GOOS)_$(GOARCH).$O syscall.$O zerrors_$(GOOS)_$(GOARCH).$O zsysnum_$(GOOS)_$(GOARCH).$O ztypes_$(GOOS)_$(GOARCH).$O
 	rm -f $(O1)
 
 a2: $(O2)
-	$(AR) grc _obj$D/syscall.a types_$(GOARCH)_$(GOOS).$O
+	$(AR) grc _obj$D/syscall.a errstr.$O syscall_$(GOOS)_$(GOARCH).$O
 	rm -f $(O2)
 
 a3: $(O3)
-	$(AR) grc _obj$D/syscall.a file_$(GOOS).$O proc_$(GOOS).$O socket_$(GOOS).$O time_$(GOARCH)_$(GOOS).$O
+	$(AR) grc _obj$D/syscall.a zsyscall_$(GOOS)_$(GOARCH).$O
 	rm -f $(O3)
 
 a4: $(O4)
-	$(AR) grc _obj$D/syscall.a exec.$O
+	$(AR) grc _obj$D/syscall.a syscall_$(GOOS).$O
 	rm -f $(O4)
 
+a5: $(O5)
+	$(AR) grc _obj$D/syscall.a exec.$O
+	rm -f $(O5)
+
 
 newpkg: clean
 	mkdir -p _obj$D
@@ -88,6 +93,7 @@
 $(O3): a2
 $(O4): a3
 $(O5): a4
+$(O6): a5
 
 nuke: clean
 	rm -f $(GOROOT)/pkg$D/syscall.a
diff --git a/src/lib/syscall/asm_amd64_darwin.s b/src/lib/syscall/asm_darwin_amd64.s
similarity index 96%
rename from src/lib/syscall/asm_amd64_darwin.s
rename to src/lib/syscall/asm_darwin_amd64.s
index dbc345c..e152797 100644
--- a/src/lib/syscall/asm_amd64_darwin.s
+++ b/src/lib/syscall/asm_darwin_amd64.s
@@ -1,4 +1,4 @@
-// Copyright 2009 The Go Authors.  All rights reserved.
+// Copyright 2009 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.
 
diff --git a/src/lib/syscall/asm_amd64_linux.s b/src/lib/syscall/asm_linux_amd64.s
similarity index 96%
rename from src/lib/syscall/asm_amd64_linux.s
rename to src/lib/syscall/asm_linux_amd64.s
index 2826c1b..cb93b48 100644
--- a/src/lib/syscall/asm_amd64_linux.s
+++ b/src/lib/syscall/asm_linux_amd64.s
@@ -1,4 +1,4 @@
-// Copyright 2009 The Go Authors.  All rights reserved.
+// Copyright 2009 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.
 
diff --git a/src/lib/syscall/errstr_darwin.go b/src/lib/syscall/errstr_darwin.go
deleted file mode 100644
index abb79b8..0000000
--- a/src/lib/syscall/errstr_darwin.go
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2009 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
-
-const (
-	ENONE=0;
-	EPERM=1;
-	ENOENT=2;
-	ESRCH=3;
-	EINTR=4;
-	EIO=5;
-	ENXIO=6;
-	E2BIG=7;
-	ENOEXEC=8;
-	EBADF=9;
-	ECHILD=10;
-	EDEADLK=11;
-	ENOMEM=12;
-	EACCES=13;
-	EFAULT=14;
-	ENOTBLK=15;
-	EBUSY=16;
-	EEXIST=17;
-	EXDEV=18;
-	ENODEV=19;
-	ENOTDIR=20;
-	EISDIR=21;
-	EINVAL=22;
-	ENFILE=23;
-	EMFILE=24;
-	ENOTTY=25;
-	ETXTBSY=26;
-	EFBIG=27;
-	ENOSPC=28;
-	ESPIPE=29;
-	EROFS=30;
-	EMLINK=31;
-	EPIPE=32;
-	EDOM=33;
-	ERANGE=34;
-	EAGAIN=35;
-	EINPROGRESS=36;
-	EALREADY=37;
-	ENOTSOCK=38;
-	EDESTADDRREQ=39;
-	EMSGSIZE=40;
-	EPROTOTYPE=41;
-	ENOPROTOOPT=42;
-	EPROTONOSUPPORT=43;
-	ESOCKTNOSUPPORT=44;
-	ENOTSUP=45;
-	EPFNOSUPPORT=46;
-	EAFNOSUPPORT=47;
-	EADDRINUSE=48;
-	EADDRNOTAVAIL=49;
-	ENETDOWN=50;
-	ENETUNREACH=51;
-	ENETRESET=52;
-	ECONNABORTED=53;
-	ECONNRESET=54;
-	ENOBUFS=55;
-	EISCONN=56;
-	ENOTCONN=57;
-	ESHUTDOWN=58;
-	ETOOMANYREFS=59;
-	ETIMEDOUT=60;
-	ECONNREFUSED=61;
-	ELOOP=62;
-	ENAMETOOLONG=63;
-	EHOSTDOWN=64;
-	EHOSTUNREACH=65;
-	ENOTEMPTY=66;
-	EPROCLIM=67;
-	EUSERS=68;
-	EDQUOT=69;
-	ESTALE=70;
-	EREMOTE=71;
-	EBADRPC=72;
-	ERPCMISMATCH=73;
-	EPROGUNAVAIL=74;
-	EPROGMISMATCH=75;
-	EPROCUNAVAIL=76;
-	ENOLCK=77;
-	ENOSYS=78;
-	EFTYPE=79;
-	EAUTH=80;
-	ENEEDAUTH=81;
-	EPWROFF=82;
-	EDEVERR=83;
-	EOVERFLOW=84;
-	EBADEXEC=85;
-	EBADARCH=86;
-	ESHLIBVERS=87;
-	EBADMACHO=88;
-	ECANCELED=89;
-	EIDRM=90;
-	ENOMSG=91;
-	EILSEQ=92;
-	ENOATTR=93;
-	EBADMSG=94;
-	EMULTIHOP=95;
-	ENODATA=96;
-	ENOLINK=97;
-	ENOSR=98;
-	ENOSTR=99;
-	EPROTO=100;
-	ETIME=101;
-	EOPNOTSUPP=102;
-	ELAST=103;
-)
-
-var error [ELAST]string;
-
-func init(){
-	error[ENONE] = "No error";
-	error[EPERM] = "Operation not permitted";
-	error[ENOENT] = "No such file or directory";
-	error[ESRCH] = "No such process";
-	error[EINTR] = "Interrupted system call";
-	error[EIO] = "Input/output error";
-	error[ENXIO] = "Device not configured";
-	error[E2BIG] = "Argument list too long";
-	error[ENOEXEC] = "Exec format error";
-	error[EBADF] = "Bad file descriptor";
-	error[ECHILD] = "No child processes";
-	error[EDEADLK] = "Resource deadlock avoided";
-	error[ENOMEM] = "Cannot allocate memory";
-	error[EACCES] = "Permission denied";
-	error[EFAULT] = "Bad address";
-	error[ENOTBLK] = "Block device required";
-	error[EBUSY] = "Device / Resource busy";
-	error[EEXIST] = "File exists";
-	error[EXDEV] = "Cross-device link";
-	error[ENODEV] = "Operation not supported by device";
-	error[ENOTDIR] = "Not a directory";
-	error[EISDIR] = "Is a directory";
-	error[EINVAL] = "Invalid argument";
-	error[ENFILE] = "Too many open files in system";
-	error[EMFILE] = "Too many open files";
-	error[ENOTTY] = "Inappropriate ioctl for device";
-	error[ETXTBSY] = "Text file busy";
-	error[EFBIG] = "File too large";
-	error[ENOSPC] = "No space left on device";
-	error[ESPIPE] = "Illegal seek";
-	error[EROFS] = "Read-only file system";
-	error[EMLINK] = "Too many links";
-	error[EPIPE] = "Broken pipe";
-	error[EDOM] = "Numerical argument out of domain";
-	error[ERANGE] = "Result too large";
-	error[EAGAIN] = "Resource temporarily unavailable";
-	error[EINPROGRESS] = "Operation now in progress";
-	error[EALREADY] = "Operation already in progress";
-	error[ENOTSOCK] = "Socket operation on non-socket";
-	error[EDESTADDRREQ] = "Destination address required";
-	error[EMSGSIZE] = "Message too long";
-	error[EPROTOTYPE] = "Protocol wrong type for socket";
-	error[ENOPROTOOPT] = "Protocol not available";
-	error[EPROTONOSUPPORT] = "Protocol not supported";
-	error[ESOCKTNOSUPPORT] = "Socket type not supported";
-	error[ENOTSUP] = "Operation not supported";
-	error[EPFNOSUPPORT] = "Protocol family not supported";
-	error[EAFNOSUPPORT] = "Address family not supported by protocol family";
-	error[EADDRINUSE] = "Address already in use";
-	error[EADDRNOTAVAIL] = "Can't assign requested address";
-	error[ENETDOWN] = "Network is down";
-	error[ENETUNREACH] = "Network is unreachable";
-	error[ENETRESET] = "Network dropped connection on reset";
-	error[ECONNABORTED] = "Software caused connection abort";
-	error[ECONNRESET] = "Connection reset by peer";
-	error[ENOBUFS] = "No buffer space available";
-	error[EISCONN] = "Socket is already connected";
-	error[ENOTCONN] = "Socket is not connected";
-	error[ESHUTDOWN] = "Can't send after socket shutdown";
-	error[ETOOMANYREFS] = "Too many references: can't splice";
-	error[ETIMEDOUT] = "Operation timed out";
-	error[ECONNREFUSED] = "Connection refused";
-	error[ELOOP] = "Too many levels of symbolic links";
-	error[ENAMETOOLONG] = "File name too long";
-	error[EHOSTDOWN] = "Host is down";
-	error[EHOSTUNREACH] = "No route to host";
-	error[ENOTEMPTY] = "Directory not empty";
-	error[EPROCLIM] = "Too many processes";
-	error[EUSERS] = "Too many users";
-	error[EDQUOT] = "Disc quota exceeded";
-	error[ESTALE] = "Stale NFS file handle";
-	error[EREMOTE] = "Too many levels of remote in path";
-	error[EBADRPC] = "RPC struct is bad";
-	error[ERPCMISMATCH] = "RPC version wrong";
-	error[EPROGUNAVAIL] = "RPC prog. not avail";
-	error[EPROGMISMATCH] = "Program version wrong";
-	error[EPROCUNAVAIL] = "Bad procedure for program";
-	error[ENOLCK] = "No locks available";
-	error[ENOSYS] = "Function not implemented";
-	error[EFTYPE] = "Inappropriate file type or format";
-	error[EAUTH] = "Authentication error";
-	error[ENEEDAUTH] = "Need authenticator";
-	error[EPWROFF] = "Device power is off";
-	error[EDEVERR] = "Device error, e.g. paper out";
-	error[EOVERFLOW] = "Value too large to be stored in data type";
-	error[EBADEXEC] = "Bad executable";
-	error[EBADARCH] = "Bad CPU type in executable";
-	error[ESHLIBVERS] = "Shared library version mismatch";
-	error[EBADMACHO] = "Malformed Macho file";
-	error[ECANCELED] = "Operation canceled";
-	error[EIDRM] = "Identifier removed";
-	error[ENOMSG] = "No message of desired type";
-	error[EILSEQ] = "Illegal byte sequence";
-	error[ENOATTR] = "Attribute not found";
-	error[EBADMSG] = "Bad message";
-	error[EMULTIHOP] = "Reserved";
-	error[ENODATA] = "No message available on STREAM";
-	error[ENOLINK] = "Reserved";
-	error[ENOSR] = "No STREAM resources";
-	error[ENOSTR] = "Not a STREAM";
-	error[EPROTO] = "Protocol error";
-	error[ETIME] = "STREAM ioctl timeout";
-	error[EOPNOTSUPP] = "Operation not supported on socket";
-}
-
-func str(val int64) string {  // do it here rather than with fmt to avoid dependency
-	if val < 0 {
-		return "-" + str(-val);
-	}
-	var buf [32]byte;  // big enough for int64
-	i := len(buf)-1;
-	for val >= 10 {
-		buf[i] = byte(val%10 + '0');
-		i--;
-		val /= 10;
-	}
-	buf[i] = byte(val + '0');
-	return string(buf[i:len(buf)]);
-}
-
-func Errstr(errno int64) string {
-	if errno < 0 || errno >= int64(len(error)) {
-		return "Error " + str(errno)
-	}
-	return error[errno]
-}
diff --git a/src/lib/syscall/errstr_linux.go b/src/lib/syscall/errstr_linux.go
deleted file mode 100644
index 47b5c64..0000000
--- a/src/lib/syscall/errstr_linux.go
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright 2009 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
-
-const (
-	ENONE=0;
-	EPERM=1;
-	ENOENT=2;
-	ESRCH=3;
-	EINTR=4;
-	EIO=5;
-	ENXIO=6;
-	E2BIG=7;
-	ENOEXEC=8;
-	EBADF=9;
-	ECHILD=10;
-	EAGAIN=11;
-	ENOMEM=12;
-	EACCES=13;
-	EFAULT=14;
-	ENOTBLK=15;
-	EBUSY=16;
-	EEXIST=17;
-	EXDEV=18;
-	ENODEV=19;
-	ENOTDIR=20;
-	EISDIR=21;
-	EINVAL=22;
-	ENFILE=23;
-	EMFILE=24;
-	ENOTTY=25;
-	ETXTBSY=26;
-	EFBIG=27;
-	ENOSPC=28;
-	ESPIPE=29;
-	EROFS=30;
-	EMLINK=31;
-	EPIPE=32;
-	EDOM=33;
-	ERANGE=34;
-	EDEADLK=35;
-	ENAMETOOLONG=36;
-	ENOLCK=37;
-	ENOSYS=38;
-	ENOTEMPTY=39;
-	ELOOP=40;
-	ENOMSG=42;
-	EIDRM=43;
-	ECHRNG=44;
-	EL2NSYNC=45;
-	EL3HLT=46;
-	EL3RST=47;
-	ELNRNG=48;
-	EUNATCH=49;
-	ENOCSI=50;
-	EL2HLT=51;
-	EBADE=52;
-	EBADR=53;
-	EXFULL=54;
-	ENOANO=55;
-	EBADRQC=56;
-	EBADSLT=57;
-	EBFONT=59;
-	ENOSTR=60;
-	ENODATA=61;
-	ETIME=62;
-	ENOSR=63;
-	ENONET=64;
-	ENOPKG=65;
-	EREMOTE=66;
-	ENOLINK=67;
-	EADV=68;
-	ESRMNT=69;
-	ECOMM=70;
-	EPROTO=71;
-	EMULTIHOP=72;
-	EDOTDOT=73;
-	EBADMSG=74;
-	EOVERFLOW=75;
-	ENOTUNIQ=76;
-	EBADFD=77;
-	EREMCHG=78;
-	ELIBACC=79;
-	ELIBBAD=80;
-	ELIBSCN=81;
-	ELIBMAX=82;
-	ELIBEXEC=83;
-	EILSEQ=84;
-	ERESTART=85;
-	ESTRPIPE=86;
-	EUSERS=87;
-	ENOTSOCK=88;
-	EDESTADDRREQ=89;
-	EMSGSIZE=90;
-	EPROTOTYPE=91;
-	ENOPROTOOPT=92;
-	EPROTONOSUPPORT=93;
-	ESOCKTNOSUPPORT=94;
-	EOPNOTSUPP=95;
-	EPFNOSUPPORT=96;
-	EAFNOSUPPORT=97;
-	EADDRINUSE=98;
-	EADDRNOTAVAIL=99;
-	ENETDOWN=100;
-	ENETUNREACH=101;
-	ENETRESET=102;
-	ECONNABORTED=103;
-	ECONNRESET=104;
-	ENOBUFS=105;
-	EISCONN=106;
-	ENOTCONN=107;
-	ESHUTDOWN=108;
-	ETOOMANYREFS=109;
-	ETIMEDOUT=110;
-	ECONNREFUSED=111;
-	EHOSTDOWN=112;
-	EHOSTUNREACH=113;
-	EALREADY=114;
-	EINPROGRESS=115;
-	ESTALE=116;
-	EUCLEAN=117;
-	ENOTNAM=118;
-	ENAVAIL=119;
-	EISNAM=120;
-	EREMOTEIO=121;
-	EDQUOT=122;
-	ENOMEDIUM=123;
-	EMEDIUMTYPE=124;
-	ECANCELED=125;
-	ENOKEY=126;
-	EKEYEXPIRED=127;
-	EKEYREVOKED=128;
-	EKEYREJECTED=129;
-	ELAST=130;
-)
-
-var error [ELAST]string;
-
-func init(){
-	error[ENONE] = "No error";
-	error[EPERM] = "Operation not permitted";
-	error[ENOENT] = "No such file or directory";
-	error[ESRCH] = "No such process";
-	error[EINTR] = "Interrupted system call";
-	error[EIO] = "I/O error";
-	error[ENXIO] = "No such device or address";
-	error[E2BIG] = "Argument list too long";
-	error[ENOEXEC] = "Exec format error";
-	error[EBADF] = "Bad file number";
-	error[ECHILD] = "No child processes";
-	error[EAGAIN] = "Try again";
-	error[ENOMEM] = "Out of memory";
-	error[EACCES] = "Permission denied";
-	error[EFAULT] = "Bad address";
-	error[ENOTBLK] = "Block device required";
-	error[EBUSY] = "Device or resource busy";
-	error[EEXIST] = "File exists";
-	error[EXDEV] = "Cross-device link";
-	error[ENODEV] = "No such device";
-	error[ENOTDIR] = "Not a directory";
-	error[EISDIR] = "Is a directory";
-	error[EINVAL] = "Invalid argument";
-	error[ENFILE] = "File table overflow";
-	error[EMFILE] = "Too many open files";
-	error[ENOTTY] = "Not a typewriter";
-	error[ETXTBSY] = "Text file busy";
-	error[EFBIG] = "File too large";
-	error[ENOSPC] = "No space left on device";
-	error[ESPIPE] = "Illegal seek";
-	error[EROFS] = "Read-only file system";
-	error[EMLINK] = "Too many links";
-	error[EPIPE] = "Broken pipe";
-	error[EDOM] = "Math argument out of domain of func";
-	error[ERANGE] = "Math result not representable";
-	error[EDEADLK] = "Resource deadlock would occur";
-	error[ENAMETOOLONG] = "File name too long";
-	error[ENOLCK] = "No record locks available";
-	error[ENOSYS] = "Function not implemented";
-	error[ENOTEMPTY] = "Directory not empty";
-	error[ELOOP] = "Too many symbolic links encountered";
-	error[ENOMSG] = "No message of desired type";
-	error[EIDRM] = "Identifier removed";
-	error[ECHRNG] = "Channel number out of range";
-	error[EL2NSYNC] = "Level 2 not synchronized";
-	error[EL3HLT] = "Level 3 halted";
-	error[EL3RST] = "Level 3 reset";
-	error[ELNRNG] = "Link number out of range";
-	error[EUNATCH] = "Protocol driver not attached";
-	error[ENOCSI] = "No CSI structure available";
-	error[EL2HLT] = "Level 2 halted";
-	error[EBADE] = "Invalid exchange";
-	error[EBADR] = "Invalid request descriptor";
-	error[EXFULL] = "Exchange full";
-	error[ENOANO] = "No anode";
-	error[EBADRQC] = "Invalid request code";
-	error[EBADSLT] = "Invalid slot";
-	error[EBFONT] = "Bad font file format";
-	error[ENOSTR] = "Device not a stream";
-	error[ENODATA] = "No data available";
-	error[ETIME] = "Timer expired";
-	error[ENOSR] = "Out of streams resources";
-	error[ENONET] = "Machine is not on the network";
-	error[ENOPKG] = "Package not installed";
-	error[EREMOTE] = "Object is remote";
-	error[ENOLINK] = "Link has been severed";
-	error[EADV] = "Advertise error";
-	error[ESRMNT] = "Srmount error";
-	error[ECOMM] = "Communication error on send";
-	error[EPROTO] = "Protocol error";
-	error[EMULTIHOP] = "Multihop attempted";
-	error[EDOTDOT] = "RFS specific error";
-	error[EBADMSG] = "Not a data message";
-	error[EOVERFLOW] = "Value too large for defined data type";
-	error[ENOTUNIQ] = "Name not unique on network";
-	error[EBADFD] = "File descriptor in bad state";
-	error[EREMCHG] = "Remote address changed";
-	error[ELIBACC] = "Can not access a needed shared library";
-	error[ELIBBAD] = "Accessing a corrupted shared library";
-	error[ELIBSCN] = ".lib section in a.out corrupted";
-	error[ELIBMAX] = "Attempting to link in too many shared libraries";
-	error[ELIBEXEC] = "Cannot exec a shared library directly";
-	error[EILSEQ] = "Illegal byte sequence";
-	error[ERESTART] = "Interrupted system call should be restarted";
-	error[ESTRPIPE] = "Streams pipe error";
-	error[EUSERS] = "Too many users";
-	error[ENOTSOCK] = "Socket operation on non-socket";
-	error[EDESTADDRREQ] = "Destination address required";
-	error[EMSGSIZE] = "Message too long";
-	error[EPROTOTYPE] = "Protocol wrong type for socket";
-	error[ENOPROTOOPT] = "Protocol not available";
-	error[EPROTONOSUPPORT] = "Protocol not supported";
-	error[ESOCKTNOSUPPORT] = "Socket type not supported";
-	error[EOPNOTSUPP] = "Operation not supported on transport endpoint";
-	error[EPFNOSUPPORT] = "Protocol family not supported";
-	error[EAFNOSUPPORT] = "Address family not supported by protocol";
-	error[EADDRINUSE] = "Address already in use";
-	error[EADDRNOTAVAIL] = "Cannot assign requested address";
-	error[ENETDOWN] = "Network is down";
-	error[ENETUNREACH] = "Network is unreachable";
-	error[ENETRESET] = "Network dropped connection because of reset";
-	error[ECONNABORTED] = "Software caused connection abort";
-	error[ECONNRESET] = "Connection reset by peer";
-	error[ENOBUFS] = "No buffer space available";
-	error[EISCONN] = "Transport endpoint is already connected";
-	error[ENOTCONN] = "Transport endpoint is not connected";
-	error[ESHUTDOWN] = "Cannot send after transport endpoint shutdown";
-	error[ETOOMANYREFS] = "Too many references: cannot splice";
-	error[ETIMEDOUT] = "Connection timed out";
-	error[ECONNREFUSED] = "Connection refused";
-	error[EHOSTDOWN] = "Host is down";
-	error[EHOSTUNREACH] = "No route to host";
-	error[EALREADY] = "Operation already in progress";
-	error[EINPROGRESS] = "Operation now in progress";
-	error[ESTALE] = "Stale NFS file handle";
-	error[EUCLEAN] = "Structure needs cleaning";
-	error[ENOTNAM] = "Not a XENIX named type file";
-	error[ENAVAIL] = "No XENIX semaphores available";
-	error[EISNAM] = "Is a named type file";
-	error[EREMOTEIO] = "Remote I/O error";
-	error[EDQUOT] = "Quota exceeded";
-	error[ENOMEDIUM] = "No medium found";
-	error[EMEDIUMTYPE] = "Wrong medium type";
-	error[ECANCELED] = "Operation Canceled";
-	error[ENOKEY] = "Required key not available";
-	error[EKEYEXPIRED] = "Key has expired";
-	error[EKEYREVOKED] = "Key has been revoked";
-	error[EKEYREJECTED] = "Key was rejected by service";
-}
-
-func str(val int64) string {  // do it here rather than with fmt to avoid dependency
-	if val < 0 {
-		return "-" + str(-val);
-	}
-	var buf [32]byte;  // big enough for int64
-	i := len(buf)-1;
-	for val >= 10 {
-		buf[i] = byte(val%10 + '0');
-		i--;
-		val /= 10;
-	}
-	buf[i] = byte(val + '0');
-	return string(buf[i:len(buf)]);
-}
-
-func Errstr(errno int64) string {
-	if errno < 0 || errno >= int64(len(error)) {
-		return "Error " + str(errno)
-	}
-	return error[errno]
-}
diff --git a/src/lib/syscall/file_darwin.go b/src/lib/syscall/file_darwin.go
deleted file mode 100644
index 6c4eee6..0000000
--- a/src/lib/syscall/file_darwin.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2009 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.
-
-// File operations for Darwin
-
-package syscall
-
-import (
-	"syscall";
-	"unsafe";
-)
-
-const nameBufsize = 512
-
-func Open(name string, mode int64, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.Pointer(namebuf))), mode, perm);
-	return r1, err;
-}
-
-func Creat(name string, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.Pointer(namebuf))), O_CREAT|O_WRONLY|O_TRUNC, perm);
-	return r1, err;
-}
-
-func Close(fd int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_CLOSE, fd, 0, 0);
-	return r1, err;
-}
-
-func Read(fd int64, buf *byte, nbytes int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_READ, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Write(fd int64, buf *byte, nbytes int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_WRITE, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Seek(fd int64, offset int64, whence int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_LSEEK, fd, offset, whence);
-	return r1, err;
-}
-
-func Pipe(fds *[2]int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_PIPE, 0, 0, 0);
-	if r1 < 0 {
-		return r1, err;
-	}
-	fds[0] = r1;
-	fds[1] = r2;
-	return 0, 0;
-}
-
-func Stat(name string, buf *Stat_t) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_STAT64, int64(uintptr(unsafe.Pointer(namebuf))), int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Lstat(name string, buf *Stat_t) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_LSTAT64, int64(uintptr(unsafe.Pointer(namebuf))), int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Fstat(fd int64, buf *Stat_t) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FSTAT64, fd, int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Unlink(name string) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_UNLINK, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Rmdir(name string) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_RMDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Fcntl(fd, cmd, arg int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCNTL, fd, cmd, arg);
-	return r1, err
-}
-
-func Mkdir(name string, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_MKDIR, int64(uintptr(unsafe.Pointer(namebuf))), perm, 0);
-	return r1, err;
-}
-
-func Dup2(fd1, fd2 int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_DUP2, fd1, fd2, 0);
-	return r1, err;
-}
-
-func Getdirentries(fd int64, buf *byte, nbytes int64, basep *int64) (ret, errno int64) {
-	r1, r2, err := Syscall6(SYS_GETDIRENTRIES64, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes, int64(uintptr(unsafe.Pointer(basep))), 0, 0);
-	return r1, err;
-}
-
-func Chdir(dir string) (ret, errno int64) {
-	namebuf := StringBytePtr(dir);
-	r1, r2, err := Syscall(SYS_CHDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Fchdir(fd int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHDIR, fd, 0, 0);
-	return r1, err;
-}
-
-func Link(oldname, newname string) (ret, errno int64) {
-	oldbuf := StringBytePtr(oldname);
-	newbuf := StringBytePtr(newname);
-	r1, r2, err := Syscall(SYS_LINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0);
-	return r1, err;
-}
-
-func Symlink(oldname, newname string) (ret, errno int64) {
-	oldbuf := StringBytePtr(oldname);
-	newbuf := StringBytePtr(newname);
-	r1, r2, err := Syscall(SYS_SYMLINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0);
-	return r1, err;
-}
-
-func Readlink(name string, buf *byte, nbytes int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_READLINK, int64(uintptr(unsafe.Pointer(namebuf))), int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Chmod(name string, mode int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_CHMOD, int64(uintptr(unsafe.Pointer(namebuf))), mode, 0);
-	return r1, err;
-}
-
-func Fchmod(fd, mode int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHMOD, fd, mode, 0);
-	return r1, err;
-}
-
-func Chown(name string, uid, gid int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_CHOWN, int64(uintptr(unsafe.Pointer(namebuf))), uid, gid);
-	return r1, err;
-}
-
-func Lchown(name string, uid, gid int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_LCHOWN, int64(uintptr(unsafe.Pointer(namebuf))), uid, gid);
-	return r1, err;
-}
-
-func Fchown(fd, uid, gid int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHOWN, fd, uid, gid);
-	return r1, err;
-}
-
-func Truncate(name string, length int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_TRUNCATE, int64(uintptr(unsafe.Pointer(namebuf))), length, 0);
-	return r1, err;
-}
-
-func Ftruncate(fd, length int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FTRUNCATE, fd, length, 0);
-	return r1, err;
-}
-
-// The const provides a compile-time constant so clients
-// can adjust to whether there is a working Getwd and avoid
-// even linking this function into the binary.  See ../os/getwd.go.
-const ImplementsGetwd = false
-
-func Getwd() (string, int64) {
-	return "", ENOTSUP;
-}
-
diff --git a/src/lib/syscall/file_linux.go b/src/lib/syscall/file_linux.go
deleted file mode 100644
index 2f8b910..0000000
--- a/src/lib/syscall/file_linux.go
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2009 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
-
-// File operations for Linux
-
-import (
-	"syscall";
-	"unsafe";
-)
-
-const nameBufsize = 512
-
-func Open(name string, mode int64, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.Pointer(namebuf))), mode, perm);
-	return r1, err;
-}
-
-func Creat(name string, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_OPEN, int64(uintptr(unsafe.Pointer(namebuf))),  O_CREAT|O_WRONLY|O_TRUNC, perm);
-	return r1, err;
-}
-
-func Close(fd int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_CLOSE, fd, 0, 0);
-	return r1, err;
-}
-
-func Read(fd int64, buf *byte, nbytes int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_READ, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Write(fd int64, buf *byte, nbytes int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_WRITE, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Seek(fd int64, offset int64, whence int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_LSEEK, fd, offset, whence);
-	return r1, err;
-}
-
-func Pipe(fds *[2]int64) (ret, errno int64) {
-	var t [2] int32;
-	r1, r2, err := Syscall(SYS_PIPE, int64(uintptr(unsafe.Pointer(&t[0]))), 0, 0);
-	if r1 < 0 {
-		return r1, err;
-	}
-	fds[0] = int64(t[0]);
-	fds[1] = int64(t[1]);
-	return 0, 0;
-}
-
-func Stat(name string, buf *Stat_t) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_STAT, int64(uintptr(unsafe.Pointer(namebuf))), int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Lstat(name string, buf *Stat_t) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_LSTAT, int64(uintptr(unsafe.Pointer(namebuf))), int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Fstat(fd int64, buf *Stat_t) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FSTAT, fd, int64(uintptr(unsafe.Pointer(buf))), 0);
-	return r1, err;
-}
-
-func Unlink(name string) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_UNLINK, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Rmdir(name string) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_RMDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Fcntl(fd, cmd, arg int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCNTL, fd, cmd, arg);
-	return r1, err
-}
-
-func Mkdir(name string, perm int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_MKDIR, int64(uintptr(unsafe.Pointer(namebuf))), perm, 0);
-	return r1, err;
-}
-
-func Dup2(fd1, fd2 int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_DUP2, fd1, fd2, 0);
-	return r1, err;
-}
-
-func Getdents(fd int64, buf *Dirent, nbytes int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_GETDENTS64, fd, int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Chdir(dir string) (ret, errno int64) {
-	namebuf := StringBytePtr(dir);
-	r1, r2, err := Syscall(SYS_CHDIR, int64(uintptr(unsafe.Pointer(namebuf))), 0, 0);
-	return r1, err;
-}
-
-func Fchdir(fd int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHDIR, fd, 0, 0);
-	return r1, err;
-}
-
-const ImplementsGetwd = true
-
-func Getwd() (ret string, errno int64) {
-	var buf [PathMax]byte;
-	r1, r2, err := Syscall(SYS_GETCWD, int64(uintptr(unsafe.Pointer(&buf))), int64(len(buf)), 0);
-	if err != 0 {
-		return "", err;
-	}
-	// SYS_GETCWD returns the number of bytes written to buf, including the NUL.
-	if r1 < 1 || r1 > int64(len(buf)) || buf[r1-1] != 0 {
-		return "", EINVAL;
-	}
-	return string(buf[0:r1-1]), 0
-}
-
-func Link(oldpath, newpath string) (ret, errno int64) {
-	oldbuf := StringBytePtr(oldpath);
-	newbuf := StringBytePtr(newpath);
-	r1, r2, err := Syscall(SYS_LINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0);
-	return r1, err;
-}
-
-func Symlink(oldpath, newpath string) (ret, errno int64) {
-	oldbuf := StringBytePtr(oldpath);
-	newbuf := StringBytePtr(newpath);
-	r1, r2, err := Syscall(SYS_SYMLINK, int64(uintptr(unsafe.Pointer(oldbuf))), int64(uintptr(unsafe.Pointer(newbuf))), 0);
-	return r1, err;
-}
-
-func Readlink(path string, buf *byte, nbytes int64) (ret, errno int64) {
-	pathbuf := StringBytePtr(path);
-	r1, r2, err := Syscall(SYS_READLINK, int64(uintptr(unsafe.Pointer(pathbuf))), int64(uintptr(unsafe.Pointer(buf))), nbytes);
-	return r1, err;
-}
-
-func Chmod(name string, mode int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_CHMOD, int64(uintptr(unsafe.Pointer(namebuf))), mode, 0);
-	return r1, err;
-}
-
-func Fchmod(fd, mode int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHMOD, fd, mode, 0);
-	return r1, err;
-}
-
-func Chown(name string, uid, gid int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_CHOWN, int64(uintptr(unsafe.Pointer(namebuf))), uid, gid);
-	return r1, err;
-}
-
-func Lchown(name string, uid, gid int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_LCHOWN, int64(uintptr(unsafe.Pointer(namebuf))), uid, gid);
-	return r1, err;
-}
-
-func Fchown(fd, uid, gid int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FCHOWN, fd, uid, gid);
-	return r1, err;
-}
-
-func Truncate(name string, length int64) (ret, errno int64) {
-	namebuf := StringBytePtr(name);
-	r1, r2, err := Syscall(SYS_TRUNCATE, int64(uintptr(unsafe.Pointer(namebuf))), length, 0);
-	return r1, err;
-}
-
-func Ftruncate(fd, length int64) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_FTRUNCATE, fd, length, 0);
-	return r1, err;
-}
-
diff --git a/src/lib/syscall/mkdarwin b/src/lib/syscall/mkdarwin
deleted file mode 100755
index 6536ec1..0000000
--- a/src/lib/syscall/mkdarwin
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2009 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.
-
-my $command = "mkdarwin " . join(' ', @ARGV);
-
-print <<EOF;
-// Generated by mkdarwin; DO NOT EDIT.
-// $command
-
-package syscall
-
-const (
-EOF
-
-while(<>){
-	if(/^([0-9]+)\s+ALL\s+({ \S+\s+(\w+).*})/){
-		my $num = $1;
-		my $proto = $2;
-		my $name = "SYS_$3";
-		$name =~ y/a-z/A-Z/;
-
-		# There are multiple entries for nosys(), so comment them out.
-		if($name eq "SYS_NOSYS"){
-			$name = "// $name";
-		}
-
-		print "	$name = $num;  // $proto\n";
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/src/lib/syscall/mksignal b/src/lib/syscall/mksignal
deleted file mode 100755
index 4ee28a2..0000000
--- a/src/lib/syscall/mksignal
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2009 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.
-
-my $command = "mksignal ". join(' ', @ARGV);
-
-print <<EOF;
-// Generated by mksignal; DO NOT EDIT.
-// $command
-
-package syscall
-
-const(
-EOF
-
-while(<>){
-	next if /SIGSTKSZ/;
-	next if /SIGEV_/;
-	if(/^#define\s+(SIG[^_\s]\w*)\s+([0-9]+)/){
-		print "	$1 = $2;\n";
-	}
-}
-
-print <<EOF;
-)
-EOF
diff --git a/src/lib/syscall/mklinux b/src/lib/syscall/mksysnum_linux
similarity index 100%
rename from src/lib/syscall/mklinux
rename to src/lib/syscall/mksysnum_linux
diff --git a/src/lib/syscall/proc_darwin.go b/src/lib/syscall/proc_darwin.go
deleted file mode 100644
index de8d604..0000000
--- a/src/lib/syscall/proc_darwin.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 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
-
-// Process operations for Darwin
-// TODO:
-// - getrusage
-// - getrlimit, setrlimit
-
-import (
-	"syscall";
-	"unsafe";
-)
-
-func Getrusage(who int64, usage *Rusage) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_GETRUSAGE, who, int64(uintptr(unsafe.Pointer(usage))), 0);
-	return r1, err
-}
diff --git a/src/lib/syscall/proc_linux.go b/src/lib/syscall/proc_linux.go
deleted file mode 100644
index e4e3760..0000000
--- a/src/lib/syscall/proc_linux.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 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
-
-// Process operations for Linux
-// TODO:
-// - getrlimit, setrlimit
-
-import (
-	"syscall";
-	"unsafe";
-)
-
-func Getrusage(who int64, usage *Rusage) (ret, errno int64) {
-	r1, r2, err := Syscall(SYS_GETRUSAGE, who, int64(uintptr(unsafe.Pointer(usage))), 0);
-	return r1, err
-}
diff --git a/src/lib/syscall/signal_amd64_darwin.go b/src/lib/syscall/signal_amd64_darwin.go
deleted file mode 100644
index 3d96b3f..0000000
--- a/src/lib/syscall/signal_amd64_darwin.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 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.
-
-// Generated by mksignal; DO NOT EDIT.
-// mksignal /usr/include/sys/signal.h
-
-package syscall
-
-const(
-	SIGHUP = 1;
-	SIGINT = 2;
-	SIGQUIT = 3;
-	SIGILL = 4;
-	SIGTRAP = 5;
-	SIGABRT = 6;
-	SIGPOLL = 7;
-	SIGEMT = 7;
-	SIGFPE = 8;
-	SIGKILL = 9;
-	SIGBUS = 10;
-	SIGSEGV = 11;
-	SIGSYS = 12;
-	SIGPIPE = 13;
-	SIGALRM = 14;
-	SIGTERM = 15;
-	SIGURG = 16;
-	SIGSTOP = 17;
-	SIGTSTP = 18;
-	SIGCONT = 19;
-	SIGCHLD = 20;
-	SIGTTIN = 21;
-	SIGTTOU = 22;
-	SIGIO = 23;
-	SIGXCPU = 24;
-	SIGXFSZ = 25;
-	SIGVTALRM = 26;
-	SIGPROF = 27;
-	SIGWINCH = 28;
-	SIGINFO = 29;
-	SIGUSR1 = 30;
-	SIGUSR2 = 31;
-)
diff --git a/src/lib/syscall/signal_amd64_linux.go b/src/lib/syscall/signal_amd64_linux.go
deleted file mode 100644
index 500666a..0000000
--- a/src/lib/syscall/signal_amd64_linux.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 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.
-
-// Generated by mksignal; DO NOT EDIT.
-// mksignal /usr/include/asm/signal.h
-
-package syscall
-
-const(
-	SIGHUP = 1;
-	SIGINT = 2;
-	SIGQUIT = 3;
-	SIGILL = 4;
-	SIGTRAP = 5;
-	SIGABRT = 6;
-	SIGIOT = 6;
-	SIGBUS = 7;
-	SIGFPE = 8;
-	SIGKILL = 9;
-	SIGUSR1 = 10;
-	SIGSEGV = 11;
-	SIGUSR2 = 12;
-	SIGPIPE = 13;
-	SIGALRM = 14;
-	SIGTERM = 15;
-	SIGSTKFLT = 16;
-	SIGCHLD = 17;
-	SIGCONT = 18;
-	SIGSTOP = 19;
-	SIGTSTP = 20;
-	SIGTTIN = 21;
-	SIGTTOU = 22;
-	SIGURG = 23;
-	SIGXCPU = 24;
-	SIGXFSZ = 25;
-	SIGVTALRM = 26;
-	SIGPROF = 27;
-	SIGWINCH = 28;
-	SIGIO = 29;
-	SIGLOST = 29;
-	SIGPWR = 30;
-	SIGSYS = 31;
-	SIGUNUSED = 31;
-	SIGRTMIN = 32;
-)
diff --git a/src/lib/syscall/socket_darwin.go b/src/lib/syscall/socket_darwin.go
deleted file mode 100644
index 59ca503..0000000
--- a/src/lib/syscall/socket_darwin.go
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2009 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.
-
-// Low-level socket interface.
-// Only for implementing net package.
-// DO NOT USE DIRECTLY.
-
-package syscall
-import (
-	"syscall";
-	"unsafe";
-)
-
-// For testing: clients can set this flag to force
-// creation of IPv6 sockets to return EAFNOSUPPORT.
-var SocketDisableIPv6 bool
-
-func Socket(domain, proto, typ int64) (ret int64, err int64) {
-	if domain == AF_INET6 && SocketDisableIPv6 {
-		return -1, EAFNOSUPPORT
-	}
-	r1, r2, e := Syscall(SYS_SOCKET, domain, proto, typ);
-	return r1, e
-}
-
-func Connect(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_CONNECT, fd, int64(uintptr(unsafe.Pointer(sa))), int64(sa.Len));
-	return r1, e
-}
-
-func Bind(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_BIND, fd, int64(uintptr(unsafe.Pointer(sa))), int64(sa.Len));
-	return r1, e
-}
-
-func Listen(fd, n int64) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_LISTEN, fd, n, 0);
-	return r1, e
-}
-
-func Accept(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	var n int32 = SizeofSockaddr;
-	r1, r2, e := Syscall(SYS_ACCEPT, fd, int64(uintptr(unsafe.Pointer(sa))), int64(uintptr(unsafe.Pointer(&n))));
-	return r1, e
-}
-
-func Setsockopt(fd, level, opt, valueptr, length int64) (ret int64, err int64) {
-	if fd < 0 {
-		return -1, EINVAL
-	}
-	r1, r2, e := Syscall6(SYS_SETSOCKOPT, fd, level, opt, valueptr, length, 0);
-	return r1, e
-}
-
-func Setsockopt_int(fd, level, opt int64, value int) int64 {
-	var n int32 = int32(opt);
-	r1, e := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&n))), 4);
-	return e
-}
-
-func Setsockopt_tv(fd, level, opt, nsec int64) int64 {
-	var tv Timeval;
-	nsec += 999;
-	tv.Sec = int64(nsec/1000000000);
-	tv.Usec = uint32(nsec%1000000000);
-	r1, e := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&tv))), 4);
-	return e
-}
-
-func Setsockopt_linger(fd, level, opt int64, sec int) int64 {
-	var l Linger;
-	if sec >= 0 {
-		l.Yes = 1;
-		l.Sec = int32(sec);
-	} else {
-		l.Yes = 0;
-		l.Sec = 0;
-	}
-	r1, err := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&l))), 8);
-	return err
-}
-
-/*
-func Getsockopt(fd, level, opt, valueptr, lenptr int64) (ret int64, errno int64) {
-	r1, r2, err := Syscall6(SYS_GETSOCKOPT, fd, level, opt, valueptr, lenptr, 0);
-	return r1, err;
-}
-*/
-
-func Kqueue() (ret int64, errno int64) {
-	r1, r2, err := Syscall(SYS_KQUEUE, 0, 0, 0);
-	return r1, err
-}
-
-func Kevent(kq int64, changes, events []Kevent_t, timeout *Timespec) (ret int64, errno int64) {
-	var nchange, changeptr, nevent, eventptr int64;
-	nchange = 0;
-	changeptr = 0;
-	nevent = 0;
-	eventptr = 0;
-	if len(changes) > 0 {
-		changeptr = int64(uintptr(unsafe.Pointer(&changes[0])));
-		nchange = int64(len(changes))
-	}
-	if len(events) > 0 {
-		eventptr = int64(uintptr(unsafe.Pointer(&events[0])));
-		nevent = int64(len(events))
-	}
-	r1, r2, err := Syscall6(SYS_KEVENT, kq, changeptr, nchange,
-		eventptr, nevent, int64(uintptr(unsafe.Pointer(timeout))));
-	return r1, err
-}
-
diff --git a/src/lib/syscall/socket_linux.go b/src/lib/syscall/socket_linux.go
deleted file mode 100644
index f08fcca..0000000
--- a/src/lib/syscall/socket_linux.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2009 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.
-
-// Low-level socket interface.
-// Only for implementing net package.
-// DO NOT USE DIRECTLY.
-
-package syscall
-import (
-	"syscall";
-	"unsafe";
-)
-
-// For testing: clients can set this flag to force
-// creation of IPv6 sockets to return EAFNOSUPPORT.
-var SocketDisableIPv6 bool
-
-func saLen(s *Sockaddr) int64 {
-	switch s.Family {
-	case AF_UNIX:
-		sa := (*SockaddrUnix)(unsafe.Pointer(s));
-		return sa.Length;
-	case AF_INET:
-		return SizeofSockaddrInet4;
-	case AF_INET6:
-		return SizeofSockaddrInet6
-	}
-	return 0
-}
-
-func Socket(domain, proto, typ int64) (ret int64, err int64) {
-	if domain == AF_INET6 && SocketDisableIPv6 {
-		return -1, EAFNOSUPPORT
-	}
-	r1, r2, e := Syscall(SYS_SOCKET, domain, proto, typ);
-	return r1, e
-}
-
-func Connect(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_CONNECT, fd, int64(uintptr(unsafe.Pointer(sa))), saLen(sa));
-	return r1, e
-}
-
-func Bind(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_BIND, fd, int64(uintptr(unsafe.Pointer(sa))), saLen(sa));
-	return r1, e
-}
-
-func Listen(fd, n int64) (ret int64, err int64) {
-	r1, r2, e := Syscall(SYS_LISTEN, fd, n, 0);
-	return r1, e
-}
-
-func Accept(fd int64, sa *Sockaddr) (ret int64, err int64) {
-	var n int32 = SizeofSockaddr;
-	r1, r2, e := Syscall(SYS_ACCEPT, fd, int64(uintptr(unsafe.Pointer(sa))), int64(uintptr(unsafe.Pointer(&n))));
-	return r1, e
-}
-
-func Setsockopt(fd, level, opt, valueptr, length int64) (ret int64, err int64) {
-	if fd < 0 {
-		return -1, EINVAL
-	}
-	r1, r2, e := Syscall6(SYS_SETSOCKOPT, fd, level, opt, valueptr, length, 0);
-	return r1, e
-}
-
-func Setsockopt_int(fd, level, opt int64, value int) int64 {
-	n := int32(opt);
-	r1, e := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&n))), 4);
-	return e
-}
-
-func Setsockopt_tv(fd, level, opt, nsec int64) int64 {
-	var tv Timeval;
-	nsec += 999;
-	tv.Sec = int64(nsec/1000000000);
-	tv.Usec = uint64(nsec%1000000000);
-	r1, e := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&tv))), 4);
-	return e
-}
-
-func Setsockopt_linger(fd, level, opt int64, sec int) int64 {
-	var l Linger;
-	if sec >= 0 {
-		l.Yes = 1;
-		l.Sec = int32(sec)
-	} else {
-		l.Yes = 0;
-		l.Sec = 0
-	}
-	r1, err := Setsockopt(fd, level, opt, int64(uintptr(unsafe.Pointer(&l))), 8);
-	return err
-}
-
-/*
-func getsockopt(fd, level, opt, valueptr, lenptr int64) (ret int64, errno int64) {
-	r1, r2, err := Syscall6(GETSOCKOPT, fd, level, opt, valueptr, lenptr, 0);
-	return r1, err;
-}
-*/
-
-func Epoll_create(size int64) (ret int64, errno int64) {
-	r1, r2, err := syscall.Syscall(SYS_EPOLL_CREATE, size, 0, 0);
-	return r1, err
-}
-
-func Epoll_ctl(epfd, op, fd int64, ev *EpollEvent) int64 {
-	r1, r2, err := syscall.Syscall6(SYS_EPOLL_CTL, epfd, op, fd, int64(uintptr(unsafe.Pointer(ev))), 0, 0);
-	return err
-}
-
-func Epoll_wait(epfd int64, ev []EpollEvent, msec int64) (ret int64, err int64) {
-	var evptr, nev int64;
-	if ev != nil && len(ev) > 0 {
-		nev = int64(len(ev));
-		evptr = int64(uintptr(unsafe.Pointer(&ev[0])))
-	}
-	r1, r2, err1 := syscall.Syscall6(SYS_EPOLL_WAIT, epfd, evptr, nev, msec, 0, 0);
-	return r1, err1
-}
-
diff --git a/src/lib/syscall/time_amd64_darwin.go b/src/lib/syscall/time_amd64_darwin.go
deleted file mode 100644
index 8253171..0000000
--- a/src/lib/syscall/time_amd64_darwin.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2009 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 syscall "syscall"
-
-func Gettimeofday() (sec, nsec, errno int64) {
-	// The "1" in the call is the timeval pointer, which must be
-	// non-zero but is otherwise unused.  The results
-	// are returned in r1, r2.
-	r1, r2, err := Syscall(SYS_GETTIMEOFDAY, 1, 0, 0);
-	if err != 0 {
-		return 0, 0, err
-	}
-	return r1, r2*1000, 0
-}
-
-func Nstotimeval(ns int64, tv *Timeval) {
-	ns += 999;	// round up
-	tv.Sec = int64(ns/1000000000);
-	tv.Usec = uint32(ns%1000000000 / 1000);
-}
diff --git a/src/lib/syscall/time_amd64_linux.go b/src/lib/syscall/time_amd64_linux.go
deleted file mode 100644
index 67fc512..0000000
--- a/src/lib/syscall/time_amd64_linux.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 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 (
-	"syscall";
-	"unsafe";
-)
-
-func Gettimeofday() (sec, nsec, errno int64) {
-	var tv Timeval;
-	r1, r2, e := Syscall(SYS_GETTIMEOFDAY, int64(uintptr(unsafe.Pointer(&tv))), 0, 0);
-	if e != 0 {
-		return 0, 0, e
-	}
-	return int64(tv.Sec), int64(tv.Usec*1000), 0
-}
-
-func Nstotimeval(ns int64, tv *Timeval) {
-	ns += 999;	// round up
-	tv.Sec = int64(ns/1000000000);
-	tv.Usec = uint64(ns%1000000000 / 1000);
-}
diff --git a/src/lib/syscall/types_amd64_darwin.go b/src/lib/syscall/types_amd64_darwin.go
deleted file mode 100644
index 69a9a85..0000000
--- a/src/lib/syscall/types_amd64_darwin.go
+++ /dev/null
@@ -1,317 +0,0 @@
-// Copyright 2009 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.
-
-// Types and defined constants.
-// Should be automatically generated, but is not.
-
-package syscall
-
-import "syscall"
-
-const OS = "darwin"
-
-// Time
-
-type Timespec struct {
-	Sec	int64;
-	Nsec	uint64;
-}
-
-type Timeval struct {
-	Sec	int64;
-	Usec	uint32;
-}
-
-
-// Processes
-
-type Rusage struct {
-	Utime	Timeval;
-	Stime	Timeval;
-	Maxrss	int64;
-	Ixrss	int64;
-	Idrss	int64;
-	Isrss	int64;
-	Minflt	int64;
-	Majflt	int64;
-	Nswap	int64;
-	Inblock	int64;
-	Oublock	int64;
-	Msgsnd	int64;
-	Msgrcv	int64;
-	Nsignals	int64;
-	Nvcsw	int64;
-	Nivcsw	int64;
-}
-
-
-// Files
-
-const (
-	O_RDONLY = 0x0;
-	O_WRONLY = 0x1;
-	O_RDWR = 0x2;
-	O_APPEND = 0x8;
-	O_ASYNC = 0x40;
-	O_CREAT = 0x200;
-	O_NOCTTY = 0x20000;
-	O_NONBLOCK = 0x4;
-	O_NDELAY = O_NONBLOCK;
-	O_SYNC = 0x80;
-	O_TRUNC = 0x400;
-	O_CLOEXEC = 0;  // not supported
-
-	F_GETFD = 1;
-	F_SETFD = 2;
-
-	F_GETFL = 3;
-	F_SETFL = 4;
-
-	FD_CLOEXEC = 1;
-
-	NAME_MAX = 255;
-)
-
-// Dir.Mode bits
-const (
-	S_IFMT = 0170000;	      /* type of file */
-		S_IFIFO  = 0010000;  /* named pipe (fifo) */
-		S_IFCHR  = 0020000;  /* character special */
-		S_IFDIR  = 0040000;  /* directory */
-		S_IFBLK  = 0060000;  /* block special */
-		S_IFREG  = 0100000;  /* regular */
-		S_IFLNK  = 0120000;  /* symbolic link */
-		S_IFSOCK = 0140000;  /* socket */
-		S_IFWHT  = 0160000;  /* whiteout */
-	S_ISUID = 0004000;  /* set user id on execution */
-	S_ISGID = 0002000;  /* set group id on execution */
-	S_ISVTX = 0001000;  /* save swapped text even after use */
-	S_IRUSR = 0000400;  /* read permission, owner */
-	S_IWUSR = 0000200;  /* write permission, owner */
-	S_IXUSR = 0000100;  /* execute/search permission, owner */
-)
-
-type Stat_t struct {
-	Dev	uint32;
-	Mode	uint16;
-	Nlink	uint16;
-	Ino	uint64;
-	Uid	uint32;
-	Gid	uint32;
-	Rdev	uint32;
-	Pad1	uint32;
-	Atime	Timespec;
-	Mtime	Timespec;
-	Ctime	Timespec;
-	Birthtime	Timespec;
-	Size	uint64;
-	Blocks	uint64;
-	Blksize	uint32;
-	Flags	uint32;
-	Gen	uint32;
-	Lspare	uint32;
-	Qspare	[2]uint64;
-}
-
-type Dirent struct {
-	Ino	uint64;
-	Off	uint64;
-	Reclen	uint16;
-	Namlen	uint16;
-	Type	uint8;
-	Name	[NAME_MAX+1]byte;
-}
-
-// Sockets
-
-const (
-	AF_UNIX = 1;
-	AF_INET = 2;
-	AF_DATAKIT = 9;
-	AF_INET6 = 30;
-
-	SOCK_STREAM = 1;
-	SOCK_DGRAM = 2;
-	SOCK_RAW = 3;
-	SOCK_RDM = 4;
-	SOCK_SEQPACKET = 5;
-
-	SOL_SOCKET = 0xffff;
-
-	SO_REUSEADDR = 0x0004;
-	SO_KEEPALIVE = 0x0008;
-	SO_DONTROUTE = 0x0010;
-	SO_BROADCAST = 0x0020;
-	SO_USELOOPBACK = 0x0040;
-	SO_LINGER = 0x1080;
-	SO_REUSEPORT = 0x0200;
-	SO_SNDBUF = 0x1001;
-	SO_RCVBUF = 0x1002;
-	SO_SNDTIMEO = 0x1005;
-	SO_RCVTIMEO = 0x1006;
-	SO_NOSIGPIPE = 0x1022;
-
-	IPPROTO_TCP = 6;
-	IPPROTO_UDP = 17;
-
-	TCP_NODELAY = 0x01;
-
-	SOMAXCONN = 128;
-)
-
-type SockaddrUnix struct {
-	Len	byte;
-	Family	byte;
-	Path	[104]byte
-}
-const SizeofSockaddrUnix = 106
-
-type SockaddrInet4 struct {
-	Len	byte;
-	Family	byte;
-	Port	[2]byte;
-	Addr	[4]byte;
-	Zero	[8]byte
-}
-const SizeofSockaddrInet4 = 16
-
-type SockaddrInet6 struct {
-	Len	byte;
-	Family	byte;
-	Port	[2]byte;
-	Flowinfo	[4]byte;
-	Addr	[16]byte;
-	Scopeid	[4]byte;
-}
-const SizeofSockaddrInet6 = 28
-
-type Sockaddr struct {
-	Len	byte;
-	Family	byte;
-	Opaque	[126]byte
-}
-const SizeofSockaddr = 128
-
-type Linger struct {
-	Yes int32;
-	Sec int32;
-}
-
-
-// Events (kqueue, kevent)
-
-const (
-	// filters
-	EVFILT_READ = -1;
-	EVFILT_WRITE = -2;
-	EVFILT_AIO = -3;
-	EVFILT_VNODE = -4;
-	EVFILT_PROC = -5;
-	EVFILT_SIGNAL = -6;
-	EVFILT_TIMER = -7;
-	EVFILT_MACHPORT = -8;
-	EVFILT_FS = -9;
-
-	EVFILT_SYSCOUNT = 9;
-
-	// actions
-	EV_ADD = 0x0001;
-	EV_DELETE = 0x0002;
-	EV_DISABLE = 0x0008;
-	EV_RECEIPT = 0x0040;
-
-	// flags
-	EV_ONESHOT = 0x0010;
-	EV_CLEAR = 0x0020;
-//	EV_RECEIPT = 0x40;
-	EV_SYSFLAGS = 0xF000;
-	EV_FLAG0 = 0x1000;
-	EV_FLAG1 = 0x2000;
-
-	// returned values
-	EV_EOF = 0x8000;
-	EV_ERROR = 0x4000
-)
-
-type Kevent_t struct {
-	Ident int64;
-	Filter int16;
-	Flags uint16;
-	Fflags uint32;
-	Data int64;
-	Udata int64;
-}
-
-
-// Wait status.
-// See /usr/include/bits/waitstatus.h
-
-const (
-	WNOHANG = 1;
-	WUNTRACED = 2;
-	WEXITED = 4;
-	WSTOPPED = 8;
-	WCONTINUED = 0x10;
-	WNOWAIT = 0x20;
-)
-
-type WaitStatus uint32;
-
-// Wait status is 7 bits at bottom, either 0 (exited),
-// 0x7F (stopped), or a signal number that caused an exit.
-// The 0x80 bit is whether there was a core dump.
-// An extra number (exit code, signal causing a stop)
-// is in the high bits.
-
-const (
-	mask = 0x7F;
-	core = 0x80;
-	shift = 8;
-
-	exited = 0;
-	stopped = 0x7F;
-)
-
-func (w WaitStatus) Exited() bool {
-	return w&mask == exited;
-}
-
-func (w WaitStatus) ExitStatus() int {
-	if w&mask != exited {
-		return -1;
-	}
-	return int(w >> shift);
-}
-
-func (w WaitStatus) Signaled() bool {
-	return w&mask != stopped && w&mask != 0;
-}
-
-func (w WaitStatus) Signal() int {
-	sig := int(w & mask);
-	if sig == stopped || sig == 0 {
-		return -1;
-	}
-	return sig;
-}
-
-func (w WaitStatus) CoreDump() bool {
-	return w.Signaled() && w&core != 0;
-}
-
-func (w WaitStatus) Stopped() bool {
-	return w&mask == stopped && w>>shift != SIGSTOP;
-}
-
-func (w WaitStatus) Continued() bool {
-	return w&mask == stopped && w>>shift == SIGSTOP;
-}
-
-func (w WaitStatus) StopSignal() int {
-	if !w.Stopped() {
-		return -1;
-	}
-	return int(w >> shift) & 0xFF;
-}
-
diff --git a/src/lib/syscall/types_amd64_linux.go b/src/lib/syscall/types_amd64_linux.go
deleted file mode 100644
index 218cf76..0000000
--- a/src/lib/syscall/types_amd64_linux.go
+++ /dev/null
@@ -1,314 +0,0 @@
-// Copyright 2009 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.
-
-// Types and defined constants.
-// Should be automatically generated, but is not.
-
-package syscall
-
-import "syscall"
-
-const OS = "linux"
-
-const PathMax = 4096
-
-// Time
-
-type Timespec struct {
-	Sec	int64;
-	Nsec	uint64;
-}
-
-type Timeval struct {
-	Sec	int64;
-	Usec	uint64;
-}
-
-
-// Processes
-
-const (
-	RUSAGE_SELF = 0;
-	RUSAGE_CHILDREN = -1;
-)
-
-type Rusage struct {
-	Utime	Timeval;
-	Stime	Timeval;
-	Maxrss	int64;
-	Ixrss	int64;
-	Idrss	int64;
-	Isrss	int64;
-	Minflt	int64;
-	Majflt	int64;
-	Nswap	int64;
-	Inblock	int64;
-	Oublock	int64;
-	Msgsnd	int64;
-	Msgrcv	int64;
-	Nsignals	int64;
-	Nvcsw	int64;
-	Nivcsw	int64;
-}
-
-
-// Files
-
-const (
-	O_RDONLY = 0x0;
-	O_WRONLY = 0x1;
-	O_RDWR = 0x2;
-	O_APPEND = 0x400;
-	O_ASYNC = 0x2000;
-	O_CREAT = 0x40;
-	O_NOCTTY = 0x100;
-	O_NONBLOCK = 0x800;
-	O_NDELAY = O_NONBLOCK;
-	O_SYNC = 0x1000;
-	O_TRUNC = 0x200;
-	O_CLOEXEC = 0x80000;
-
-	F_GETFD = 1;
-	F_SETFD = 2;
-
-	F_GETFL = 3;
-	F_SETFL = 4;
-
-	FD_CLOEXEC = 1;
-
-	NAME_MAX = 255;
-)
-
-// Dir.Mode bits
-const (
-	S_IFMT = 0170000;	      /* type of file */
-		S_IFIFO  = 0010000;  /* named pipe (fifo) */
-		S_IFCHR  = 0020000;  /* character special */
-		S_IFDIR  = 0040000;  /* directory */
-		S_IFBLK  = 0060000;  /* block special */
-		S_IFREG  = 0100000;  /* regular */
-		S_IFLNK  = 0120000;  /* symbolic link */
-		S_IFSOCK = 0140000;  /* socket */
-	S_ISUID = 0004000;  /* set user id on execution */
-	S_ISGID = 0002000;  /* set group id on execution */
-	S_ISVTX = 0001000;  /* save swapped text even after use */
-	S_IRUSR = 0000400;  /* read permission, owner */
-	S_IWUSR = 0000200;  /* write permission, owner */
-	S_IXUSR = 0000100;  /* execute/search permission, owner */
-)
-
-type Stat_t struct {
-	Dev	uint64;
-	Ino	uint64;
-	Nlink	uint64;
-	Mode	uint32;
-	Uid	uint32;
-	Gid	uint32;
-	_pad0	uint32;
-	Rdev	uint64;
-	Size	int64;
-	Blksize	int64;
-	Blocks	int64;
-	Atime	Timespec;
-	Mtime	Timespec;
-	Ctime	Timespec;
-	_unused	[3]int64
-}
-
-type Dirent struct {
-	Ino	uint64;
-	Off	uint64;
-	Reclen	uint16;
-	Type	uint8;
-	Name	[NAME_MAX+1]byte;
-}
-
-// Sockets
-
-const (
-	AF_UNIX = 1;
-	AF_INET = 2;
-	AF_INET6 = 10;
-
-	SOCK_STREAM = 1;
-	SOCK_DGRAM = 2;
-	SOCK_RAW = 3;
-	SOCK_RDM = 4;
-	SOCK_SEQPACKET = 5;
-
-	SOL_SOCKET = 1;
-
-	SO_DEBUG = 1;
-	SO_REUSEADDR = 2;
-	SO_TYPE = 3;
-	SO_ERROR = 4;
-	SO_DONTROUTE = 5;
-	SO_BROADCAST = 6;
-	SO_SNDBUF = 7;
-	SO_RCVBUF = 8;
-	SO_SNDBUFFORCE = 32;
-	SO_RCVBUFFORCE = 33;
-	SO_KEEPALIVE = 9;
-	SO_OOBINLINE = 10;
-	SO_NO_CHECK = 11;
-	SO_PRIORITY = 12;
-	SO_LINGER = 13;
-	SO_BSDCOMPAT = 14;
-	SO_PASSCRED = 16;
-	SO_PEERCRED = 17;
-	SO_RCVLOWAT = 18;
-	SO_SNDLOWAT = 19;
-	SO_RCVTIMEO = 20;
-	SO_SNDTIMEO = 21;
-	SO_BINDTODEVICE = 25;
-
-	IPPROTO_TCP = 6;
-	IPPROTO_UDP = 17;
-
-	TCP_NODELAY = 0x01;
-
-	SOMAXCONN = 128;
-)
-
-type SockaddrUnix struct {
-	Family	uint16;
-	Path	[108]byte;
-	Length	int64;	// Not part of the kernel structure; used internally
-}
-const SizeofSockaddrUnix = 110
-
-type SockaddrInet4 struct {
-	Family	uint16;
-	Port	[2]byte;
-	Addr	[4]byte;
-	Zero	[8]byte
-}
-const SizeofSockaddrInet4 = 16
-
-type SockaddrInet6 struct {
-	Family	uint16;
-	Port	[2]byte;
-	Flowinfo	[4]byte;
-	Addr	[16]byte;
-	Scopeid	[4]byte;
-}
-const SizeofSockaddrInet6 = 28
-
-type Sockaddr struct {
-	Family	uint16;
-	Opaque	[126]byte
-}
-const SizeofSockaddr = 128
-
-type Linger struct {
-	Yes int32;
-	Sec int32;
-}
-
-
-// Events (epoll)
-
-const (
-	// EpollEvent.events
-	EPOLLIN = 0x1;
-	EPOLLOUT = 0x4;
-	EPOLLRDHUP = 0x2000;
-	EPOLLPRI = 0x2;
-	EPOLLERR = 0x8;
-	EPOLLET = 0x80000000;
-	EPOLLONESHOT = 0x40000000;
-
-	// op
-	EPOLL_CTL_ADD = 0x1;
-	EPOLL_CTL_MOD = 0x3;
-	EPOLL_CTL_DEL = 0x2;
-)
-
-type EpollEvent struct {
-	Events uint32;
-	Fd int32;
-	Pad int32;
-}
-
-
-// Wait status.
-// See /usr/include/bits/waitstatus.h
-
-const (
-	WNOHANG = 1;
-	WUNTRACED = 2;
-	WSTOPPED = 2;	// same as WUNTRACED
-	WEXITED = 4;
-	WCONTINUED = 8;
-	WNOWAIT = 0x01000000;
-	WNOTHREAD = 0x20000000;
-	WALL = 0x40000000;
-	WCLONE = 0x80000000;
-)
-
-type WaitStatus uint32;
-
-// Wait status is 7 bits at bottom, either 0 (exited),
-// 0x7F (stopped), or a signal number that caused an exit.
-// The 0x80 bit is whether there was a core dump.
-// An extra number (exit code, signal causing a stop)
-// is in the high bits.  At least that's the idea.
-// There are various irregularities.  For example, the
-// "continued" status is 0xFFFF, distinguishing itself
-// from stopped via the core dump bit.
-
-const (
-	mask = 0x7F;
-	core = 0x80;
-	exited = 0x00;
-	stopped = 0x7F;
-	shift = 8;
-
-	// types_amd64_darwin.go refers to SIGSTOP.
-	// do the same here so the dependencies are
-	// the same on Linux as on Darwin.
-	__unused = SIGSTOP;
-)
-
-func (w WaitStatus) Exited() bool {
-	return w&mask == exited;
-}
-
-func (w WaitStatus) Signaled() bool {
-	return w&mask != stopped && w&mask != exited;
-}
-
-func (w WaitStatus) Stopped() bool {
-	return w&0xFF == stopped;
-}
-
-func (w WaitStatus) Continued() bool {
-	return w == 0xFFFF;
-}
-
-func (w WaitStatus) CoreDump() bool {
-	return w.Signaled() && w&core != 0;
-}
-
-func (w WaitStatus) ExitStatus() int {
-	if !w.Exited() {
-		return -1;
-	}
-	return int(w >> shift) & 0xFF;
-}
-
-func (w WaitStatus) Signal() int {
-	if !w.Signaled() {
-		return -1;
-	}
-	return int(w & mask);
-}
-
-func (w WaitStatus) StopSignal() int {
-	if !w.Stopped() {
-		return -1;
-	}
-	return int(w >> shift) & 0xFF;
-}
-
diff --git a/src/lib/syscall/zerrors_darwin_amd64.go b/src/lib/syscall/zerrors_darwin_amd64.go
new file mode 100644
index 0000000..bc2d176
--- /dev/null
+++ b/src/lib/syscall/zerrors_darwin_amd64.go
@@ -0,0 +1,260 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	EMULTIHOP = 0x5f;
+	EAFNOSUPPORT = 0x2f;
+	EACCES = 0xd;
+	EDESTADDRREQ = 0x27;
+	EILSEQ = 0x5c;
+	ESPIPE = 0x1d;
+	EMLINK = 0x1f;
+	EPROGUNAVAIL = 0x4a;
+	ENOTTY = 0x19;
+	EBADF = 0x9;
+	ERANGE = 0x22;
+	ECANCELED = 0x59;
+	ETXTBSY = 0x1a;
+	ENOMEM = 0xc;
+	EINPROGRESS = 0x24;
+	ENOTEMPTY = 0x42;
+	ENOTBLK = 0xf;
+	EPROTOTYPE = 0x29;
+	ENOMSG = 0x5b;
+	ERPCMISMATCH = 0x49;
+	ENOTDIR = 0x14;
+	EALREADY = 0x25;
+	ETIMEDOUT = 0x3c;
+	ENEEDAUTH = 0x51;
+	ENODATA = 0x60;
+	EINTR = 0x4;
+	ENOLINK = 0x61;
+	EPERM = 0x1;
+	ENETDOWN = 0x32;
+	ESTALE = 0x46;
+	ENOTSOCK = 0x26;
+	ENOSR = 0x62;
+	EAUTH = 0x50;
+	ECHILD = 0xa;
+	EPIPE = 0x20;
+	ENOATTR = 0x5d;
+	EBADMSG = 0x5e;
+	EREMOTE = 0x47;
+	ETOOMANYREFS = 0x3b;
+	EPFNOSUPPORT = 0x2e;
+	EPROCUNAVAIL = 0x4c;
+	EADDRINUSE = 0x30;
+	ENETRESET = 0x34;
+	EISDIR = 0x15;
+	EIDRM = 0x5a;
+	EDEVERR = 0x53;
+	EINVAL = 0x16;
+	ESHUTDOWN = 0x3a;
+	EPWROFF = 0x52;
+	EOVERFLOW = 0x54;
+	EBUSY = 0x10;
+	EPROCLIM = 0x43;
+	EPROTO = 0x64;
+	ENODEV = 0x13;
+	EROFS = 0x1e;
+	E2BIG = 0x7;
+	EDEADLK = 0xb;
+	ECONNRESET = 0x36;
+	EBADMACHO = 0x58;
+	ENXIO = 0x6;
+	EBADRPC = 0x48;
+	ENAMETOOLONG = 0x3f;
+	ELAST = 0x67;
+	ESOCKTNOSUPPORT = 0x2c;
+	EADDRNOTAVAIL = 0x31;
+	ETIME = 0x65;
+	EPROTONOSUPPORT = 0x2b;
+	EIO = 0x5;
+	ENETUNREACH = 0x33;
+	EXDEV = 0x12;
+	EDQUOT = 0x45;
+	ENOSPC = 0x1c;
+	ENOEXEC = 0x8;
+	EMSGSIZE = 0x28;
+	EFTYPE = 0x4f;
+	EDOM = 0x21;
+	ENOSTR = 0x63;
+	EFBIG = 0x1b;
+	ESRCH = 0x3;
+	EHOSTDOWN = 0x40;
+	ENOLCK = 0x4d;
+	ENFILE = 0x17;
+	ENOSYS = 0x4e;
+	EBADARCH = 0x56;
+	ENOTCONN = 0x39;
+	ENOTSUP = 0x2d;
+	ECONNABORTED = 0x35;
+	EISCONN = 0x38;
+	ESHLIBVERS = 0x57;
+	EUSERS = 0x44;
+	ENOPROTOOPT = 0x2a;
+	EMFILE = 0x18;
+	ELOOP = 0x3e;
+	ENOBUFS = 0x37;
+	EFAULT = 0xe;
+	EWOULDBLOCK = 0x23;
+	EBADEXEC = 0x55;
+	ENOPOLICY = 0x67;
+	ECONNREFUSED = 0x3d;
+	EAGAIN = 0x23;
+	EEXIST = 0x11;
+	EPROGMISMATCH = 0x4b;
+	ENOENT = 0x2;
+	EHOSTUNREACH = 0x41;
+	EOPNOTSUPP = 0x66;
+	SIGBUS = 0xa;
+	SIGTTIN = 0x15;
+	SIGPROF = 0x1b;
+	SIGFPE = 0x8;
+	SIGHUP = 0x1;
+	SIGTTOU = 0x16;
+	SIGUSR1 = 0x1e;
+	SIGURG = 0x10;
+	SIGQUIT = 0x3;
+	SIGIO = 0x17;
+	SIGABRT = 0x6;
+	SIGINFO = 0x1d;
+	SIGUSR2 = 0x1f;
+	SIGTRAP = 0x5;
+	SIGVTALRM = 0x1a;
+	SIGSEGV = 0xb;
+	SIGCONT = 0x13;
+	SIGPIPE = 0xd;
+	SIGXFSZ = 0x19;
+	SIGCHLD = 0x14;
+	SIGSYS = 0xc;
+	SIGSTOP = 0x11;
+	SIGALRM = 0xe;
+	SIGTSTP = 0x12;
+	SIGEMT = 0x7;
+	SIGKILL = 0x9;
+	SIGXCPU = 0x18;
+	SIGILL = 0x4;
+	SIGINT = 0x2;
+	SIGIOT = 0x6;
+	SIGTERM = 0xf;
+	SIGWINCH = 0x1c;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+	95: "EMULTIHOP (Reserved)",
+	47: "address family not supported by protocol family",
+	13: "permission denied",
+	39: "destination address required",
+	92: "illegal byte sequence",
+	29: "illegal seek",
+	31: "too many links",
+	74: "RPC prog. not avail",
+	25: "inappropriate ioctl for device",
+	9: "bad file descriptor",
+	34: "result too large",
+	89: "operation canceled",
+	26: "text file busy",
+	12: "cannot allocate memory",
+	36: "operation now in progress",
+	66: "directory not empty",
+	15: "block device required",
+	41: "protocol wrong type for socket",
+	91: "no message of desired type",
+	73: "RPC version wrong",
+	20: "not a directory",
+	37: "operation already in progress",
+	60: "operation timed out",
+	81: "need authenticator",
+	96: "no message available on STREAM",
+	4: "interrupted system call",
+	97: "ENOLINK (Reserved)",
+	1: "operation not permitted",
+	50: "network is down",
+	70: "stale NFS file handle",
+	38: "socket operation on non-socket",
+	98: "no STREAM resources",
+	80: "authentication error",
+	10: "no child processes",
+	32: "broken pipe",
+	93: "attribute not found",
+	94: "bad message",
+	71: "too many levels of remote in path",
+	59: "too many references: can't splice",
+	46: "protocol family not supported",
+	76: "bad procedure for program",
+	48: "address already in use",
+	52: "network dropped connection on reset",
+	21: "is a directory",
+	90: "identifier removed",
+	83: "device error",
+	22: "invalid argument",
+	58: "can't send after socket shutdown",
+	82: "device power is off",
+	84: "value too large to be stored in data type",
+	16: "resource busy",
+	67: "too many processes",
+	100: "protocol error",
+	19: "operation not supported by device",
+	30: "read-only file system",
+	7: "argument list too long",
+	11: "resource deadlock avoided",
+	54: "connection reset by peer",
+	88: "malformed Mach-o file",
+	6: "device not configured",
+	72: "RPC struct is bad",
+	63: "file name too long",
+	103: "policy not found",
+	44: "socket type not supported",
+	49: "can't assign requested address",
+	101: "STREAM ioctl timeout",
+	43: "protocol not supported",
+	5: "input/output error",
+	51: "network is unreachable",
+	18: "cross-device link",
+	69: "disc quota exceeded",
+	28: "no space left on device",
+	8: "exec format error",
+	40: "message too long",
+	79: "inappropriate file type or format",
+	33: "numerical argument out of domain",
+	99: "not a STREAM",
+	27: "file too large",
+	3: "no such process",
+	64: "host is down",
+	77: "no locks available",
+	23: "too many open files in system",
+	78: "function not implemented",
+	86: "bad CPU type in executable",
+	57: "socket is not connected",
+	45: "operation not supported",
+	53: "software caused connection abort",
+	56: "socket is already connected",
+	87: "shared library version mismatch",
+	68: "too many users",
+	42: "protocol not available",
+	24: "too many open files",
+	62: "too many levels of symbolic links",
+	55: "no buffer space available",
+	14: "bad address",
+	35: "resource temporarily unavailable",
+	85: "bad executable (or shared library)",
+	61: "connection refused",
+	17: "file exists",
+	75: "program version wrong",
+	2: "no such file or directory",
+	65: "no route to host",
+	102: "operation not supported on socket",
+}
+
diff --git a/src/lib/syscall/zerrors_linux_amd64.go b/src/lib/syscall/zerrors_linux_amd64.go
new file mode 100644
index 0000000..f1e7e01
--- /dev/null
+++ b/src/lib/syscall/zerrors_linux_amd64.go
@@ -0,0 +1,316 @@
+// mkerrors
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -gsyscall _errors.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	EMULTIHOP = 0x48;
+	EUNATCH = 0x31;
+	EAFNOSUPPORT = 0x61;
+	EREMCHG = 0x4e;
+	EACCES = 0xd;
+	EL3RST = 0x2f;
+	EDESTADDRREQ = 0x59;
+	EILSEQ = 0x54;
+	ESPIPE = 0x1d;
+	EMLINK = 0x1f;
+	EOWNERDEAD = 0x82;
+	ENOTTY = 0x19;
+	EBADE = 0x34;
+	EBADF = 0x9;
+	EBADR = 0x35;
+	EADV = 0x44;
+	ERANGE = 0x22;
+	ECANCELED = 0x7d;
+	ETXTBSY = 0x1a;
+	ENOMEM = 0xc;
+	EINPROGRESS = 0x73;
+	ENOTBLK = 0xf;
+	EPROTOTYPE = 0x5b;
+	ERESTART = 0x55;
+	EISNAM = 0x78;
+	ENOMSG = 0x2a;
+	EALREADY = 0x72;
+	ETIMEDOUT = 0x6e;
+	ENODATA = 0x3d;
+	EINTR = 0x4;
+	ENOLINK = 0x43;
+	EPERM = 0x1;
+	ELOOP = 0x28;
+	ENETDOWN = 0x64;
+	ESTALE = 0x74;
+	ENOTSOCK = 0x58;
+	ENOSR = 0x3f;
+	ECHILD = 0xa;
+	ELNRNG = 0x30;
+	EPIPE = 0x20;
+	EBADMSG = 0x4a;
+	EBFONT = 0x3b;
+	EREMOTE = 0x42;
+	ETOOMANYREFS = 0x6d;
+	EPFNOSUPPORT = 0x60;
+	ENONET = 0x40;
+	EXFULL = 0x36;
+	EBADSLT = 0x39;
+	ENOTNAM = 0x76;
+	ELIBEXEC = 0x53;
+	ENOCSI = 0x32;
+	ENOTEMPTY = 0x27;
+	EADDRINUSE = 0x62;
+	ENETRESET = 0x66;
+	EISDIR = 0x15;
+	EIDRM = 0x2b;
+	ECOMM = 0x46;
+	EBADFD = 0x4d;
+	EL2HLT = 0x33;
+	ENOKEY = 0x7e;
+	EINVAL = 0x16;
+	ESHUTDOWN = 0x6c;
+	EKEYREJECTED = 0x81;
+	ELIBSCN = 0x51;
+	ENAVAIL = 0x77;
+	ENOSTR = 0x3c;
+	EOVERFLOW = 0x4b;
+	EUCLEAN = 0x75;
+	ENOMEDIUM = 0x7b;
+	EBUSY = 0x10;
+	EPROTO = 0x47;
+	ENODEV = 0x13;
+	EKEYEXPIRED = 0x7f;
+	EROFS = 0x1e;
+	ELIBACC = 0x4f;
+	E2BIG = 0x7;
+	EDEADLK = 0x23;
+	ECONNRESET = 0x68;
+	ENXIO = 0x6;
+	EBADRQC = 0x38;
+	ENAMETOOLONG = 0x24;
+	ESOCKTNOSUPPORT = 0x5e;
+	EDOTDOT = 0x49;
+	EADDRNOTAVAIL = 0x63;
+	ETIME = 0x3e;
+	EPROTONOSUPPORT = 0x5d;
+	ENOTRECOVERABLE = 0x83;
+	EIO = 0x5;
+	ENETUNREACH = 0x65;
+	EXDEV = 0x12;
+	EDQUOT = 0x7a;
+	EREMOTEIO = 0x79;
+	ENOSPC = 0x1c;
+	ENOEXEC = 0x8;
+	EMSGSIZE = 0x5a;
+	EDOM = 0x21;
+	EFBIG = 0x1b;
+	ESRCH = 0x3;
+	ECHRNG = 0x2c;
+	EHOSTDOWN = 0x70;
+	ENOLCK = 0x25;
+	ENFILE = 0x17;
+	ENOSYS = 0x26;
+	ENOTCONN = 0x6b;
+	ENOTSUP = 0x5f;
+	ESRMNT = 0x45;
+	EDEADLOCK = 0x23;
+	ECONNABORTED = 0x67;
+	ENOANO = 0x37;
+	EISCONN = 0x6a;
+	EUSERS = 0x57;
+	ENOPROTOOPT = 0x5c;
+	EMFILE = 0x18;
+	ENOBUFS = 0x69;
+	EL3HLT = 0x2e;
+	EFAULT = 0xe;
+	EWOULDBLOCK = 0xb;
+	ELIBBAD = 0x50;
+	ESTRPIPE = 0x56;
+	ECONNREFUSED = 0x6f;
+	EAGAIN = 0xb;
+	ELIBMAX = 0x52;
+	EEXIST = 0x11;
+	EL2NSYNC = 0x2d;
+	ENOENT = 0x2;
+	ENOPKG = 0x41;
+	EKEYREVOKED = 0x80;
+	EHOSTUNREACH = 0x71;
+	ENOTUNIQ = 0x4c;
+	EOPNOTSUPP = 0x5f;
+	ENOTDIR = 0x14;
+	EMEDIUMTYPE = 0x7c;
+	SIGBUS = 0x7;
+	SIGTTIN = 0x15;
+	SIGPROF = 0x1b;
+	SIGFPE = 0x8;
+	SIGHUP = 0x1;
+	SIGTTOU = 0x16;
+	SIGSTKFLT = 0x10;
+	SIGUSR1 = 0xa;
+	SIGURG = 0x17;
+	SIGQUIT = 0x3;
+	SIGCLD = 0x11;
+	SIGIO = 0x1d;
+	SIGABRT = 0x6;
+	SIGUSR2 = 0xc;
+	SIGTRAP = 0x5;
+	SIGVTALRM = 0x1a;
+	SIGPOLL = 0x1d;
+	SIGSEGV = 0xb;
+	SIGCONT = 0x12;
+	SIGPIPE = 0xd;
+	SIGWINCH = 0x1c;
+	SIGXFSZ = 0x19;
+	SIGCHLD = 0x11;
+	SIGSYS = 0x1f;
+	SIGSTOP = 0x13;
+	SIGALRM = 0xe;
+	SIGTSTP = 0x14;
+	SIGKILL = 0x9;
+	SIGXCPU = 0x18;
+	SIGUNUSED = 0x1f;
+	SIGPWR = 0x1e;
+	SIGILL = 0x4;
+	SIGINT = 0x2;
+	SIGIOT = 0x6;
+	SIGTERM = 0xf;
+)
+
+// Types
+
+
+// Error table
+var errors = [...]string {
+	72: "multihop attempted",
+	49: "protocol driver not attached",
+	97: "address family not supported by protocol",
+	78: "remote address changed",
+	13: "permission denied",
+	47: "level 3 reset",
+	89: "destination address required",
+	84: "invalid or incomplete multibyte or wide character",
+	29: "illegal seek",
+	31: "too many links",
+	130: "owner died",
+	25: "inappropriate ioctl for device",
+	52: "invalid exchange",
+	9: "bad file descriptor",
+	53: "invalid request descriptor",
+	68: "advertise error",
+	34: "numerical result out of range",
+	125: "operation canceled",
+	26: "text file busy",
+	12: "cannot allocate memory",
+	115: "operation now in progress",
+	15: "block device required",
+	91: "protocol wrong type for socket",
+	85: "interrupted system call should be restarted",
+	120: "is a named type file",
+	42: "no message of desired type",
+	114: "operation already in progress",
+	110: "connection timed out",
+	61: "no data available",
+	4: "interrupted system call",
+	67: "link has been severed",
+	1: "operation not permitted",
+	40: "too many levels of symbolic links",
+	100: "network is down",
+	116: "stale NFS file handle",
+	88: "socket operation on non-socket",
+	63: "out of streams resources",
+	10: "no child processes",
+	48: "link number out of range",
+	32: "broken pipe",
+	74: "bad message",
+	59: "bad font file format",
+	66: "object is remote",
+	109: "too many references: cannot splice",
+	96: "protocol family not supported",
+	64: "machine is not on the network",
+	54: "exchange full",
+	57: "invalid slot",
+	118: "not a XENIX named type file",
+	83: "cannot exec a shared library directly",
+	50: "no CSI structure available",
+	39: "directory not empty",
+	98: "address already in use",
+	102: "network dropped connection on reset",
+	21: "is a directory",
+	43: "identifier removed",
+	70: "communication error on send",
+	77: "file descriptor in bad state",
+	51: "level 2 halted",
+	126: "required key not available",
+	22: "invalid argument",
+	108: "cannot send after transport endpoint shutdown",
+	129: "key was rejected by service",
+	81: ".lib section in a.out corrupted",
+	119: "no XENIX semaphores available",
+	60: "device not a stream",
+	75: "value too large for defined data type",
+	117: "structure needs cleaning",
+	123: "no medium found",
+	16: "device or resource busy",
+	71: "protocol error",
+	19: "no such device",
+	127: "key has expired",
+	30: "read-only file system",
+	79: "can not access a needed shared library",
+	7: "argument list too long",
+	35: "resource deadlock avoided",
+	104: "connection reset by peer",
+	6: "no such device or address",
+	56: "invalid request code",
+	36: "file name too long",
+	94: "socket type not supported",
+	73: "RFS specific error",
+	99: "cannot assign requested address",
+	62: "timer expired",
+	93: "protocol not supported",
+	131: "state not recoverable",
+	5: "input/output error",
+	101: "network is unreachable",
+	18: "invalid cross-device link",
+	122: "disk quota exceeded",
+	121: "remote I/O error",
+	28: "no space left on device",
+	8: "exec format error",
+	90: "message too long",
+	33: "numerical argument out of domain",
+	27: "file too large",
+	3: "no such process",
+	44: "channel number out of range",
+	112: "host is down",
+	37: "no locks available",
+	23: "too many open files in system",
+	38: "function not implemented",
+	107: "transport endpoint is not connected",
+	95: "operation not supported",
+	69: "srmount error",
+	103: "software caused connection abort",
+	55: "no anode",
+	106: "transport endpoint is already connected",
+	87: "too many users",
+	92: "protocol not available",
+	24: "too many open files",
+	105: "no buffer space available",
+	46: "level 3 halted",
+	14: "bad address",
+	11: "resource temporarily unavailable",
+	80: "accessing a corrupted shared library",
+	86: "streams pipe error",
+	111: "connection refused",
+	82: "attempting to link in too many shared libraries",
+	17: "file exists",
+	45: "level 2 not synchronized",
+	2: "no such file or directory",
+	65: "package not installed",
+	128: "key has been revoked",
+	113: "no route to host",
+	76: "name not unique on network",
+	20: "not a directory",
+	124: "wrong medium type",
+}
+
diff --git a/src/lib/syscall/zsyscall_darwin_amd64.go b/src/lib/syscall/zsyscall_darwin_amd64.go
new file mode 100644
index 0000000..463bc4f
--- /dev/null
+++ b/src/lib/syscall/zsyscall_darwin_amd64.go
@@ -0,0 +1,622 @@
+// mksyscall syscall_darwin.go syscall_darwin_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+	"syscall";
+	"unsafe";
+)
+
+func getfsstat64(buf *Statfs_t, nbuf int, flags int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETFSSTAT64, uintptr(unsafe.Pointer(buf)), uintptr(nbuf), uintptr(flags));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func setgroups(ngid int, gid *_Gid_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0);
+	errno = int(e1);
+	return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+	wpid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func pipe() (r int, w int, errno int) {
+	r0, r1, e1 := Syscall(SYS_PIPE, 0, 0, 0);
+	r = int(r0);
+	w = int(r1);
+	errno = int(e1);
+	return;
+}
+
+func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) {
+	r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
+	newoffset = uintptr(r0);
+	errno = int(e1);
+	return;
+}
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+	sec = int64(r0);
+	usec = int32(r1);
+	errno = int(e1);
+	return;
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	r0, r1, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen));
+	errno = int(e1);
+	return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen));
+	errno = int(e1);
+	return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+	errno = int(e1);
+	return;
+}
+
+func kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+	r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+	val = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Access(path string, flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Chdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Chflags(path string, flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Chroot(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Close(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Dup(fd int) (nfd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0);
+	nfd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Dup2(from int, to int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0);
+	errno = int(e1);
+	return;
+}
+
+func Exchangedata(path1 string, path2 string, options int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(StringBytePtr(path1))), uintptr(unsafe.Pointer(StringBytePtr(path2))), uintptr(options));
+	errno = int(e1);
+	return;
+}
+
+func Exit(code int) () {
+	r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+	return;
+}
+
+func Fchdir(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchflags(path string, flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Flock(fd int, how int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fpathconf(fd int, name int) (val int, errno int) {
+	r0, r1, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0);
+	val = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fstatfs(fd int, stat *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fsync(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getdtablesize() (size int) {
+	r0, r1, e1 := Syscall(SYS_GETDTABLESIZE, 0, 0, 0);
+	size = int(r0);
+	return;
+}
+
+func Getegid() (egid int) {
+	r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+	egid = int(r0);
+	return;
+}
+
+func Geteuid() (uid int) {
+	r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+	uid = int(r0);
+	return;
+}
+
+func Getgid() (gid int) {
+	r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+	gid = int(r0);
+	return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+	pgid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getpgrp() (pgrp int) {
+	r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+	pgrp = int(r0);
+	return;
+}
+
+func Getpid() (pid int) {
+	r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Getppid() (ppid int) {
+	r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+	ppid = int(r0);
+	return;
+}
+
+func Getpriority(which int, who int) (prio int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0);
+	prio = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getrlimit(which int, lim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Getsid(pid int) (sid int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETSID, uintptr(pid), 0, 0);
+	sid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getuid() (uid int) {
+	r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+	uid = int(r0);
+	return;
+}
+
+func Issetugid() (tainted bool) {
+	r0, r1, e1 := Syscall(SYS_ISSETUGID, 0, 0, 0);
+	tainted = bool(r0 != 0);
+	return;
+}
+
+func Kill(pid int, signum int, posix int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix));
+	errno = int(e1);
+	return;
+}
+
+func Kqueue() (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_KQUEUE, 0, 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Link(path string, link string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Listen(s int, backlog int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0);
+	errno = int(e1);
+	return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkfifo(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+	errno = int(e1);
+	return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pathconf(path string, name int) (val int, errno int) {
+	r0, r1, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(name), 0);
+	val = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Rename(from string, to string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(from))), uintptr(unsafe.Pointer(StringBytePtr(to))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Revoke(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Rmdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setegid(egid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Seteuid(euid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETEUID, uintptr(euid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setgid(gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setlogin(name string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(StringBytePtr(name))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setpriority(which int, who int, prio int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio));
+	errno = int(e1);
+	return;
+}
+
+func Setprivexec(flag int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setrlimit(which int, lim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setsid() (pid int, errno int) {
+	r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+	pid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Settimeofday(tp *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setuid(uid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Statfs(path string, stat *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Symlink(path string, link string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Sync() (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Umask(newmask int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UMASK, uintptr(newmask), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Undelete(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unlink(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unmount(path string, flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func read(fd int, buf *byte, nbuf int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func write(fd int, buf *byte, nbuf int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+
+
diff --git a/src/lib/syscall/zsyscall_linux_amd64.go b/src/lib/syscall/zsyscall_linux_amd64.go
new file mode 100644
index 0000000..92a0ca1
--- /dev/null
+++ b/src/lib/syscall/zsyscall_linux_amd64.go
@@ -0,0 +1,764 @@
+// mksyscall syscall_linux.go syscall_linux_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import (
+	"syscall";
+	"unsafe";
+)
+
+func pipe(p *[2]_C_int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func utimes(path string, times *[2]Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)), 0);
+	errno = int(e1);
+	return;
+}
+
+func futimesat(dirfd int, path string, times *[2]Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(times)));
+	errno = int(e1);
+	return;
+}
+
+func Getcwd(buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_GETCWD, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func getgroups(n int, list *_Gid_t) (nn int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+	nn = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func setgroups(n int, list *_Gid_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
+	errno = int(e1);
+	return;
+}
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
+	wpid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	r0, r1, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen));
+	errno = int(e1);
+	return;
+}
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen));
+	errno = int(e1);
+	return;
+}
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
+	errno = int(e1);
+	return;
+}
+
+func Listen(s int, n int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0);
+	errno = int(e1);
+	return;
+}
+
+func Access(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Acct(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Adjtimex(buf *Timex) (state int, errno int) {
+	r0, r1, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0);
+	state = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Chdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Chmod(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Chown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Chroot(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Close(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Creat(path string, mode int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_CREAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Dup(oldfd int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Dup2(oldfd int, newfd int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func EpollCreate(size int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, errno int) {
+	var _p0 *EpollEvent;
+	if len(events) > 0 { _p0 = &events[0]; }
+	r0, r1, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(unsafe.Pointer(_p0)), uintptr(len(events)), uintptr(msec), 0, 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Exit(code int) () {
+	r0, r1, e1 := Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0);
+	return;
+}
+
+func Faccessat(dirfd int, path string, mode int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fallocate(fd int, mode int, off int64, len int64) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off >> 32), uintptr(len), uintptr(len >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Fchdir(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchmod(fd int, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
+	errno = int(e1);
+	return;
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+	r0, r1, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg));
+	val = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Fdatasync(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Fsync(fd int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ftruncate(fd int, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Getdents(fd int, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getegid() (egid int) {
+	r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
+	egid = int(r0);
+	return;
+}
+
+func Geteuid() (euid int) {
+	r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
+	euid = int(r0);
+	return;
+}
+
+func Getgid() (gid int) {
+	r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
+	gid = int(r0);
+	return;
+}
+
+func Getpgid(pid int) (pgid int, errno int) {
+	r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
+	pgid = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Getpgrp() (pid int) {
+	r0, r1, e1 := Syscall(SYS_GETPGRP, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Getpid() (pid int) {
+	r0, r1, e1 := Syscall(SYS_GETPID, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Getppid() (ppid int) {
+	r0, r1, e1 := Syscall(SYS_GETPPID, 0, 0, 0);
+	ppid = int(r0);
+	return;
+}
+
+func Getrlimit(resource int, rlim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Gettid() (tid int) {
+	r0, r1, e1 := Syscall(SYS_GETTID, 0, 0, 0);
+	tid = int(r0);
+	return;
+}
+
+func Gettimeofday(tv *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Getuid() (uid int) {
+	r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
+	uid = int(r0);
+	return;
+}
+
+func Ioperm(from int, num int, on int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
+	errno = int(e1);
+	return;
+}
+
+func Iopl(level int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Kill(pid int, sig int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(sig), 0);
+	errno = int(e1);
+	return;
+}
+
+func Klogctl(typ int, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Lchown(path string, uid int, gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
+	errno = int(e1);
+	return;
+}
+
+func Link(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkdir(path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
+	errno = int(e1);
+	return;
+}
+
+func Mkdirat(dirfd int, path string, mode int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode));
+	errno = int(e1);
+	return;
+}
+
+func Mknod(path string, mode int, dev int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev));
+	errno = int(e1);
+	return;
+}
+
+func Mknodat(dirfd int, path string, mode int, dev int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+	r0, r1, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Open(path string, mode int, perm int) (fd int, errno int) {
+	r0, r1, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm));
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Openat(dirfd int, path string, flags int, mode int) (fd int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), uintptr(mode), 0, 0);
+	fd = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pause() (errno int) {
+	r0, r1, e1 := Syscall(SYS_PAUSE, 0, 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func PivotRoot(newroot string, putold string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(StringBytePtr(newroot))), uintptr(unsafe.Pointer(StringBytePtr(putold))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), uintptr(offset >> 32), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Read(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(buf) > 0 { _p0 = &buf[0]; }
+	r0, r1, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Rename(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(newdirfd), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Rmdir(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Seek(fd int, offset int64, whence int) (off int64, errno int) {
+	r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
+	off = int64(r0);
+	errno = int(e1);
+	return;
+}
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
+	r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func Setdomainname(p []byte) (errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setfsgid(gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setfsuid(uid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setgid(gid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Sethostname(p []byte) (errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_SETHOSTNAME, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setpgid(pid int, pgid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setregid(rgid int, egid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setresgid(rgid int, egid int, sgid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
+	errno = int(e1);
+	return;
+}
+
+func Setresuid(ruid int, euid int, suid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
+	errno = int(e1);
+	return;
+}
+
+func Setreuid(ruid int, euid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setrlimit(resource int, rlim *Rlimit) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Setsid() (pid int) {
+	r0, r1, e1 := Syscall(SYS_SETSID, 0, 0, 0);
+	pid = int(r0);
+	return;
+}
+
+func Settimeofday(tv *Timeval) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Setuid(uid int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SETUID, uintptr(uid), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Shutdown(fd int, how int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0);
+	errno = int(e1);
+	return;
+}
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
+	r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags));
+	n = int64(r0);
+	errno = int(e1);
+	return;
+}
+
+func Stat(path string, stat *Stat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Statfs(path string, buf *Statfs_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Symlink(oldpath string, newpath string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Sync() () {
+	r0, r1, e1 := Syscall(SYS_SYNC, 0, 0, 0);
+	return;
+}
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (errno int) {
+	r0, r1, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off >> 32), uintptr(n), uintptr(n >> 32), uintptr(flags));
+	errno = int(e1);
+	return;
+}
+
+func Sysinfo(info *Sysinfo_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
+	r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0);
+	n = int64(r0);
+	errno = int(e1);
+	return;
+}
+
+func Tgkill(tgid int, tid int, sig int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig));
+	errno = int(e1);
+	return;
+}
+
+func Time(t *Time_t) (tt Time_t, errno int) {
+	r0, r1, e1 := Syscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0);
+	tt = Time_t(r0);
+	errno = int(e1);
+	return;
+}
+
+func Times(tms *Tms) (ticks uintptr, errno int) {
+	r0, r1, e1 := Syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0);
+	ticks = uintptr(r0);
+	errno = int(e1);
+	return;
+}
+
+func Truncate(path string, length int64) (errno int) {
+	r0, r1, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(length), uintptr(length >> 32));
+	errno = int(e1);
+	return;
+}
+
+func Umask(mask int) (oldmask int) {
+	r0, r1, e1 := Syscall(SYS_UMASK, uintptr(mask), 0, 0);
+	oldmask = int(r0);
+	return;
+}
+
+func Uname(buf *Utsname) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unlink(path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Unlinkat(dirfd int, path string) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), 0);
+	errno = int(e1);
+	return;
+}
+
+func Unshare(flags int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (errno int) {
+	r0, r1, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Utime(path string, buf *Utimbuf) (errno int) {
+	r0, r1, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
+	errno = int(e1);
+	return;
+}
+
+func Write(fd int, p []byte) (n int, errno int) {
+	var _p0 *byte;
+	if len(p) > 0 { _p0 = &p[0]; }
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func exitThread(code int) (errno int) {
+	r0, r1, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0);
+	errno = int(e1);
+	return;
+}
+
+func read(fd int, p *byte, np int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+func write(fd int, p *byte, np int) (n int, errno int) {
+	r0, r1, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np));
+	n = int(r0);
+	errno = int(e1);
+	return;
+}
+
+
+
diff --git a/src/lib/syscall/syscall_amd64_darwin.go b/src/lib/syscall/zsysnum_darwin_amd64.go
similarity index 98%
rename from src/lib/syscall/syscall_amd64_darwin.go
rename to src/lib/syscall/zsysnum_darwin_amd64.go
index b378f56..c4c48c2 100644
--- a/src/lib/syscall/syscall_amd64_darwin.go
+++ b/src/lib/syscall/zsysnum_darwin_amd64.go
@@ -1,9 +1,5 @@
-// Copyright 2009 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.
-
-// Generated by mkdarwin; DO NOT EDIT.
-// mkdarwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master
+// mksysnum_darwin /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
 
 package syscall
 
@@ -340,7 +336,7 @@
 	// SYS_NOSYS = 297;  // { int nosys(void); } { old reset_shared_file }
 	// SYS_NOSYS = 298;  // { int nosys(void); } { old new_system_shared_regions }
 	// SYS_ENOSYS = 299;  // { int enosys(void); } { old shared_region_map_file_np }
-	SYS_ENOSYS = 300;  // { int enosys(void); } { old shared_region_make_private_np }
+	// SYS_ENOSYS = 300;  // { int enosys(void); } { old shared_region_make_private_np }
 	SYS___PTHREAD_MUTEX_DESTROY = 301;  // { int __pthread_mutex_destroy(int mutexid); }
 	SYS___PTHREAD_MUTEX_INIT = 302;  // { int __pthread_mutex_init(user_addr_t  mutex, user_addr_t attr); }
 	SYS___PTHREAD_MUTEX_LOCK = 303;  // { int __pthread_mutex_lock(int mutexid); }
diff --git a/src/lib/syscall/syscall_amd64_linux.go b/src/lib/syscall/zsysnum_linux_amd64.go
similarity index 97%
rename from src/lib/syscall/syscall_amd64_linux.go
rename to src/lib/syscall/zsysnum_linux_amd64.go
index cd75cb5..94424f3 100644
--- a/src/lib/syscall/syscall_amd64_linux.go
+++ b/src/lib/syscall/zsysnum_linux_amd64.go
@@ -1,7 +1,3 @@
-// Copyright 2009 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.
-
 // Generated by mklinux; DO NOT EDIT.
 // mklinux /usr/include/asm/unistd_64.h
 
@@ -295,3 +291,6 @@
 	SYS_EVENTFD = 284;
 	SYS_FALLOCATE = 285;
 )
+
+func _darwin_system_call_conflict() {
+}
diff --git a/src/lib/syscall/ztypes_darwin_amd64.go b/src/lib/syscall/ztypes_darwin_amd64.go
new file mode 100644
index 0000000..0523c50
--- /dev/null
+++ b/src/lib/syscall/ztypes_darwin_amd64.go
@@ -0,0 +1,248 @@
+// godefs -gsyscall -f-m64 types_darwin.c types_darwin_amd64.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	sizeofPtr = 0x8;
+	sizeofShort = 0x2;
+	sizeofInt = 0x4;
+	sizeofLong = 0x8;
+	sizeofLongLong = 0x8;
+	O_RDONLY = 0;
+	O_WRONLY = 0x1;
+	O_RDWR = 0x2;
+	O_APPEND = 0x8;
+	O_ASYNC = 0x40;
+	O_CREAT = 0x200;
+	O_NOCTTY = 0x20000;
+	O_NONBLOCK = 0x4;
+	O_SYNC = 0x80;
+	O_TRUNC = 0x400;
+	O_CLOEXEC = 0;
+	F_GETFD = 0x1;
+	F_SETFD = 0x2;
+	F_GETFL = 0x3;
+	F_SETFL = 0x4;
+	FD_CLOEXEC = 0x1;
+	NAME_MAX = 0xff;
+	S_IFMT = 0xf000;
+	S_IFIFO = 0x1000;
+	S_IFCHR = 0x2000;
+	S_IFDIR = 0x4000;
+	S_IFBLK = 0x6000;
+	S_IFREG = 0x8000;
+	S_IFLNK = 0xa000;
+	S_IFSOCK = 0xc000;
+	S_IFWHT = 0xe000;
+	S_ISUID = 0x800;
+	S_ISGID = 0x400;
+	S_ISVTX = 0x200;
+	S_IRUSR = 0x100;
+	S_IWUSR = 0x80;
+	S_IXUSR = 0x40;
+	WNOHANG = 0x1;
+	WUNTRACED = 0x2;
+	WEXITED = 0x4;
+	WSTOPPED = 0x7f;
+	WCONTINUED = 0x10;
+	WNOWAIT = 0x20;
+	AF_UNIX = 0x1;
+	AF_INET = 0x2;
+	AF_DATAKIT = 0x9;
+	AF_INET6 = 0x1e;
+	SOCK_STREAM = 0x1;
+	SOCK_DGRAM = 0x2;
+	SOCK_RAW = 0x3;
+	SOCK_SEQPACKET = 0x5;
+	SOL_SOCKET = 0xffff;
+	SO_REUSEADDR = 0x4;
+	SO_KEEPALIVE = 0x8;
+	SO_DONTROUTE = 0x10;
+	SO_BROADCAST = 0x20;
+	SO_USELOOPBACK = 0x40;
+	SO_LINGER = 0x80;
+	SO_REUSEPORT = 0x200;
+	SO_SNDBUF = 0x1001;
+	SO_RCVBUF = 0x1002;
+	SO_SNDTIMEO = 0x1005;
+	SO_RCVTIMEO = 0x1006;
+	SO_NOSIGPIPE = 0x1022;
+	IPPROTO_TCP = 0x6;
+	IPPROTO_UDP = 0x11;
+	TCP_NODELAY = 0x1;
+	SOMAXCONN = 0x80;
+	SizeofSockaddrInet4 = 0x10;
+	SizeofSockaddrInet6 = 0x1c;
+	SizeofSockaddrAny = 0x1c;
+	SizeofSockaddrUnix = 0x6a;
+	EVFILT_READ = -0x1;
+	EVFILT_WRITE = -0x2;
+	EVFILT_AIO = -0x3;
+	EVFILT_VNODE = -0x4;
+	EVFILT_PROC = -0x5;
+	EVFILT_SIGNAL = -0x6;
+	EVFILT_TIMER = -0x7;
+	EVFILT_MACHPORT = -0x8;
+	EVFILT_FS = -0x9;
+	EVFILT_SYSCOUNT = 0x9;
+	EV_ADD = 0x1;
+	EV_DELETE = 0x2;
+	EV_DISABLE = 0x8;
+	EV_RECEIPT = 0x40;
+	EV_ONESHOT = 0x10;
+	EV_CLEAR = 0x20;
+	EV_SYSFLAGS = 0xf000;
+	EV_FLAG0 = 0x1000;
+	EV_FLAG1 = 0x2000;
+	EV_EOF = 0x8000;
+	EV_ERROR = 0x4000;
+)
+
+// Types
+
+type Timespec struct {
+	Sec int64;
+	Nsec int64;
+}
+
+type Timeval struct {
+	Sec int64;
+	Usec int32;
+	Pad0 [4]byte;
+}
+
+type Rusage struct {
+	Utime Timeval;
+	Stime Timeval;
+	Maxrss int64;
+	Ixrss int64;
+	Idrss int64;
+	Isrss int64;
+	Minflt int64;
+	Majflt int64;
+	Nswap int64;
+	Inblock int64;
+	Oublock int64;
+	Msgsnd int64;
+	Msgrcv int64;
+	Nsignals int64;
+	Nvcsw int64;
+	Nivcsw int64;
+}
+
+type Rlimit struct {
+	Cur uint64;
+	Max uint64;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+	Dev int32;
+	Mode uint16;
+	Nlink uint16;
+	Ino uint64;
+	Uid uint32;
+	Gid uint32;
+	Rdev int32;
+	Pad0 [4]byte;
+	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 [8]byte /* fsid */;
+	Owner uint32;
+	Type uint32;
+	Flags uint32;
+	Fssubtype uint32;
+	Fstypename [16]int8;
+	Mntonname [1024]int8;
+	Mntfromname [1024]int8;
+	Reserved [8]uint32;
+}
+
+type Dirent struct {
+	Ino uint64;
+	Seekoff uint64;
+	Reclen uint16;
+	Namlen uint16;
+	Type uint8;
+	Name [1024]int8;
+	Pad0 [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 RawSockaddr struct {
+	Len uint8;
+	Family uint8;
+	Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+	Addr RawSockaddr;
+	Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+	Onoff int32;
+	Linger int32;
+}
+
+type Kevent_t struct {
+	Ident uint64;
+	Filter int16;
+	Flags uint16;
+	Fflags uint32;
+	Data int64;
+	Udata *byte;
+}
+
+type FdSet struct {
+	Bits [32]int32;
+}
diff --git a/src/lib/syscall/ztypes_linux_amd64.go b/src/lib/syscall/ztypes_linux_amd64.go
new file mode 100644
index 0000000..f17ebe1
--- /dev/null
+++ b/src/lib/syscall/ztypes_linux_amd64.go
@@ -0,0 +1,300 @@
+// godefs -gsyscall -f-m64 types_linux.c types_linux_amd64.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+	sizeofPtr = 0x8;
+	sizeofShort = 0x2;
+	sizeofInt = 0x4;
+	sizeofLong = 0x8;
+	sizeofLongLong = 0x8;
+	PathMax = 0x1000;
+	O_RDONLY = 0;
+	O_WRONLY = 0x1;
+	O_RDWR = 0x2;
+	O_APPEND = 0x400;
+	O_ASYNC = 0x2000;
+	O_CREAT = 0x40;
+	O_NOCTTY = 0x100;
+	O_NONBLOCK = 0x800;
+	O_SYNC = 0x1000;
+	O_TRUNC = 0x200;
+	O_CLOEXEC = 0;
+	F_GETFD = 0x1;
+	F_SETFD = 0x2;
+	F_GETFL = 0x3;
+	F_SETFL = 0x4;
+	FD_CLOEXEC = 0x1;
+	NAME_MAX = 0xff;
+	S_IFMT = 0xf000;
+	S_IFIFO = 0x1000;
+	S_IFCHR = 0x2000;
+	S_IFDIR = 0x4000;
+	S_IFBLK = 0x6000;
+	S_IFREG = 0x8000;
+	S_IFLNK = 0xa000;
+	S_IFSOCK = 0xc000;
+	S_ISUID = 0x800;
+	S_ISGID = 0x400;
+	S_ISVTX = 0x200;
+	S_IRUSR = 0x100;
+	S_IWUSR = 0x80;
+	S_IXUSR = 0x40;
+	WNOHANG = 0x1;
+	WUNTRACED = 0x2;
+	WEXITED = 0x4;
+	WSTOPPED = 0x2;
+	WCONTINUED = 0x8;
+	WNOWAIT = 0x1000000;
+	AF_UNIX = 0x1;
+	AF_INET = 0x2;
+	AF_INET6 = 0xa;
+	SOCK_STREAM = 0x1;
+	SOCK_DGRAM = 0x2;
+	SOCK_RAW = 0x3;
+	SOCK_SEQPACKET = 0x5;
+	SOL_SOCKET = 0x1;
+	SO_REUSEADDR = 0x2;
+	SO_KEEPALIVE = 0x9;
+	SO_DONTROUTE = 0x5;
+	SO_BROADCAST = 0x6;
+	SO_LINGER = 0xd;
+	SO_SNDBUF = 0x7;
+	SO_RCVBUF = 0x8;
+	SO_SNDTIMEO = 0x15;
+	SO_RCVTIMEO = 0x14;
+	IPPROTO_TCP = 0x6;
+	IPPROTO_UDP = 0x11;
+	TCP_NODELAY = 0x1;
+	SOMAXCONN = 0x80;
+	SizeofSockaddrInet4 = 0x10;
+	SizeofSockaddrInet6 = 0x1c;
+	SizeofSockaddrAny = 0x1c;
+	SizeofSockaddrUnix = 0x6e;
+	EPOLLIN = 0x1;
+	EPOLLRDHUP = 0x2000;
+	EPOLLOUT = 0x4;
+	EPOLLONESHOT = 0x40000000;
+	EPOLL_CTL_MOD = 0x3;
+	EPOLL_CTL_ADD = 0x1;
+	EPOLL_CTL_DEL = 0x2;
+)
+
+// Types
+
+type Timespec struct {
+	Sec int64;
+	Nsec int64;
+}
+
+type Timeval struct {
+	Sec int64;
+	Usec int64;
+}
+
+type Timex struct {
+	Modes uint32;
+	Pad0 [4]byte;
+	Offset int64;
+	Freq int64;
+	Maxerror int64;
+	Esterror int64;
+	Status int32;
+	Pad1 [4]byte;
+	Constant int64;
+	Precision int64;
+	Tolerance int64;
+	Time Timeval;
+	Tick int64;
+	Ppsfreq int64;
+	Jitter int64;
+	Shift int32;
+	Pad2 [4]byte;
+	Stabil int64;
+	Jitcnt int64;
+	Calcnt int64;
+	Errcnt int64;
+	Stbcnt int64;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+	 int32;
+}
+
+type Time_t int64
+
+type Tms struct {
+	Utime int64;
+	Stime int64;
+	Cutime int64;
+	Cstime int64;
+}
+
+type Utimbuf struct {
+	Actime int64;
+	Modtime int64;
+}
+
+type Rusage struct {
+	Utime Timeval;
+	Stime Timeval;
+	Maxrss int64;
+	Ixrss int64;
+	Idrss int64;
+	Isrss int64;
+	Minflt int64;
+	Majflt int64;
+	Nswap int64;
+	Inblock int64;
+	Oublock int64;
+	Msgsnd int64;
+	Msgrcv int64;
+	Nsignals int64;
+	Nvcsw int64;
+	Nivcsw int64;
+}
+
+type Rlimit struct {
+	Cur uint64;
+	Max uint64;
+}
+
+type _C_int int32
+
+type _Gid_t uint32
+
+type Stat_t struct {
+	Dev uint64;
+	Ino uint64;
+	Nlink uint64;
+	Mode uint32;
+	Uid uint32;
+	Gid uint32;
+	Pad0 int32;
+	Rdev uint64;
+	Size int64;
+	Blksize int64;
+	Blocks int64;
+	Atim Timespec;
+	Mtim Timespec;
+	Ctim Timespec;
+	__unused [3]int64;
+}
+
+type Statfs_t struct {
+	Type int64;
+	Bsize int64;
+	Blocks uint64;
+	Bfree uint64;
+	Bavail uint64;
+	Files uint64;
+	Ffree uint64;
+	Fsid [8]byte /* __fsid_t */;
+	Namelen int64;
+	Frsize int64;
+	Spare [5]int64;
+}
+
+type Dirent struct {
+	Ino uint64;
+	Off int64;
+	Reclen uint16;
+	Type uint8;
+	Name [256]int8;
+	Pad0 [5]byte;
+}
+
+type RawSockaddrInet4 struct {
+	Family uint16;
+	Port uint16;
+	Addr [4]byte /* in_addr */;
+	Zero [8]uint8;
+}
+
+type RawSockaddrInet6 struct {
+	Family uint16;
+	Port uint16;
+	Flowinfo uint32;
+	Addr [16]byte /* in6_addr */;
+	Scope_id uint32;
+}
+
+type RawSockaddrUnix struct {
+	Family uint16;
+	Path [108]int8;
+}
+
+type RawSockaddr struct {
+	Family uint16;
+	Data [14]int8;
+}
+
+type RawSockaddrAny struct {
+	Addr RawSockaddr;
+	Pad [12]int8;
+}
+
+type _Socklen uint32
+
+type Linger struct {
+	Onoff int32;
+	Linger int32;
+}
+
+type FdSet struct {
+	__fds_bits [16]int64;
+}
+
+type Sysinfo_t struct {
+	Uptime int64;
+	Loads [3]uint64;
+	Totalram uint64;
+	Freeram uint64;
+	Sharedram uint64;
+	Bufferram uint64;
+	Totalswap uint64;
+	Freeswap uint64;
+	Procs uint16;
+	Pad uint16;
+	Pad0 [4]byte;
+	Totalhigh uint64;
+	Freehigh uint64;
+	Unit uint32;
+	_f [2]int8;
+	Pad1 [4]byte;
+}
+
+type Utsname struct {
+	Sysname [65]int8;
+	Nodename [65]int8;
+	Release [65]int8;
+	Version [65]int8;
+	Machine [65]int8;
+	__domainname [65]int8;
+}
+
+type Ustat_t struct {
+	Tfree int32;
+	Pad0 [4]byte;
+	Tinode uint64;
+	Fname [6]int8;
+	Fpack [6]int8;
+	Pad1 [4]byte;
+}
+
+type EpollEvent struct {
+	Events uint32;
+	Fd int32;
+	Pad int32;
+}