runtime: separate out auto-generated files, take 2
This is like the ill-fated CL 5493063 except that
I have written a shell script (autogen.sh) instead of
thinking I could possibly write a correct Makefile.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5496075
diff --git a/src/Make.pkg b/src/Make.pkg
index c6c47ff..91562af 100644
--- a/src/Make.pkg
+++ b/src/Make.pkg
@@ -246,4 +246,4 @@
$(CC) $(CFLAGS) -I . -o "$@" _obj/$*.c
%.$O: %.s $(HFILES)
- $(AS) $*.s
+ $(AS) $(AFLAGS) $*.s
diff --git a/src/cmd/Makefile b/src/cmd/Makefile
index 0b83e48..c2f817a 100644
--- a/src/cmd/Makefile
+++ b/src/cmd/Makefile
@@ -8,9 +8,12 @@
# Only build tools for current architecture, and only tools written in C.
# The tools written in Go are managed by ../pkg/Makefile.
+# We need all the C compilers for rebuilding generated files in runtime.
DIRS=\
$(O)a\
- $(O)c\
+ 5c\
+ 6c\
+ 8c\
$(O)g\
$(O)l\
cc\
@@ -55,7 +58,7 @@
@echo
$(MAKE) -C $* install
-gc.install $(O)c.install: cc.install
+gc.install 5c.install 6c.install 8c.install: cc.install
$(O)g.install: gc.install
$(O)a.install $(O)c.install $(O)g.install: $(O)l.install
diff --git a/src/make.bash b/src/make.bash
index 3580d2a..83c1db4 100755
--- a/src/make.bash
+++ b/src/make.bash
@@ -78,12 +78,18 @@
bash "$GOROOT"/src/clean.bash
# pkg builds libcgo and the Go programs in cmd.
-for i in lib9 libbio libmach cmd pkg
+for i in lib9 libbio libmach cmd
do
echo; echo; echo %%%% making $i %%%%; echo
gomake -C $i install
done
+echo; echo; echo %%%% making runtime generated files %%%%; echo
+(cd "$GOROOT"/src/pkg/runtime; ./autogen.sh) || exit 1
+
+echo; echo; echo %%%% making pkg %%%%; echo
+gomake -C pkg install
+
# Print post-install messages.
# Implemented as a function so that all.bash can repeat the output
# after run.bash finishes running all the tests.
diff --git a/src/pkg/runtime/Makefile b/src/pkg/runtime/Makefile
index 9025d0e..7bd648d 100644
--- a/src/pkg/runtime/Makefile
+++ b/src/pkg/runtime/Makefile
@@ -4,9 +4,6 @@
include ../../Make.inc
-# Go tool will do this for package runtime.
-CFLAGS+=-DGOOS_$(GOOS) -DGOARCH_$(GOARCH)
-
TARG=runtime
GOFILES=\
@@ -14,15 +11,13 @@
error.go\
extern.go\
mem.go\
- runtime_defs.go\
sig.go\
softfloat64.go\
type.go\
- version.go\
- version_$(GOOS).go\
- version_$(GOARCH).go\
-
-CLEANFILES+=version.go version_*.go
+ zgoarch_$(GOARCH).go\
+ zgoos_$(GOOS).go\
+ zruntime_defs_$(GOOS)_$(GOARCH).go\
+ zversion.go\
OFILES_darwin=\
lock_sema.$O\
@@ -45,7 +40,7 @@
OFILES_windows=\
callback_windows_$(GOARCH).$O\
lock_sema.$O\
- syscall_windows.$O\
+ zsyscall_windows_$(GOARCH).$O\
# 386-specific object files
OFILES_386=\
@@ -66,6 +61,8 @@
traceback_arm.$O\
OFILES=\
+ $(OFILES_$(GOARCH))\
+ $(OFILES_$(GOOS))\
alg.$O\
asm_$(GOARCH).$O\
atomic_$(GOARCH).$O\
@@ -77,7 +74,6 @@
float.$O\
hashmap.$O\
iface.$O\
- malloc.$O\
mcache.$O\
mcentral.$O\
mem_$(GOOS).$O\
@@ -86,31 +82,31 @@
mfixalloc.$O\
mgc0.$O\
mheap.$O\
- mprof.$O\
msize.$O\
print.$O\
proc.$O\
rt0_$(GOOS)_$(GOARCH).$O\
rune.$O\
runtime.$O\
- runtime1.$O\
- sema.$O\
signal_$(GOOS)_$(GOARCH).$O\
- sigqueue.$O\
slice.$O\
- string.$O\
symtab.$O\
sys_$(GOOS)_$(GOARCH).$O\
thread_$(GOOS).$O\
- time.$O\
- $(OFILES_$(GOARCH))\
- $(OFILES_$(GOOS))\
+ zmalloc_$(GOARCH).$O\
+ zmprof_$(GOARCH).$O\
+ zruntime1_$(GOARCH).$O\
+ zsema_$(GOARCH).$O\
+ zsigqueue_$(GOARCH).$O\
+ zstring_$(GOARCH).$O\
+ ztime_$(GOARCH).$O\
AUTOHFILES=\
arch_GOARCH.h\
os_GOOS.h\
signals_GOOS.h\
defs_GOOS_GOARCH.h\
+ zasm_GOOS_GOARCH.h\
HFILES=\
cgocall.h\
@@ -118,7 +114,6 @@
hashmap.h\
malloc.h\
stack.h\
- asm_$(GOARCH).h\
$(AUTOHFILES)\
GOFILES+=$(GOFILES_$(GOOS))
@@ -126,6 +121,10 @@
# For use by cgo.
INSTALLFILES=$(pkgdir)/runtime.h $(pkgdir)/cgocall.h
+# Go tool will do this for package runtime.
+AFLAGS+=-DGOOS_$(GOOS) -DGOARCH_$(GOARCH)
+CFLAGS+=-DGOOS_$(GOOS) -DGOARCH_$(GOARCH)
+
# special, out of the way compiler flag that means "add runtime metadata to output"
GC+= -+
@@ -138,44 +137,7 @@
clean: clean-local
clean-local:
- rm -f goc2c mkversion version.go runtime.acid.* runtime_defs.go $$(ls *.goc | sed 's/goc$$/c/') $(AUTOHFILES)
-
-asm_$(GOARCH).h: mkasmh.sh runtime.acid.$(GOARCH)
- ./mkasmh.sh >$@.x
- mv -f $@.x $@
-
-goc2c: goc2c.c
- quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
-
-mkversion: mkversion.c
- quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
-
-version.go: mkversion
- GOROOT="$(GOROOT_FINAL)" ./mkversion >version.go
-
-version_$(GOARCH).go:
- (echo 'package runtime'; echo 'const theGoarch = "$(GOARCH)"') >$@
-
-version_$(GOOS).go:
- (echo 'package runtime'; echo 'const theGoos = "$(GOOS)"') >$@
-
-%.c: %.goc goc2c
- ./goc2c "`pwd`/$<" > $@.tmp
- mv -f $@.tmp $@
-
-# for discovering offsets inside structs when debugging
-runtime.acid.$(GOARCH): runtime.h proc.c $(AUTOHFILES)
- $(CC) $(CFLAGS) -a proc.c >$@
-
-# 386 traceback is really amd64 traceback
-ifeq ($(GOARCH),386)
-traceback.$O: amd64/traceback.c
- $(CC) $(CFLAGS) $<
-endif
-
-runtime_defs.go: proc.c iface.c hashmap.c chan.c $(HFILES)
- CC="$(CC)" CFLAGS="$(CFLAGS)" ./mkgodefs.sh proc.c iface.c hashmap.c chan.c > $@.x
- mv -f $@.x $@
+ rm -f $(AUTOHFILES)
arch_GOARCH.h: arch_$(GOARCH).h
cp $^ $@
@@ -188,3 +150,6 @@
signals_GOOS.h: signals_$(GOOS).h
cp $^ $@
+
+zasm_GOOS_GOARCH.h: zasm_$(GOOS)_$(GOARCH).h
+ cp $^ $@
diff --git a/src/pkg/runtime/asm_386.s b/src/pkg/runtime/asm_386.s
index c39f365..5240063 100644
--- a/src/pkg/runtime/asm_386.s
+++ b/src/pkg/runtime/asm_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT _rt0_386(SB),7,$0
// Linux, Windows start the FPU in extended double precision.
diff --git a/src/pkg/runtime/asm_amd64.s b/src/pkg/runtime/asm_amd64.s
index d91421e..9053334 100644
--- a/src/pkg/runtime/asm_amd64.s
+++ b/src/pkg/runtime/asm_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT _rt0_amd64(SB),7,$-8
// copy arguments forward on an even stack
diff --git a/src/pkg/runtime/asm_arm.s b/src/pkg/runtime/asm_arm.s
index 533c074..b36bbe3 100644
--- a/src/pkg/runtime/asm_arm.s
+++ b/src/pkg/runtime/asm_arm.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_arm.h"
+#include "zasm_GOOS_GOARCH.h"
// using frame size $-4 means do not save LR on stack.
TEXT _rt0_arm(SB),7,$-4
diff --git a/src/pkg/runtime/autogen.sh b/src/pkg/runtime/autogen.sh
new file mode 100755
index 0000000..23b3bfb
--- /dev/null
+++ b/src/pkg/runtime/autogen.sh
@@ -0,0 +1,113 @@
+#!/bin/sh
+# Copyright 2011 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.
+
+# This script generates the various derived files involved in
+# building package runtime.
+#
+# autogen.sh rebuilds everything
+# autogen.sh -clean deletes the generated files
+
+GOARCHES="
+ 386
+ amd64
+ arm
+"
+
+GOOSES="
+ darwin
+ freebsd
+ linux
+ netbsd
+ openbsd
+ plan9
+ windows
+"
+
+GOOSARCHES="
+ darwin_386
+ darwin_amd64
+ freebsd_386
+ freebsd_amd64
+ linux_386
+ linux_amd64
+ linux_arm
+ netbsd_386
+ netbsd_amd64
+ openbsd_386
+ openbsd_amd64
+ plan9_386
+ windows_386
+ windows_amd64
+"
+
+HELPERS="goc2c mkversion"
+
+rm -f $HELPERS z*
+
+if [ "$1" = "-clean" ]; then
+ exit 0
+fi
+
+set -e
+
+if [ "$GOROOT" = "" ]; then
+ echo "$0"': $GOROOT must be set' >&2
+ exit 2
+fi
+
+# Use goc2c to translate .goc files into arch-specific .c files.
+quietgcc -o goc2c -I "$GOROOT/include" goc2c.c "$GOROOT/lib/lib9.a"
+for file in *.goc
+do
+ for arch in $GOARCHES
+ do
+ base=$(echo $file | sed 's/\.goc$//')
+ GOARCH=$arch ./goc2c $file >z.tmp
+ mv -f z.tmp z${base}_$arch.c
+ done
+done
+
+# Version constants.
+quietgcc -o mkversion -I "$GOROOT/include" mkversion.c "$GOROOT/lib/lib9.a"
+GOROOT="$GOROOT_FINAL" ./mkversion >z.tmp
+mv z.tmp zversion.go
+
+for arch in $GOARCHES
+do
+ (
+ echo '// AUTO-GENERATED by autogen.sh; DO NOT EDIT'
+ echo
+ echo 'package runtime'
+ echo
+ echo 'const theGoarch = "'$arch'"'
+ ) >zgoarch_$arch.go
+done
+
+for os in $GOOSES
+do
+ (
+ echo '// AUTO-GENERATED by autogen.sh; DO NOT EDIT'
+ echo
+ echo 'package runtime'
+ echo
+ echo 'const theGoos = "'$os'"'
+ ) >zgoos_$os.go
+done
+
+# Definitions of runtime structs, translated from C to Go.
+for osarch in $GOOSARCHES
+do
+ ./mkgodefs.sh $osarch proc.c iface.c hashmap.c chan.c >z.tmp
+ mv -f z.tmp zruntime_defs_$osarch.go
+done
+
+# Struct field offsets, for use by assembly files.
+for osarch in $GOOSARCHES
+do
+ ./mkasmh.sh $osarch proc.c defs.h >z.tmp
+ mv -f z.tmp zasm_$osarch.h
+done
+
+rm -f $HELPERS
diff --git a/src/pkg/runtime/defs1_linux.go b/src/pkg/runtime/defs1_linux.go
index 6d84e84..451817a 100644
--- a/src/pkg/runtime/defs1_linux.go
+++ b/src/pkg/runtime/defs1_linux.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo -cdefs
diff --git a/src/pkg/runtime/defs2_linux.go b/src/pkg/runtime/defs2_linux.go
index 1fafb7b..9b07029 100644
--- a/src/pkg/runtime/defs2_linux.go
+++ b/src/pkg/runtime/defs2_linux.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
* Input to cgo -cdefs
diff --git a/src/pkg/runtime/defs_arm_linux.go b/src/pkg/runtime/defs_arm_linux.go
index 35f74e8..2063efb 100644
--- a/src/pkg/runtime/defs_arm_linux.go
+++ b/src/pkg/runtime/defs_arm_linux.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
On a Debian Lenny arm linux distribution:
diff --git a/src/pkg/runtime/defs_darwin.go b/src/pkg/runtime/defs_darwin.go
index 6cd988d..3f3e41d 100644
--- a/src/pkg/runtime/defs_darwin.go
+++ b/src/pkg/runtime/defs_darwin.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
diff --git a/src/pkg/runtime/defs_freebsd.go b/src/pkg/runtime/defs_freebsd.go
index ee80bb2..306e321 100644
--- a/src/pkg/runtime/defs_freebsd.go
+++ b/src/pkg/runtime/defs_freebsd.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
diff --git a/src/pkg/runtime/defs_linux.go b/src/pkg/runtime/defs_linux.go
index bbaab2d..c0275e1 100644
--- a/src/pkg/runtime/defs_linux.go
+++ b/src/pkg/runtime/defs_linux.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo -cdefs
diff --git a/src/pkg/runtime/defs_netbsd.go b/src/pkg/runtime/defs_netbsd.go
index 4fb3a04..47c30cf 100644
--- a/src/pkg/runtime/defs_netbsd.go
+++ b/src/pkg/runtime/defs_netbsd.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
diff --git a/src/pkg/runtime/defs_openbsd.go b/src/pkg/runtime/defs_openbsd.go
index 4fb3a04..47c30cf 100644
--- a/src/pkg/runtime/defs_openbsd.go
+++ b/src/pkg/runtime/defs_openbsd.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
diff --git a/src/pkg/runtime/defs_windows.go b/src/pkg/runtime/defs_windows.go
index e23e420..0d525b9 100644
--- a/src/pkg/runtime/defs_windows.go
+++ b/src/pkg/runtime/defs_windows.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
Input to cgo.
diff --git a/src/pkg/runtime/goc2c.c b/src/pkg/runtime/goc2c.c
index fcac9c0..b59a69c 100644
--- a/src/pkg/runtime/goc2c.c
+++ b/src/pkg/runtime/goc2c.c
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build ignore
+
/*
* Translate a .goc file into a .c file. A .goc file is a combination
* of a limited form of Go with C.
@@ -742,6 +744,7 @@
}
}
+ printf("// AUTO-GENERATED by autogen.sh; DO NOT EDIT\n\n");
process_file();
exits(0);
}
diff --git a/src/pkg/runtime/lock_futex.c b/src/pkg/runtime/lock_futex.c
index 375b7d7..c6b64ca 100644
--- a/src/pkg/runtime/lock_futex.c
+++ b/src/pkg/runtime/lock_futex.c
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build freebsd linux
+
#include "runtime.h"
// This implementation depends on OS-specific implementations of
diff --git a/src/pkg/runtime/lock_sema.c b/src/pkg/runtime/lock_sema.c
index 8875b17..ae229ec 100644
--- a/src/pkg/runtime/lock_sema.c
+++ b/src/pkg/runtime/lock_sema.c
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// +build darwin netbsd openbsd plan9 windows
+
#include "runtime.h"
// This implementation depends on OS-specific implementations of
diff --git a/src/pkg/runtime/mkasmh.sh b/src/pkg/runtime/mkasmh.sh
index 920e79a..e50db87 100755
--- a/src/pkg/runtime/mkasmh.sh
+++ b/src/pkg/runtime/mkasmh.sh
@@ -5,9 +5,28 @@
set -e
+SYS=$1
+export GOOS=$(echo $SYS | sed 's/_.*//')
+export GOARCH=$(echo $SYS | sed 's/.*_//')
+shift
+
+case "$GOARCH" in
+386) CC=8c;;
+amd64) CC=6c;;
+arm) CC=5c;;
+esac
+export CC
+
+export CFLAGS="-Dos_$GOOS -Darch_$GOARCH"
+
+cp arch_$GOARCH.h arch_GOARCH.h
+cp defs_${GOOS}_$GOARCH.h defs_GOOS_GOARCH.h
+cp os_$GOOS.h os_GOOS.h
+cp signals_$GOOS.h signals_GOOS.h
+
cat <<'EOF'
// Assembly constants.
-// AUTOMATICALLY GENERATED BY mkasmh.sh DURING BUILD
+// AUTO-GENERATED by autogen.sh; DO NOT EDIT
EOF
@@ -91,6 +110,7 @@
esac
echo
+$CC $CFLAGS -a proc.c |
awk '
{ gsub(/\r/, ""); }
/^aggr G$/ { aggr="g" }
@@ -109,5 +129,6 @@
offset=$(NF-1);
printf("#define %s_%s %s\n", aggr, name, offset);
}
-' runtime.acid.$GOARCH
+'
+rm -f arch_GOARCH.h defs_GOOS_GOARCH.h os_GOOS.h signals_GOOS.h
diff --git a/src/pkg/runtime/mkgodefs.sh b/src/pkg/runtime/mkgodefs.sh
index b6e9721..1f9feac 100755
--- a/src/pkg/runtime/mkgodefs.sh
+++ b/src/pkg/runtime/mkgodefs.sh
@@ -5,10 +5,28 @@
set -e
+SYS=$1
+export GOOS=$(echo $SYS | sed 's/_.*//')
+export GOARCH=$(echo $SYS | sed 's/.*_//')
+shift
+
+case "$GOARCH" in
+386) CC=8c;;
+amd64) CC=6c;;
+arm) CC=5c;;
+esac
+export CC
+
+export CFLAGS="-DGOOS_$GOOS -DGOARCH_$GOARCH"
+
+cp arch_$GOARCH.h arch_GOARCH.h
+cp defs_${GOOS}_$GOARCH.h defs_GOOS_GOARCH.h
+cp os_$GOOS.h os_GOOS.h
+cp signals_$GOOS.h signals_GOOS.h
+
cat <<EOF
// Go definitions for C variables and types.
-// AUTOMATICALLY GENERATED BY THE FOLLOWING COMMAND. DO NOT EDIT.
-// CC="$CC" CFLAGS="$CFLAGS" ./mkgodefs.sh $@
+// AUTO-GENERATED by autogen.sh; DO NOT EDIT
package runtime
import "unsafe"
@@ -37,3 +55,5 @@
{print}
'
+
+rm -f arch_GOARCH.h defs_GOOS_GOARCH.h os_GOOS.h signals_GOOS.h
diff --git a/src/pkg/runtime/mkversion.c b/src/pkg/runtime/mkversion.c
index 0d96aa3..94ad0d9 100644
--- a/src/pkg/runtime/mkversion.c
+++ b/src/pkg/runtime/mkversion.c
@@ -1,8 +1,14 @@
+// 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.
+
+// +build ignore
+
#include <u.h>
#include <libc.h>
char *template =
- "// generated by mkversion.c; do not edit.\n"
+ "// AUTO-GENERATED by autogen.sh; DO NOT EDIT\n\n"
"package runtime\n"
"const defaultGoroot = `%s`\n"
"const theVersion = \"%s\"\n";
diff --git a/src/pkg/runtime/rt0_windows_amd64.s b/src/pkg/runtime/rt0_windows_amd64.s
index 5dc6b6e..dc1408a 100644
--- a/src/pkg/runtime/rt0_windows_amd64.s
+++ b/src/pkg/runtime/rt0_windows_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT _rt0_amd64_windows(SB),7,$-8
MOVQ $_rt0_amd64(SB), AX
diff --git a/src/pkg/runtime/signal_darwin_amd64.c b/src/pkg/runtime/signal_darwin_amd64.c
index fd75e78..c7621dd 100644
--- a/src/pkg/runtime/signal_darwin_amd64.c
+++ b/src/pkg/runtime/signal_darwin_amd64.c
@@ -152,7 +152,7 @@
sa.sa_flags |= SA_RESTART;
sa.sa_mask = ~0ULL;
sa.sa_tramp = runtime·sigtramp; // runtime·sigtramp's job is to call into real handler
- *(uintptr*)&sa.__sigaction_u = (uintptr)fn;
+ *(uintptr*)sa.__sigaction_u = (uintptr)fn;
runtime·sigaction(i, &sa, nil);
}
diff --git a/src/pkg/runtime/sys_darwin_386.s b/src/pkg/runtime/sys_darwin_386.s
index 9a51346..6ce1ba5 100644
--- a/src/pkg/runtime/sys_darwin_386.s
+++ b/src/pkg/runtime/sys_darwin_386.s
@@ -6,7 +6,7 @@
// See http://fxr.watson.org/fxr/source/bsd/kern/syscalls.c?v=xnu-1228
// or /usr/include/sys/syscall.h (on a Mac) for system call numbers.
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT runtime·notok(SB),7,$0
MOVL $0xf1, 0xf1
diff --git a/src/pkg/runtime/sys_darwin_amd64.s b/src/pkg/runtime/sys_darwin_amd64.s
index ac77765..86f9936 100644
--- a/src/pkg/runtime/sys_darwin_amd64.s
+++ b/src/pkg/runtime/sys_darwin_amd64.s
@@ -11,7 +11,7 @@
// The high 8 bits specify the kind of system call: 1=Mach, 2=BSD, 3=Machine-Dependent.
//
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$0
diff --git a/src/pkg/runtime/sys_freebsd_386.s b/src/pkg/runtime/sys_freebsd_386.s
index 9833784..cec7a3e 100644
--- a/src/pkg/runtime/sys_freebsd_386.s
+++ b/src/pkg/runtime/sys_freebsd_386.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT runtime·sys_umtx_op(SB),7,$-4
MOVL $454, AX
diff --git a/src/pkg/runtime/sys_freebsd_amd64.s b/src/pkg/runtime/sys_freebsd_amd64.s
index 991c33c..c96b2f4 100644
--- a/src/pkg/runtime/sys_freebsd_amd64.s
+++ b/src/pkg/runtime/sys_freebsd_amd64.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT runtime·sys_umtx_op(SB),7,$0
MOVQ 8(SP), DI
diff --git a/src/pkg/runtime/sys_linux_386.s b/src/pkg/runtime/sys_linux_386.s
index 1763143..b745bc5 100644
--- a/src/pkg/runtime/sys_linux_386.s
+++ b/src/pkg/runtime/sys_linux_386.s
@@ -6,7 +6,7 @@
// System calls and other sys.stuff for 386, Linux
//
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT runtime·exit(SB),7,$0
MOVL $252, AX // syscall number
diff --git a/src/pkg/runtime/sys_linux_amd64.s b/src/pkg/runtime/sys_linux_amd64.s
index d555186..ef7bb28 100644
--- a/src/pkg/runtime/sys_linux_amd64.s
+++ b/src/pkg/runtime/sys_linux_amd64.s
@@ -6,7 +6,7 @@
// System calls and other sys.stuff for AMD64, Linux
//
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
TEXT runtime·exit(SB),7,$0-8
MOVL 8(SP), DI
diff --git a/src/pkg/runtime/sys_linux_arm.s b/src/pkg/runtime/sys_linux_arm.s
index d0b36de..e0e4135 100644
--- a/src/pkg/runtime/sys_linux_arm.s
+++ b/src/pkg/runtime/sys_linux_arm.s
@@ -6,7 +6,7 @@
// System calls and other sys.stuff for arm, Linux
//
-#include "asm_arm.h"
+#include "zasm_GOOS_GOARCH.h"
// OABI
//#define SYS_BASE 0x00900000
diff --git a/src/pkg/runtime/sys_netbsd_386.s b/src/pkg/runtime/sys_netbsd_386.s
index bcb4fc5..6322861 100644
--- a/src/pkg/runtime/sys_netbsd_386.s
+++ b/src/pkg/runtime/sys_netbsd_386.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$-4
diff --git a/src/pkg/runtime/sys_netbsd_amd64.s b/src/pkg/runtime/sys_netbsd_amd64.s
index 2081771..7abeb15 100644
--- a/src/pkg/runtime/sys_netbsd_amd64.s
+++ b/src/pkg/runtime/sys_netbsd_amd64.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
// int64 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void));
TEXT runtime·rfork_thread(SB),7,$0
diff --git a/src/pkg/runtime/sys_openbsd_386.s b/src/pkg/runtime/sys_openbsd_386.s
index ae3275c..d49d32b 100644
--- a/src/pkg/runtime/sys_openbsd_386.s
+++ b/src/pkg/runtime/sys_openbsd_386.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$-4
diff --git a/src/pkg/runtime/sys_openbsd_amd64.s b/src/pkg/runtime/sys_openbsd_amd64.s
index f568ba4..5bf2e81 100644
--- a/src/pkg/runtime/sys_openbsd_amd64.s
+++ b/src/pkg/runtime/sys_openbsd_amd64.s
@@ -6,7 +6,7 @@
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
// int64 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void));
TEXT runtime·rfork_thread(SB),7,$0
diff --git a/src/pkg/runtime/sys_plan9_386.s b/src/pkg/runtime/sys_plan9_386.s
index 8c773ee..94c36aa 100644
--- a/src/pkg/runtime/sys_plan9_386.s
+++ b/src/pkg/runtime/sys_plan9_386.s
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
#include "defs_GOOS_GOARCH.h"
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
// setldt(int entry, int address, int limit)
TEXT runtime·setldt(SB),7,$0
diff --git a/src/pkg/runtime/sys_windows_386.s b/src/pkg/runtime/sys_windows_386.s
index 307b93d..c864c7f 100644
--- a/src/pkg/runtime/sys_windows_386.s
+++ b/src/pkg/runtime/sys_windows_386.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_386.h"
+#include "zasm_GOOS_GOARCH.h"
// void runtime·asmstdcall(void *c);
TEXT runtime·asmstdcall(SB),7,$0
diff --git a/src/pkg/runtime/sys_windows_amd64.s b/src/pkg/runtime/sys_windows_amd64.s
index 508759f..e2a5188 100644
--- a/src/pkg/runtime/sys_windows_amd64.s
+++ b/src/pkg/runtime/sys_windows_amd64.s
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "asm_amd64.h"
+#include "zasm_GOOS_GOARCH.h"
// maxargs should be divisible by 2, as Windows stack
// must be kept 16-byte aligned on syscall entry.