mirror of
https://github.com/golang/go
synced 2024-11-26 18:16:48 -07:00
lib9: enable on Plan 9
This change depends on CL 57170052. LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/60840049
This commit is contained in:
parent
705d7c164f
commit
174b8c95f5
@ -25,6 +25,7 @@ build.out
|
||||
test.out
|
||||
doc/tmpltohtml
|
||||
doc/articles/wiki/*.bin
|
||||
include/plan9/libc_plan9.h
|
||||
misc/cgo/life/run.out
|
||||
misc/cgo/stdio/run.out
|
||||
misc/cgo/testso/main
|
||||
|
7
include/plan9/errno.h
Normal file
7
include/plan9/errno.h
Normal file
@ -0,0 +1,7 @@
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
int errno;
|
||||
|
||||
#define ERANGE 1001
|
64
include/plan9/fmt.h
Normal file
64
include/plan9/fmt.h
Normal file
@ -0,0 +1,64 @@
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#include "../fmt.h"
|
||||
|
||||
#pragma varargck argpos fmtprint 2
|
||||
#pragma varargck argpos fprint 2
|
||||
#pragma varargck argpos print 1
|
||||
#pragma varargck argpos runeseprint 3
|
||||
#pragma varargck argpos runesmprint 1
|
||||
#pragma varargck argpos runesnprint 3
|
||||
#pragma varargck argpos runesprint 2
|
||||
#pragma varargck argpos seprint 3
|
||||
#pragma varargck argpos smprint 1
|
||||
#pragma varargck argpos snprint 3
|
||||
#pragma varargck argpos sprint 2
|
||||
|
||||
#pragma varargck type "lld" vlong
|
||||
#pragma varargck type "llo" vlong
|
||||
#pragma varargck type "llx" vlong
|
||||
#pragma varargck type "llb" vlong
|
||||
#pragma varargck type "lld" uvlong
|
||||
#pragma varargck type "llo" uvlong
|
||||
#pragma varargck type "llx" uvlong
|
||||
#pragma varargck type "llb" uvlong
|
||||
#pragma varargck type "ld" long
|
||||
#pragma varargck type "lo" long
|
||||
#pragma varargck type "lx" long
|
||||
#pragma varargck type "lb" long
|
||||
#pragma varargck type "ld" ulong
|
||||
#pragma varargck type "lo" ulong
|
||||
#pragma varargck type "lx" ulong
|
||||
#pragma varargck type "lb" ulong
|
||||
#pragma varargck type "d" int
|
||||
#pragma varargck type "o" int
|
||||
#pragma varargck type "x" int
|
||||
#pragma varargck type "c" int
|
||||
#pragma varargck type "C" int
|
||||
#pragma varargck type "b" int
|
||||
#pragma varargck type "d" uint
|
||||
#pragma varargck type "x" uint
|
||||
#pragma varargck type "c" uint
|
||||
#pragma varargck type "C" uint
|
||||
#pragma varargck type "b" uint
|
||||
#pragma varargck type "f" double
|
||||
#pragma varargck type "e" double
|
||||
#pragma varargck type "g" double
|
||||
#pragma varargck type "s" char*
|
||||
#pragma varargck type "q" char*
|
||||
#pragma varargck type "S" Rune*
|
||||
#pragma varargck type "Q" Rune*
|
||||
#pragma varargck type "r" void
|
||||
#pragma varargck type "%" void
|
||||
#pragma varargck type "n" int*
|
||||
#pragma varargck type "p" uintptr
|
||||
#pragma varargck type "p" void*
|
||||
#pragma varargck flag ','
|
||||
#pragma varargck flag ' '
|
||||
#pragma varargck flag 'h'
|
||||
#pragma varargck type "<" void*
|
||||
#pragma varargck type "[" void*
|
||||
#pragma varargck type "H" void*
|
||||
#pragma varargck type "lH" void*
|
@ -2,8 +2,10 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#include "/sys/include/libc.h"
|
||||
#include "/sys/include/ctype.h"
|
||||
#include "fmt.h"
|
||||
#include "utf.h"
|
||||
#include "libc_plan9.h"
|
||||
|
||||
char* getgoos(void);
|
||||
char* getgoarch(void);
|
||||
@ -26,3 +28,6 @@ void flagprint(int);
|
||||
// The libraries use size_t to avoid -Wconversion warnings from GCC
|
||||
// when calling standard library functions like memcpy.
|
||||
typedef unsigned long size_t;
|
||||
|
||||
// math.h
|
||||
#define HUGE_VAL 1.79769313486231e+308
|
||||
|
13
include/plan9/mklibc.rc
Executable file
13
include/plan9/mklibc.rc
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/rc
|
||||
|
||||
pattern='/umuldiv/d
|
||||
/UTFmax/d
|
||||
/Runesync/d
|
||||
/Runeself/d
|
||||
/Runeerror/d
|
||||
/Runemax/d
|
||||
/rune routines/,/^\/\*/d
|
||||
/print routines/,/^\/\*/d
|
||||
/error string for/,/^\/\*/d'
|
||||
|
||||
sed -e $pattern /sys/include/libc.h
|
3
include/plan9/stdarg.h
Normal file
3
include/plan9/stdarg.h
Normal file
@ -0,0 +1,3 @@
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
5
include/plan9/utf.h
Normal file
5
include/plan9/utf.h
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#include "../utf.h"
|
19
src/cmd/dist/build.c
vendored
19
src/cmd/dist/build.c
vendored
@ -968,13 +968,15 @@ install(char *dir)
|
||||
vadd(&compile, "-m64");
|
||||
else if(streq(gohostarch, "386"))
|
||||
vadd(&compile, "-m32");
|
||||
if(streq(dir, "lib9"))
|
||||
vadd(&compile, "-DPLAN9PORT");
|
||||
|
||||
vadd(&compile, "-I");
|
||||
vadd(&compile, bpathf(&b, "%s/include", goroot));
|
||||
}
|
||||
|
||||
if(streq(dir, "lib9"))
|
||||
vadd(&compile, "-DPLAN9PORT");
|
||||
|
||||
|
||||
vadd(&compile, "-I");
|
||||
vadd(&compile, bstr(&path));
|
||||
|
||||
@ -1160,19 +1162,6 @@ shouldbuild(char *file, char *dir)
|
||||
Buf b;
|
||||
Vec lines, fields;
|
||||
|
||||
// On Plan 9, most of the libraries are already present.
|
||||
// The main exception is libmach which has been modified
|
||||
// in various places to support Go object files.
|
||||
if(streq(gohostos, "plan9")) {
|
||||
if(streq(dir, "lib9")) {
|
||||
name = lastelem(file);
|
||||
if(streq(name, "goos.c") || streq(name, "flag.c"))
|
||||
return 1;
|
||||
if(!contains(name, "plan9"))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Check file name for GOOS or GOARCH.
|
||||
name = lastelem(file);
|
||||
for(i=0; i<nelem(okgoos); i++)
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/_exits.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/_exits.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/_p9dir.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/_p9dir.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/ato*.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/atoi.c
|
||||
|
@ -1,3 +1,4 @@
|
||||
// +build !plan9
|
||||
// +build !windows
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Inferno libkern/cleanname.c
|
||||
http://code.google.com/p/inferno-os/source/browse/libkern/cleanname.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/create.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/create.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 !plan9
|
||||
|
||||
#define NOPLAN9DEFINES
|
||||
#include <u.h>
|
||||
#include <libc.h>
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/dirfstat.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/dirfstat.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/dirfwstat.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/dirfwstat.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/dirstat.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/dirstat.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/dirwstat.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/dirwstat.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/dup.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/dup.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/exec.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/exec.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/execl.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/execl.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/exitcode.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/exitcode.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/_exits.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/_exits.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/fmtlock2.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/fmtlock2.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/getenv.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/getenv.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/getwd.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/getwd.c
|
||||
|
@ -1,3 +1,4 @@
|
||||
// +build !plan9
|
||||
// +build !windows
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/main.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/main.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/nan.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/nan.c
|
||||
|
@ -1,3 +1,4 @@
|
||||
// +build !plan9
|
||||
// +build !windows
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Inferno lib9/nulldir.c
|
||||
http://code.google.com/p/inferno-os/source/browse/lib9/nulldir.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/open.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/open.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Inferno lib9/readn.c
|
||||
http://code.google.com/p/inferno-os/source/browse/lib9/readn.c
|
||||
|
@ -1,3 +1,4 @@
|
||||
// +build !plan9
|
||||
// +build !windows
|
||||
|
||||
/*
|
||||
|
@ -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 plan9
|
||||
|
||||
#include <u.h>
|
||||
#include <libc.h>
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/seek.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/seek.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Inferno lib9/strecpy.c
|
||||
http://code.google.com/p/inferno-os/source/browse/lib9/strecpy.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/sysfatal.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/sysfatal.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 plan9
|
||||
|
||||
#include <u.h>
|
||||
#include <libc.h>
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Plan 9 from User Space src/lib9/time.c
|
||||
http://code.swtch.com/plan9port/src/tip/src/lib9/time.c
|
||||
|
@ -1,3 +1,5 @@
|
||||
// +build !plan9
|
||||
|
||||
/*
|
||||
Inferno lib9/tokenize.c
|
||||
http://code.google.com/p/inferno-os/source/browse/lib9/tokenize.c
|
||||
|
@ -67,9 +67,7 @@ Bvprint(Biobuf *bp, char *fmt, va_list arg)
|
||||
Fmt f;
|
||||
|
||||
memset(&f, 0, sizeof f);
|
||||
#ifndef PLAN9
|
||||
fmtlocaleinit(&f, nil, nil, nil);
|
||||
#endif
|
||||
f.stop = bp->ebuf;
|
||||
f.to = (char*)f.stop + bp->ocount;
|
||||
f.flush = bflush;
|
||||
|
@ -36,6 +36,9 @@ if(! test -f run.rc){
|
||||
exit wrongdir
|
||||
}
|
||||
|
||||
# Generate libc_plan9.h.
|
||||
../include/plan9/mklibc.rc > ../include/plan9/libc_plan9.h
|
||||
|
||||
# Clean old generated file that will cause problems in the build.
|
||||
rm -f ./pkg/runtime/runtime_defs.go
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user