$(CC) $(CFLAGS) -I . -o "$@" _obj/$*.c
%.$O: %.s $(HFILES)
- $(AS) $(AFLAGS) $*.s
+ $(AS) $*.s
# 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\
- 5c\
- 6c\
- 8c\
+ $(O)c\
$(O)g\
$(O)l\
cc\
@echo
$(MAKE) -C $* install
-gc.install 5c.install 6c.install 8c.install: cc.install
+gc.install $(O)c.install: cc.install
$(O)g.install: gc.install
$(O)a.install $(O)c.install $(O)g.install: $(O)l.install
bash "$GOROOT"/src/clean.bash
# pkg builds libcgo and the Go programs in cmd.
-for i in lib9 libbio libmach cmd
+for i in lib9 libbio libmach cmd pkg
do
echo; echo; echo %%%% making $i %%%%; echo
gomake -C $i install
done
-echo; echo; echo %%%% making runtime generated files %%%%; echo
-gomake -C pkg/runtime -f Makefile.auto
-
-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.
include ../../Make.inc
-x:=$(shell gomake -f Makefile.auto)
+# Go tool will do this for package runtime.
+CFLAGS+=-DGOOS_$(GOOS) -DGOARCH_$(GOARCH)
TARG=runtime
error.go\
extern.go\
mem.go\
+ runtime_defs.go\
sig.go\
softfloat64.go\
type.go\
- zgoarch_$(GOARCH).go\
- zgoos_$(GOOS).go\
- zruntime_defs_$(GOOS)_$(GOARCH).go\
- zversion.go\
+ version.go\
+ version_$(GOOS).go\
+ version_$(GOARCH).go\
+
+CLEANFILES+=version.go version_*.go
OFILES_darwin=\
lock_sema.$O\
OFILES_windows=\
callback_windows_$(GOARCH).$O\
lock_sema.$O\
- zsyscall_windows_$(GOARCH).$O\
+ syscall_windows.$O\
# 386-specific object files
OFILES_386=\
traceback_x86.$O\
OFILES=\
- $(OFILES_$(GOARCH))\
- $(OFILES_$(GOOS))\
alg.$O\
asm_$(GOARCH).$O\
atomic_$(GOARCH).$O\
float.$O\
hashmap.$O\
iface.$O\
+ malloc.$O\
mcache.$O\
mcentral.$O\
mem_$(GOOS).$O\
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\
- zmalloc_$(GOARCH).$O\
- zmprof_$(GOARCH).$O\
- zruntime1_$(GOARCH).$O\
- zsema_$(GOARCH).$O\
- zsigqueue_$(GOARCH).$O\
- zstring_$(GOARCH).$O\
- ztime_$(GOARCH).$O\
+ time.$O\
+ $(OFILES_$(GOARCH))\
+ $(OFILES_$(GOOS))\
AUTOHFILES=\
arch_GOARCH.h\
hashmap.h\
malloc.h\
stack.h\
+ asm_$(GOARCH).h\
$(AUTOHFILES)\
GOFILES+=$(GOFILES_$(GOOS))
# 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+= -+
clean: clean-local
clean-local:
- rm -f $(AUTOHFILES)
- make -f Makefile.auto clean
+ 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 $@
arch_GOARCH.h: arch_$(GOARCH).h
cp $^ $@
signals_GOOS.h: signals_$(GOOS).h
cp $^ $@
-
-zasm_GOOS_GOARCH.h: zasm_$(GOOS)_$(GOARCH).h
- cp $^ $@
-
-%.$O: zasm_GOOS_GOARCH.h
+++ /dev/null
-# 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.
-
-include ../../Make.inc
-
-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\
-
-AUTO=\
- $(GOARCHES:%=zmalloc_%.c)\
- $(GOARCHES:%=zmprof_%.c)\
- $(GOARCHES:%=zruntime1_%.c)\
- $(GOARCHES:%=zsema_%.c)\
- $(GOARCHES:%=zsigqueue_%.c)\
- $(GOARCHES:%=zstring_%.c)\
- $(GOARCHES:%=ztime_%.c)\
- $(GOARCHES:%=zgoarch_%.go)\
- $(GOOSES:%=zgoos_%.go)\
- $(GOOSARCHES:%=zruntime_defs_%.go)\
- $(GOOSARCHES:%=zasm_%.h)\
- zsyscall_windows_386.c\
- zsyscall_windows_amd64.c\
- zversion.go\
-
-all: auto
-auto: $(AUTO)
-
-# .goc -> .c (specific to os/arch combination)
-goc2c: goc2c.c
- quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
-
-z%_386.c: %.goc goc2c
- GOARCH=386 ./goc2c "`pwd`/$<" >$@.tmp
- mv -f $@.tmp $@
-
-z%_amd64.c: %.goc goc2c
- GOARCH=amd64 ./goc2c "`pwd`/$<" >$@.tmp
- mv -f $@.tmp $@
-
-z%_arm.c: %.goc goc2c
- GOARCH=arm ./goc2c "`pwd`/$<" >$@.tmp
- mv -f $@.tmp $@
-
-# version files
-mkversion: mkversion.c ../../../lib/lib9.a
- quietgcc -o $@ -I "$(GOROOT)/include" $< "$(GOROOT)/lib/lib9.a"
-
-zversion.go: mkversion
- GOROOT="$(GOROOT_FINAL)" ./mkversion >$@
-
-zgoos_%.go:
- (echo '// AUTO-GENERATED; run make -f Makefile.auto'; echo; echo 'package runtime'; echo; echo 'const theGoos = "$*"') >$@
-
-zgoarch_%.go:
- (echo '// AUTO-GENERATED; run make -f Makefile.auto'; echo; echo 'package runtime'; echo; echo 'const theGoarch = "$*"') >$@
-
-# definitions of runtime structs, translated from C to Go
-zruntime_defs_%.go: proc.c iface.c hashmap.c chan.c mkgodefs.sh
- ./mkgodefs.sh $* proc.c iface.c hashmap.c chan.c >$@.tmp
- mv -f $@.tmp $@
-
-# struct field offsets #defined for assembly
-zasm_%.h: mkasmh.sh proc.c
- ./mkasmh.sh $* >$@.tmp
- mv -f $@.tmp $@
-
-clean:
- rm -f goc2c mkversion $(AUTO)
-
-# This file must not run targets in parallel:
-# mkgodefs.sh and mkasmh.sh scribble on the same files.
-# This is a magic name known to GNU make.
-.NOTPARALLEL:
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
TEXT _rt0_386(SB),7,$0
// Linux, Windows start the FPU in extended double precision.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
TEXT _rt0_amd64(SB),7,$-8
// copy arguments forward on an even stack
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_arm.h"
// using frame size $-4 means do not save LR on stack.
TEXT _rt0_arm(SB),7,$-4
// 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
// 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
// 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:
// 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.
// 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.
// 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
// 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.
// 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.
// 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.
// 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.
}
}
- printf("// AUTO-GENERATED; run make\n\n");
process_file();
exits(0);
}
// 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
// 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
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.
-// AUTO-GENERATED; run make -f Makefile.auto
+// AUTOMATICALLY GENERATED BY mkasmh.sh DURING BUILD
EOF
esac
echo
-$CC $CFLAGS -a proc.c |
awk '
{ gsub(/\r/, ""); }
/^aggr G$/ { aggr="g" }
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
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.
-// AUTO-GENERATED; run make -f Makefile.auto
+// AUTOMATICALLY GENERATED BY THE FOLLOWING COMMAND. DO NOT EDIT.
+// CC="$CC" CFLAGS="$CFLAGS" ./mkgodefs.sh $@
package runtime
import "unsafe"
{print}
'
-
-rm -f arch_GOARCH.h defs_GOOS_GOARCH.h os_GOOS.h signals_GOOS.h
-// 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 =
- "// AUTO-GENERATED; run make -f Makefile.auto\n\n"
+ "// generated by mkversion.c; do not edit.\n"
"package runtime\n"
"const defaultGoroot = `%s`\n"
"const theVersion = \"%s\"\n";
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
TEXT _rt0_amd64_windows(SB),7,$-8
MOVQ $_rt0_amd64(SB), AX
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);
}
// 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 "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
TEXT runtime·notok(SB),7,$0
MOVL $0xf1, 0xf1
// The high 8 bits specify the kind of system call: 1=Mach, 2=BSD, 3=Machine-Dependent.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$0
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
TEXT runtime·sys_umtx_op(SB),7,$-4
MOVL $454, AX
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
TEXT runtime·sys_umtx_op(SB),7,$0
MOVQ 8(SP), DI
// System calls and other sys.stuff for 386, Linux
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
TEXT runtime·exit(SB),7,$0
MOVL $252, AX // syscall number
// System calls and other sys.stuff for AMD64, Linux
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
TEXT runtime·exit(SB),7,$0-8
MOVL 8(SP), DI
// System calls and other sys.stuff for arm, Linux
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_arm.h"
// OABI
//#define SYS_BASE 0x00900000
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$-4
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
// int64 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void));
TEXT runtime·rfork_thread(SB),7,$0
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$-4
// /usr/src/sys/kern/syscalls.master for syscall numbers.
//
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
// int64 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void));
TEXT runtime·rfork_thread(SB),7,$0
// license that can be found in the LICENSE file.
#include "defs_GOOS_GOARCH.h"
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
// setldt(int entry, int address, int limit)
TEXT runtime·setldt(SB),7,$0
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_386.h"
// void runtime·asmstdcall(void *c);
TEXT runtime·asmstdcall(SB),7,$0
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-#include "zasm_GOOS_GOARCH.h"
+#include "asm_amd64.h"
// maxargs should be divisible by 2, as Windows stack
// must be kept 16-byte aligned on syscall entry.