]> Cypherpunks repositories - gostls13.git/commitdiff
lib9: enable on Plan 9
authorDavid du Colombier <0intro@gmail.com>
Thu, 13 Feb 2014 19:06:41 +0000 (20:06 +0100)
committerDavid du Colombier <0intro@gmail.com>
Thu, 13 Feb 2014 19:06:41 +0000 (20:06 +0100)
This change depends on CL 57170052.

LGTM=rsc
R=rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/60840049

44 files changed:
.hgignore
include/plan9/errno.h [new file with mode: 0644]
include/plan9/fmt.h [new file with mode: 0644]
include/plan9/libc.h
include/plan9/mklibc.rc [new file with mode: 0755]
include/plan9/stdarg.h [new file with mode: 0644]
include/plan9/utf.h [new file with mode: 0644]
src/cmd/dist/build.c
src/lib9/_exits.c
src/lib9/_p9dir.c
src/lib9/atoi.c
src/lib9/await.c
src/lib9/cleanname.c
src/lib9/create.c
src/lib9/ctime.c
src/lib9/dirfstat.c
src/lib9/dirfwstat.c
src/lib9/dirstat.c
src/lib9/dirwstat.c
src/lib9/dup.c
src/lib9/exec.c
src/lib9/execl.c
src/lib9/exitcode.c
src/lib9/exits.c
src/lib9/fmtlock2.c
src/lib9/getenv.c
src/lib9/getwd.c
src/lib9/jmp.c
src/lib9/main.c
src/lib9/nan.c
src/lib9/notify.c
src/lib9/nulldir.c
src/lib9/open.c
src/lib9/readn.c
src/lib9/rfork.c
src/lib9/run_plan9.c
src/lib9/seek.c
src/lib9/strecpy.c
src/lib9/sysfatal.c
src/lib9/tempdir_plan9.c
src/lib9/time.c
src/lib9/tokenize.c
src/libbio/bprint.c
src/make.rc

index 2f11d9c2333f97bb231eba149864ae9ff84b36b6..72d82910d9169bd128cbad733362e6f030d4b091 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -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
diff --git a/include/plan9/errno.h b/include/plan9/errno.h
new file mode 100644 (file)
index 0000000..1ed572a
--- /dev/null
@@ -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
diff --git a/include/plan9/fmt.h b/include/plan9/fmt.h
new file mode 100644 (file)
index 0000000..b4a4fe7
--- /dev/null
@@ -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*
index 798e47095ca401d64112686fb5c2d7bb25e94665..773edeee3f7623947c620ce0b9760f345767e5ec 100644 (file)
@@ -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
diff --git a/include/plan9/mklibc.rc b/include/plan9/mklibc.rc
new file mode 100755 (executable)
index 0000000..460ef1c
--- /dev/null
@@ -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
diff --git a/include/plan9/stdarg.h b/include/plan9/stdarg.h
new file mode 100644 (file)
index 0000000..b562a3a
--- /dev/null
@@ -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.
diff --git a/include/plan9/utf.h b/include/plan9/utf.h
new file mode 100644 (file)
index 0000000..03c26d6
--- /dev/null
@@ -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"
index 05462492269bd5b36932435b215978c25f94376e..661daf23dee775e512b1d0f694087d9dbc12887a 100644 (file)
@@ -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));
 
@@ -1159,19 +1161,6 @@ shouldbuild(char *file, char *dir)
        int i, j, ret;
        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);
index ea8ea74e2860298505a6811df670f6e373cbfcc1..af55181b9002ff50d30e23cb3e8952535bc4a296 100644 (file)
@@ -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
index d65edcfbfbf71a9c73bb9bf5bb9ffcac7d6351b6..6b5a04eadd5b393cc7bebfdf02c365a1115ac7fa 100644 (file)
@@ -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
index 3162b0117713791674788719009853266f6b84ec..5b002df75e464c84d49fa37acae74cd0f4f0f5f0 100644 (file)
@@ -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
index 690a61e5c68169087e79dcbf9e90daae7823dde5..dfb155b2435b2371c69cc46e4d6a23d38d7e0fda 100644 (file)
@@ -1,3 +1,4 @@
+// +build !plan9
 // +build !windows
 
 /*
index fee40388f9c6d2d753980ec4a9fcc4b1e3ccad56..cb8fce6a5f3580317415eb102d81fd252580bad4 100644 (file)
@@ -1,3 +1,5 @@
+// +build !plan9
+
 /*
 Inferno libkern/cleanname.c
 http://code.google.com/p/inferno-os/source/browse/libkern/cleanname.c
index d7023aea029ea016e856e6414fc1d3de1ffd24ea..4ac7f7d619bec79124185ffa4a5957f1c3c858ad 100644 (file)
@@ -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
index 6317b594bb55003e8be6a6b09c4b75f1ad9fbd87..e16ad4a5e51632cabac6b7fd3cd299c81fee0d97 100644 (file)
@@ -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>
index 8cc3384093de85cd8264aa2a1c84db0ebf242e05..c092a2a0725c2a620123580edd49133a4fadf933 100644 (file)
@@ -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
index e32ddeaea211c62945336359fccdb19c313a47ca..4666e21079df446f5eacfc75abd4a632b0d70450 100644 (file)
@@ -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
index df2f85bd0c9fa7e1a06d4c636c54043835931d2a..33f0d7cf26e58b10acf46040efa9edd2b59b1ea0 100644 (file)
@@ -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
index 9bf348af60b6a986e2eaf09a6f83ba7d9d03e768..22e25fff7b770b1138dfc32d1d92edab6f9981c6 100644 (file)
@@ -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
index 9fdfdb8d1505de149831dfe9786040a94a31d984..5cac831d6862f1e40d3345765c51f6f99ef4ca23 100644 (file)
@@ -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
index f2ad0f9b3b5603d8d20ab98346fbb9d7ea409a14..8e5fc57848e554d6b0defc3649b29b1b1f43daf8 100644 (file)
@@ -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
index 81d3158836a127cacad898a0b1743e329bb80f57..fd4d23daaf513a8a0ddd175034db2aea2b9fab20 100644 (file)
@@ -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
index a952b2da29dc9656f7be243d8407761950709b5f..fc863445f5ea9f8de54e499507e129208cec916f 100644 (file)
@@ -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
index 5caef830928f4d15b3a88e883f10d11c0b7c0559..0be7cb9f10531a6a9f80b087fd3eb801d976e127 100644 (file)
@@ -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
index 75406b5d16d28bcc8fc4e1be66507591ba84e514..a0e2636ec83c94c13680b0557091ec38fc824585 100644 (file)
@@ -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
index 9d805b5167002a0f96c5bc025a28dd012e0b9fda..2454b6b4167d0c95b840d7fe9aa424fb12249f6e 100644 (file)
@@ -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
index cbfd9d643b71294aeae2063248aa78aadf0db921..03a8ff1a2f500fed0b199e9a10247400fa28f66a 100644 (file)
@@ -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
index c44e040d21bd5b68bfcc90607e126e246cd87ff6..733ed70e96ad663b6a865b56a207049386ff77b4 100644 (file)
@@ -1,3 +1,4 @@
+// +build !plan9
 // +build !windows
 
 /*
index 816494af03a4eb9ced44ca2e4056f012a5d839a7..6de53c10ab3e555d6cb51e750c19b90405c205e2 100644 (file)
@@ -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
index fa2277f72f66132ce5977690c85f4d3083aa8af3..f17b441aae6ab229ff8af3e67bb0c126586aa2d4 100644 (file)
@@ -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
index c424aed54a89bbc51c21529b55b92b2f3ac692fc..7843d347135890e6688e733533927cd255323aba 100644 (file)
@@ -1,3 +1,4 @@
+// +build !plan9
 // +build !windows
 
 /*
index aa1a1232ea03a10c4879944f708f9e861acb8479..2157ff313d8e72fd5907292f670ed3b49a316991 100644 (file)
@@ -1,3 +1,5 @@
+// +build !plan9
+
 /*
 Inferno lib9/nulldir.c
 http://code.google.com/p/inferno-os/source/browse/lib9/nulldir.c
index 4ac81ba5fa93c828148fa98c293226aa7475c4e5..7f53c8ea645be353f732d3a28a86f64f8e41d578 100644 (file)
@@ -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
index 3c80a4fc04f15cb67d51c362755e849901ba4caf..7dfe9e515d84004996c265cb422ab538bc5fb11c 100644 (file)
@@ -1,3 +1,5 @@
+// +build !plan9
+
 /*
 Inferno lib9/readn.c
 http://code.google.com/p/inferno-os/source/browse/lib9/readn.c
index c4ae90f97d1d372fb1b0f3ccdf2e4ecb8720d5de..23b3ee67196bac8b33887ce6797168fbfaecd2a6 100644 (file)
@@ -1,3 +1,4 @@
+// +build !plan9
 // +build !windows
 
 /*
index cd85652f791496890fef22d07f23d90d91f06434..29932626dc976d389e44940ddd5301e7df29dd24 100644 (file)
@@ -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>
 
index 917003808d54f0562daaddc674809985fe22ffc5..0a0706cbeec2ef5e8a8cc1236c0759fd3b470f52 100644 (file)
@@ -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
index 03dc6ea502ce96934ace47a2e16fbd8d862713ee..4b2b92b43d95199e88cf2986e7c870c29e5a6559 100644 (file)
@@ -1,3 +1,5 @@
+// +build !plan9
+
 /*
 Inferno lib9/strecpy.c
 http://code.google.com/p/inferno-os/source/browse/lib9/strecpy.c
index a5af3e1b48d7973cc831ab9a578bb6ac127348ac..9789061a881d4441571dab2139e28f016d19468e 100644 (file)
@@ -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
index 092d00d16721cccb25f7f8d4cb672e365de55103..80d7ddbe4bbe1b3afd127bead035a2c325cd22f5 100644 (file)
@@ -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>
 
index 7394e9e603729ba80210e3fbcf9a52ca2f51a21c..e1b87a774066e9487ca21b4c520cf69a06dc07ce 100644 (file)
@@ -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
index a9b5935670e830e21eba41e79ebfca039a3fe5fc..a095fcda9c3b8e47f8c2103d8cfdf926392698c9 100644 (file)
@@ -1,3 +1,5 @@
+// +build !plan9
+
 /*
 Inferno lib9/tokenize.c
 http://code.google.com/p/inferno-os/source/browse/lib9/tokenize.c
index 06748e7ac3c805defded1d48b1deaa1918a524d9..301dc0c7f34c87a192db5cf9be2a9a8bdc23ec41 100644 (file)
@@ -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;
index 222bb8a186292d3432b5caee1ea0ed248d6cfb56..ab152c0db1067b7aed2a2f6edf14966e29fd50e6 100755 (executable)
@@ -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