summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/1a/a.h30
-rw-r--r--sys/src/cmd/1a/mkfile1
-rw-r--r--sys/src/cmd/1c/mkfile1
-rw-r--r--sys/src/cmd/1l/compat.c56
-rw-r--r--sys/src/cmd/1l/l.h10
-rw-r--r--sys/src/cmd/1l/mkfile3
-rw-r--r--sys/src/cmd/1l/obj.c22
-rw-r--r--sys/src/cmd/2a/a.h31
-rw-r--r--sys/src/cmd/2a/mkfile1
-rw-r--r--sys/src/cmd/2c/mkfile1
-rw-r--r--sys/src/cmd/2l/compat.c56
-rw-r--r--sys/src/cmd/2l/l.h10
-rw-r--r--sys/src/cmd/2l/mkfile3
-rw-r--r--sys/src/cmd/2l/obj.c22
-rw-r--r--sys/src/cmd/5a/a.h27
-rw-r--r--sys/src/cmd/5a/mkfile3
-rw-r--r--sys/src/cmd/5c/mkfile1
-rw-r--r--sys/src/cmd/5l/compat.c56
-rw-r--r--sys/src/cmd/5l/l.h10
-rw-r--r--sys/src/cmd/5l/mkfile3
-rw-r--r--sys/src/cmd/5l/obj.c22
-rw-r--r--sys/src/cmd/6a/a.h31
-rw-r--r--sys/src/cmd/6a/mkfile1
-rw-r--r--sys/src/cmd/6c/mkfile1
-rw-r--r--sys/src/cmd/6l/compat.c55
-rw-r--r--sys/src/cmd/6l/l.h10
-rw-r--r--sys/src/cmd/6l/mkfile1
-rw-r--r--sys/src/cmd/6l/obj.c22
-rw-r--r--sys/src/cmd/7a/a.h28
-rw-r--r--sys/src/cmd/7a/mkfile4
-rw-r--r--sys/src/cmd/7c/mkfile1
-rw-r--r--sys/src/cmd/7l/compat.c56
-rw-r--r--sys/src/cmd/7l/l.h10
-rw-r--r--sys/src/cmd/7l/mkfile3
-rw-r--r--sys/src/cmd/7l/obj.c22
-rw-r--r--sys/src/cmd/8a/a.h30
-rw-r--r--sys/src/cmd/8a/mkfile1
-rw-r--r--sys/src/cmd/8c/mkfile1
-rw-r--r--sys/src/cmd/8l/compat.c56
-rw-r--r--sys/src/cmd/8l/l.h10
-rw-r--r--sys/src/cmd/8l/mkfile2
-rw-r--r--sys/src/cmd/8l/obj.c22
-rw-r--r--sys/src/cmd/cc/cc.h32
-rw-r--r--sys/src/cmd/cc/compat115
-rw-r--r--sys/src/cmd/cc/compat.c60
-rw-r--r--sys/src/cmd/cc/compat.h35
-rw-r--r--sys/src/cmd/cc/lex.c39
-rw-r--r--sys/src/cmd/cc/lexbody39
-rw-r--r--sys/src/cmd/cc/mac.c1
-rw-r--r--sys/src/cmd/cc/macbody19
-rw-r--r--sys/src/cmd/cc/mkfile5
-rw-r--r--sys/src/cmd/ka/a.h32
-rw-r--r--sys/src/cmd/ka/mkfile1
-rw-r--r--sys/src/cmd/kc/mkfile1
-rw-r--r--sys/src/cmd/kl/compat.c56
-rw-r--r--sys/src/cmd/kl/l.h10
-rw-r--r--sys/src/cmd/kl/mkfile4
-rw-r--r--sys/src/cmd/kl/obj.c25
-rw-r--r--sys/src/cmd/qa/a.h29
-rw-r--r--sys/src/cmd/qa/mkfile1
-rw-r--r--sys/src/cmd/qc/mkfile1
-rw-r--r--sys/src/cmd/ql/compat.c56
-rw-r--r--sys/src/cmd/ql/l.h10
-rw-r--r--sys/src/cmd/ql/mkfile2
-rw-r--r--sys/src/cmd/ql/obj.c25
-rw-r--r--sys/src/cmd/va/a.h32
-rw-r--r--sys/src/cmd/va/mkfile1
-rw-r--r--sys/src/cmd/vc/mkfile1
-rw-r--r--sys/src/cmd/vl/compat.c56
-rw-r--r--sys/src/cmd/vl/l.h9
-rw-r--r--sys/src/cmd/vl/mkfile3
-rw-r--r--sys/src/cmd/vl/obj.c22
72 files changed, 228 insertions, 1230 deletions
diff --git a/sys/src/cmd/1a/a.h b/sys/src/cmd/1a/a.h
index d9abec361..f0e2443a2 100644
--- a/sys/src/cmd/1a/a.h
+++ b/sys/src/cmd/1a/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../2c/2.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Ref Ref;
@@ -113,14 +110,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -132,11 +127,9 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
int assemble(char*);
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -172,28 +165,7 @@ void macend(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2,
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/1a/mkfile b/sys/src/cmd/1a/mkfile
index 75546380e..1b807abc4 100644
--- a/sys/src/cmd/1a/mkfile
+++ b/sys/src/cmd/1a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../2c/2.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/1c/mkfile b/sys/src/cmd/1c/mkfile
index 9cde57437..76d8350f0 100644
--- a/sys/src/cmd/1c/mkfile
+++ b/sys/src/cmd/1c/mkfile
@@ -15,6 +15,7 @@ OFILES=\
HFILES=\
gc.h\
../2c/2.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/1l/compat.c b/sys/src/cmd/1l/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/1l/compat.c
+++ b/sys/src/cmd/1l/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/1l/l.h b/sys/src/cmd/1l/l.h
index 72cedf3bd..75da18506 100644
--- a/sys/src/cmd/1l/l.h
+++ b/sys/src/cmd/1l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../2c/2.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define P ((Prog*)0)
#define S ((Sym*)0)
@@ -178,7 +175,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -187,7 +183,6 @@ EXTERN long lcsize;
EXTERN long relocsize;
EXTERN long ndata;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long nsymbol;
EXTERN char* noname;
EXTERN short* op;
@@ -200,7 +195,6 @@ EXTERN Sym* symlist;
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN Prog zprg;
@@ -240,7 +234,6 @@ void errorexit(void);
int find1(long, int);
int find2(long, int);
void follow(void);
-void gethunk(void);
int gnuxi(Ieee*, int, int);
void histtoauto(void);
double ieeedtod(Ieee*);
@@ -254,7 +247,6 @@ Sym* lookup(char*, int);
void lput(long);
void main(int, char*[]);
void mkfwd(void);
-void* mysbrk(ulong);
void nuxiinit(void);
void objfile(char*);
void patch(void);
diff --git a/sys/src/cmd/1l/mkfile b/sys/src/cmd/1l/mkfile
index c56fcb5e6..7c280cb7f 100644
--- a/sys/src/cmd/1l/mkfile
+++ b/sys/src/cmd/1l/mkfile
@@ -14,9 +14,12 @@ OFILES=\
HFILES=\
l.h\
../2c/2.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
enam.$O: ../2c/enam.c
$CC $CFLAGS ../2c/enam.c
+
+compat.$O: ../cc/compat
diff --git a/sys/src/cmd/1l/obj.c b/sys/src/cmd/1l/obj.c
index 9cc82a56e..094e17101 100644
--- a/sys/src/cmd/1l/obj.c
+++ b/sys/src/cmd/1l/obj.c
@@ -1083,28 +1083,6 @@ copyp(Prog *q)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/2a/a.h b/sys/src/cmd/2a/a.h
index 68cd1e8dc..798b2a1d7 100644
--- a/sys/src/cmd/2a/a.h
+++ b/sys/src/cmd/2a/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../2c/2.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Ref Ref;
@@ -115,14 +112,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -134,10 +129,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -173,29 +166,7 @@ void macend(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/2a/mkfile b/sys/src/cmd/2a/mkfile
index f5584a7e5..73ccb3d20 100644
--- a/sys/src/cmd/2a/mkfile
+++ b/sys/src/cmd/2a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../2c/2.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/2c/mkfile b/sys/src/cmd/2c/mkfile
index 662466050..7009bbf37 100644
--- a/sys/src/cmd/2c/mkfile
+++ b/sys/src/cmd/2c/mkfile
@@ -15,6 +15,7 @@ OFILES=\
HFILES=\
gc.h\
2.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/2l/compat.c b/sys/src/cmd/2l/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/2l/compat.c
+++ b/sys/src/cmd/2l/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/2l/l.h b/sys/src/cmd/2l/l.h
index a0899c0f5..0e4f519d7 100644
--- a/sys/src/cmd/2l/l.h
+++ b/sys/src/cmd/2l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../2c/2.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define P ((Prog*)0)
#define S ((Sym*)0)
@@ -168,7 +165,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -177,7 +173,6 @@ EXTERN long lcsize;
EXTERN long ncase;
EXTERN long ndata;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long nsymbol;
EXTERN char* noname;
EXTERN short* op;
@@ -190,7 +185,6 @@ EXTERN Sym* symlist;
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN Prog zprg;
@@ -238,7 +232,6 @@ void errorexit(void);
int find1(long, int);
int find2(long, int);
void follow(void);
-void gethunk(void);
int gnuxi(Ieee*, int, int);
void histtoauto(void);
double ieeedtod(Ieee*);
@@ -250,7 +243,6 @@ Sym* lookup(char*, int);
void lput(long);
void main(int, char*[]);
void mkfwd(void);
-void* mysbrk(ulong);
void nuxiinit(void);
void objfile(char*);
void patch(void);
diff --git a/sys/src/cmd/2l/mkfile b/sys/src/cmd/2l/mkfile
index 569cdd482..f1b21f613 100644
--- a/sys/src/cmd/2l/mkfile
+++ b/sys/src/cmd/2l/mkfile
@@ -14,9 +14,12 @@ OFILES=\
HFILES=\
l.h\
../2c/2.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
enam.$O: ../2c/enam.c
$CC $CFLAGS ../2c/enam.c
+
+compat.$O: ../cc/compat
diff --git a/sys/src/cmd/2l/obj.c b/sys/src/cmd/2l/obj.c
index 411d2a5f5..aa050520b 100644
--- a/sys/src/cmd/2l/obj.c
+++ b/sys/src/cmd/2l/obj.c
@@ -1105,28 +1105,6 @@ appendp(Prog *q)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/5a/a.h b/sys/src/cmd/5a/a.h
index 08ea625a9..0e07a1e10 100644
--- a/sys/src/cmd/5a/a.h
+++ b/sys/src/cmd/5a/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../5c/5.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Gen Gen;
@@ -96,14 +93,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -115,11 +110,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* alloc(long);
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -160,20 +152,3 @@ void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2,
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-int myfork(void);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/5a/mkfile b/sys/src/cmd/5a/mkfile
index 1933aae09..cfd14dde9 100644
--- a/sys/src/cmd/5a/mkfile
+++ b/sys/src/cmd/5a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../5c/5.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
@@ -16,4 +17,4 @@ BIN=/$objtype/bin
< /sys/src/cmd/mkone
YFLAGS=-D1 -d
-lex.$O: ../cc/macbody ../cc/lexbody
+lex.$O: ../cc/macbody ../cc/lexbody ../cc/compat
diff --git a/sys/src/cmd/5c/mkfile b/sys/src/cmd/5c/mkfile
index 4568da282..0c58b8f8f 100644
--- a/sys/src/cmd/5c/mkfile
+++ b/sys/src/cmd/5c/mkfile
@@ -18,6 +18,7 @@ OFILES=\
HFILES=\
gc.h\
5.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/5l/compat.c b/sys/src/cmd/5l/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/5l/compat.c
+++ b/sys/src/cmd/5l/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/5l/l.h b/sys/src/cmd/5l/l.h
index 8a45a7a7a..32ac95450 100644
--- a/sys/src/cmd/5l/l.h
+++ b/sys/src/cmd/5l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../5c/5.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define LIBNAMELEN 300
@@ -252,7 +249,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -260,7 +256,6 @@ EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN char literal[32];
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long instoffset;
EXTERN Opcross opcross[8];
EXTERN Oprang oprange[ALAST];
@@ -270,7 +265,6 @@ EXTERN uchar repop[ALAST];
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN char xcmp[C_GOK+1][C_GOK+1];
EXTERN Prog zprg;
@@ -349,7 +343,6 @@ int fileexists(char*);
int find1(long, int);
char* findlib(char*);
void follow(void);
-void gethunk(void);
void histtoauto(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
@@ -363,7 +356,6 @@ void cput(int);
void lput(long);
void lputl(long);
void mkfwd(void);
-void* mysbrk(ulong);
void names(void);
void nocache(Prog*);
void nuxiinit(void);
diff --git a/sys/src/cmd/5l/mkfile b/sys/src/cmd/5l/mkfile
index 829dd12a2..a360441e9 100644
--- a/sys/src/cmd/5l/mkfile
+++ b/sys/src/cmd/5l/mkfile
@@ -15,6 +15,7 @@ OFILES=\
HFILES=\
l.h\
../5c/5.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
@@ -25,5 +26,7 @@ BIN=/$objtype/bin
enam.$O: ../5c/enam.c
$CC $CFLAGS ../5c/enam.c
+compat.$O: ../cc/compat
+
x:V: $O.out
$O.out -la -o/dev/null x.5
diff --git a/sys/src/cmd/5l/obj.c b/sys/src/cmd/5l/obj.c
index c10d4b8dd..9aabb6d7e 100644
--- a/sys/src/cmd/5l/obj.c
+++ b/sys/src/cmd/5l/obj.c
@@ -1136,28 +1136,6 @@ prg(void)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/6a/a.h b/sys/src/cmd/6a/a.h
index 9c9833348..709059056 100644
--- a/sys/src/cmd/6a/a.h
+++ b/sys/src/cmd/6a/a.h
@@ -2,11 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../6c/6.out.h"
-
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Ref Ref;
@@ -109,14 +105,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -128,10 +122,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -168,28 +160,7 @@ void macend(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * Posix.c/Inferno.c/Nt.c
- */
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/6a/mkfile b/sys/src/cmd/6a/mkfile
index 77b215cdb..03af77a48 100644
--- a/sys/src/cmd/6a/mkfile
+++ b/sys/src/cmd/6a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../6c/6.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/6c/mkfile b/sys/src/cmd/6c/mkfile
index fbcdc08e9..c08793107 100644
--- a/sys/src/cmd/6c/mkfile
+++ b/sys/src/cmd/6c/mkfile
@@ -19,6 +19,7 @@ OFILES=\
HFILES=\
gc.h\
6.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/6l/compat.c b/sys/src/cmd/6l/compat.c
index 2d2a9631b..54ac0283e 100644
--- a/sys/src/cmd/6l/compat.c
+++ b/sys/src/cmd/6l/compat.c
@@ -1,55 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void*, ulong)
-{
- fprint(2, "realloc called\n");
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void*, uintptr)
-{
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/6l/l.h b/sys/src/cmd/6l/l.h
index 6eaa603c6..ee96b51ea 100644
--- a/sys/src/cmd/6l/l.h
+++ b/sys/src/cmd/6l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../6c/6.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define P ((Prog*)0)
#define S ((Sym*)0)
@@ -279,7 +276,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN uchar inuxi1[1];
EXTERN uchar inuxi2[2];
EXTERN uchar inuxi4[4];
@@ -293,7 +289,6 @@ EXTERN int regrex[D_NONE+1];
EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long nsymbol;
EXTERN char* noname;
EXTERN char* outfile;
@@ -303,7 +298,6 @@ EXTERN Sym* symlist;
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN vlong textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN Prog zprg;
EXTERN int dtype;
@@ -358,7 +352,6 @@ int find1(long, int);
int find1v(vlong, int);
int find2(long, int);
void follow(void);
-void gethunk(void);
void histtoauto(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
@@ -371,7 +364,6 @@ void lput(long);
void lputl(long);
void main(int, char*[]);
void mkfwd(void);
-void* mysbrk(ulong);
void nuxiinit(void);
void objfile(char*);
int opsize(Prog*);
diff --git a/sys/src/cmd/6l/mkfile b/sys/src/cmd/6l/mkfile
index 984224472..ed6c756b0 100644
--- a/sys/src/cmd/6l/mkfile
+++ b/sys/src/cmd/6l/mkfile
@@ -29,3 +29,4 @@ UPDATE=\
enam.$O: ../6c/enam.c
$CC $CFLAGS ../6c/enam.c
+compat.$O: ../cc/compat
diff --git a/sys/src/cmd/6l/obj.c b/sys/src/cmd/6l/obj.c
index 5483eebae..71824398d 100644
--- a/sys/src/cmd/6l/obj.c
+++ b/sys/src/cmd/6l/obj.c
@@ -1206,28 +1206,6 @@ appendp(Prog *q)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/7a/a.h b/sys/src/cmd/7a/a.h
index 3ef0f1a96..306a3a285 100644
--- a/sys/src/cmd/7a/a.h
+++ b/sys/src/cmd/7a/a.h
@@ -5,13 +5,10 @@
#include <libc.h>
#include <bio.h>
#include "../7c/7.out.h"
+#include "../cc/compat.h"
typedef vlong int64;
-#ifndef EXTERN
-#define EXTERN extern
-#endif
-
typedef struct Sym Sym;
typedef struct Gen Gen;
typedef struct Io Io;
@@ -101,14 +98,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -120,11 +115,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* alloc(long);
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -161,25 +153,7 @@ void outhist(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2,
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-int myfork(void);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/7a/mkfile b/sys/src/cmd/7a/mkfile
index e48fbea48..66988b36f 100644
--- a/sys/src/cmd/7a/mkfile
+++ b/sys/src/cmd/7a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../7c/7.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
@@ -16,4 +17,5 @@ BIN=/$objtype/bin
< /sys/src/cmd/mkone
YFLAGS=-D1 -d
-lex.$O: ../cc/macbody ../cc/lexbody
+lex.$O: ../cc/macbody ../cc/lexbody ../cc/compat
+
diff --git a/sys/src/cmd/7c/mkfile b/sys/src/cmd/7c/mkfile
index c6ffe8503..98d9d5ff9 100644
--- a/sys/src/cmd/7c/mkfile
+++ b/sys/src/cmd/7c/mkfile
@@ -18,6 +18,7 @@ OFILES=\
HFILES=\
gc.h\
7.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/7l/compat.c b/sys/src/cmd/7l/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/7l/compat.c
+++ b/sys/src/cmd/7l/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/7l/l.h b/sys/src/cmd/7l/l.h
index 5528cc6bd..c72202b8a 100644
--- a/sys/src/cmd/7l/l.h
+++ b/sys/src/cmd/7l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../7c/7.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define LIBNAMELEN 300
@@ -291,7 +288,6 @@ EXTERN Sym* hash[NHASH];
EXTERN Sym* histfrog[MAXHIST];
EXTERN int histfrogp;
EXTERN int histgen;
-EXTERN char* hunk;
EXTERN char* library[50];
EXTERN char* libraryobj[50];
@@ -300,7 +296,6 @@ EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN char literal[32];
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN char* noname;
EXTERN vlong instoffset;
EXTERN Opcross opcross[8];
@@ -310,7 +305,6 @@ EXTERN uchar repop[ALAST];
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN vlong textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN char xcmp[C_NCLASS][C_NCLASS];
EXTERN int xrefresolv;
@@ -378,7 +372,6 @@ vlong entryvalue(void);
void errorexit(void);
void export(void);
void follow(void);
-void gethunk(void);
void histtoauto(void);
void* halloc(usize);
int isnop(Prog*);
@@ -395,7 +388,6 @@ void lput(long);
void lputl(long);
void mkfwd(void);
int movcon(vlong);
-void* mysbrk(ulong);
void names(void);
void nocache(Prog*);
void nuxiinit(void);
diff --git a/sys/src/cmd/7l/mkfile b/sys/src/cmd/7l/mkfile
index 1c1856aa8..46562f0db 100644
--- a/sys/src/cmd/7l/mkfile
+++ b/sys/src/cmd/7l/mkfile
@@ -20,6 +20,7 @@ OFILES=\
HFILES=\
l.h\
../7c/7.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
@@ -33,5 +34,7 @@ cnam.c: l.h mkcname
enam.$O: ../7c/enam.c
$CC $CFLAGS ../7c/enam.c
+compat.$O: ../cc/compat
+
x:V: $O.out
$O.out -la -o/dev/null x.7
diff --git a/sys/src/cmd/7l/obj.c b/sys/src/cmd/7l/obj.c
index 75def5096..444467fa3 100644
--- a/sys/src/cmd/7l/obj.c
+++ b/sys/src/cmd/7l/obj.c
@@ -1162,28 +1162,6 @@ halloc(usize n)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/8a/a.h b/sys/src/cmd/8a/a.h
index 7d4b9366b..868031d80 100644
--- a/sys/src/cmd/8a/a.h
+++ b/sys/src/cmd/8a/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../8c/8.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Ref Ref;
@@ -109,14 +106,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Gen nullgen;
EXTERN char* outfile;
@@ -128,10 +123,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -168,28 +161,7 @@ void macend(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/8a/mkfile b/sys/src/cmd/8a/mkfile
index 7b4cfd774..df2c9f6d4 100644
--- a/sys/src/cmd/8a/mkfile
+++ b/sys/src/cmd/8a/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../8c/8.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/8c/mkfile b/sys/src/cmd/8c/mkfile
index 4c63499ce..0364d27f0 100644
--- a/sys/src/cmd/8c/mkfile
+++ b/sys/src/cmd/8c/mkfile
@@ -20,6 +20,7 @@ OFILES=\
HFILES=\
gc.h\
8.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/8l/compat.c b/sys/src/cmd/8l/compat.c
index e81bebce8..54ac0283e 100644
--- a/sys/src/cmd/8l/compat.c
+++ b/sys/src/cmd/8l/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void*, ulong)
-{
- fprint(2, "realloc called\n");
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/8l/l.h b/sys/src/cmd/8l/l.h
index f8968d01d..450d3e2de 100644
--- a/sys/src/cmd/8l/l.h
+++ b/sys/src/cmd/8l/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../8c/8.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
#define P ((Prog*)0)
#define S ((Sym*)0)
@@ -255,7 +252,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -266,7 +262,6 @@ EXTERN char reg[D_XNONE];
EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long nsymbol;
EXTERN char* noname;
EXTERN char* outfile;
@@ -276,7 +271,6 @@ EXTERN Sym* symlist;
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN Prog zprg;
EXTERN int dtype;
@@ -328,7 +322,6 @@ void export(void);
int find1(long, int);
int find2(long, int);
void follow(void);
-void gethunk(void);
void histtoauto(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
@@ -341,7 +334,6 @@ void lput(long);
void lputl(long);
void main(int, char*[]);
void mkfwd(void);
-void* mysbrk(ulong);
void nuxiinit(void);
void objfile(char*);
int opsize(Prog*);
diff --git a/sys/src/cmd/8l/mkfile b/sys/src/cmd/8l/mkfile
index 8c6401bc3..331bd18e0 100644
--- a/sys/src/cmd/8l/mkfile
+++ b/sys/src/cmd/8l/mkfile
@@ -13,6 +13,7 @@ OFILES=\
HFILES=\
l.h\
+ ../cc/compat.h\
../8c/8.out.h\
BIN=/$objtype/bin
@@ -29,3 +30,4 @@ UPDATE=\
enam.$O: ../8c/enam.c
$CC $CFLAGS ../8c/enam.c
+compat.$O: ../cc/compat
diff --git a/sys/src/cmd/8l/obj.c b/sys/src/cmd/8l/obj.c
index efdbd4110..530e6ea3b 100644
--- a/sys/src/cmd/8l/obj.c
+++ b/sys/src/cmd/8l/obj.c
@@ -1180,28 +1180,6 @@ appendp(Prog *q)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/cc/cc.h b/sys/src/cmd/cc/cc.h
index 75ac42d7f..8de3c4e1a 100644
--- a/sys/src/cmd/cc/cc.h
+++ b/sys/src/cmd/cc/cc.h
@@ -5,9 +5,7 @@
#pragma lib "../cc/cc.a$O"
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Node Node;
typedef struct Sym Sym;
@@ -184,13 +182,6 @@ enum
NALIGN,
};
-enum /* also in ../{8a,0a}.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2,
-};
-
enum
{
DMARK,
@@ -437,7 +428,6 @@ EXTERN Decl* firstdcl;
EXTERN int fperror;
EXTERN Sym* hash[NHASH];
EXTERN int hasdoubled;
-EXTERN char* hunk;
EXTERN char* include[20];
EXTERN Io* iofree;
EXTERN Io* ionext;
@@ -451,7 +441,6 @@ EXTERN long lineno;
EXTERN long nearln;
EXTERN int nerrors;
EXTERN int newflag;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN Node* nodproto;
EXTERN Node* nodcast;
@@ -471,7 +460,6 @@ EXTERN Type* tufield;
EXTERN int thechar;
EXTERN char* thestring;
EXTERN Type* thisfn;
-EXTERN uintptr thunk;
EXTERN Type* types[NTYPE];
EXTERN Type* fntypes[NTYPE];
EXTERN Node* initlist;
@@ -522,21 +510,6 @@ extern ulong thash3;
extern ulong thash[];
/*
- * compat.c/unix.c/windows.c
- */
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-int myaccess(char*);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
-
-/*
* parser
*/
int yyparse(void);
@@ -545,8 +518,6 @@ int mpatov(char*, vlong*);
/*
* lex.c
*/
-void* allocn(void*, long, long);
-void* alloc(long);
void cinit(void);
int compile(char*, char**, int);
void errorexit(void);
@@ -666,7 +637,6 @@ int castucom(Node*);
int deadheads(Node*);
Type* dotsearch(Sym*, Type*, Node*, long*);
long dotoffset(Type*, Type*, Node*);
-void gethunk(void);
Node* invert(Node*);
int bitno(long);
void makedot(Node*, Type*, long);
diff --git a/sys/src/cmd/cc/compat b/sys/src/cmd/cc/compat
index fc0654157..df59f0c98 100644
--- a/sys/src/cmd/cc/compat
+++ b/sys/src/cmd/cc/compat
@@ -1,4 +1,3 @@
-
int
myaccess(char *f)
{
@@ -77,3 +76,117 @@ myfork(void)
{
return fork();
}
+
+/*
+ * real allocs
+ */
+void
+gethunk(void)
+{
+ char *h;
+ ulong nh;
+
+ nh = NHUNK;
+ if(thunk >= 10L*NHUNK)
+ nh = 10L*NHUNK;
+ h = (char*)mysbrk(nh);
+ if(h == (char*)-1)
+ sysfatal("out of memory");
+ if(nhunk == 0)
+ hunk = h;
+ else
+ nh += (h - hunk) - nhunk;
+ nhunk += nh;
+ thunk += nh;
+}
+
+void*
+alloc(long n)
+{
+ void *p;
+
+ while((uintptr)hunk & 7) {
+ hunk++;
+ nhunk--;
+ }
+ while(nhunk < n)
+ gethunk();
+ p = hunk;
+ nhunk -= n;
+ hunk += n;
+ return p;
+}
+
+void*
+allocn(void *p, long on, long n)
+{
+ void *q;
+
+ q = (uchar*)p + on;
+ if(q != hunk || nhunk < n) {
+ while(nhunk < on+n)
+ gethunk();
+ memmove(hunk, p, on);
+ p = hunk;
+ hunk += on;
+ nhunk -= on;
+ }
+ hunk += n;
+ nhunk -= n;
+ return p;
+}
+
+/*
+ * fake mallocs
+ */
+void*
+malloc(ulong n)
+{
+ return alloc(n);
+}
+
+void*
+calloc(ulong m, ulong n)
+{
+ return alloc(m*n);
+}
+
+void*
+realloc(void *o, ulong n)
+{
+ ulong m;
+ void *a;
+
+ if(n == 0)
+ return nil;
+ if(o == nil)
+ return alloc(n);
+ a = alloc(n);
+ m = (char*)a - (char*)o;
+ if(m < n)
+ n = m;
+ memmove(a, o, n);
+ return a;
+}
+
+void
+free(void*)
+{
+}
+
+/* needed when profiling */
+void*
+mallocz(ulong size, int)
+{
+ return alloc(size);
+}
+
+void
+setmalloctag(void*, uintptr)
+{
+}
+
+void
+setrealloctag(void*, uintptr)
+{
+}
diff --git a/sys/src/cmd/cc/compat.c b/sys/src/cmd/cc/compat.c
index c76ab9968..1724b5b30 100644
--- a/sys/src/cmd/cc/compat.c
+++ b/sys/src/cmd/cc/compat.c
@@ -1,62 +1,2 @@
#include "cc.h"
#include "compat"
-
-/*
- * fake mallocs
- */
-void*
-malloc(ulong n)
-{
- return alloc(n);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- return alloc(m*n);
-}
-
-void*
-realloc(void *o, ulong n)
-{
- ulong m;
- void *a;
-
- if(n == 0)
- return nil;
- if(o == nil)
- return alloc(n);
- a = alloc(n);
- m = (char*)a - (char*)o;
- if(m < n)
- n = m;
- memmove(a, o, n);
- return a;
-}
-
-void
-free(void*)
-{
-}
-
-/* needed when profiling */
-void*
-mallocz(ulong size, int clr)
-{
- void *v;
-
- v = alloc(size);
- if(clr && v != nil)
- memset(v, 0, size);
- return v;
-}
-
-void
-setmalloctag(void*, uintptr)
-{
-}
-
-void
-setrealloctag(void*, uintptr)
-{
-}
diff --git a/sys/src/cmd/cc/compat.h b/sys/src/cmd/cc/compat.h
new file mode 100644
index 000000000..9f056e36a
--- /dev/null
+++ b/sys/src/cmd/cc/compat.h
@@ -0,0 +1,35 @@
+/*
+ * functions shared by compilers, linkers and assemblers.
+ */
+
+#ifndef EXTERN
+#define EXTERN extern
+#endif
+
+enum
+{
+ Plan9 = 1<<0,
+ Unix = 1<<1,
+ Windows = 1<<2
+};
+EXTERN int systemtype(int);
+EXTERN int pathchar(void);
+
+EXTERN int myaccess(char *);
+EXTERN int mywait(int*);
+EXTERN int mycreat(char*, int);
+EXTERN char* mygetwd(char*, int);
+EXTERN int myexec(char*, char*[]);
+EXTERN int mydup(int, int);
+EXTERN int myfork(void);
+EXTERN int mypipe(int*);
+EXTERN void* mysbrk(ulong);
+
+EXTERN void gethunk(void);
+
+EXTERN char* hunk;
+EXTERN uintptr nhunk;
+EXTERN uintptr thunk;
+
+EXTERN void* alloc(long n);
+EXTERN void* allocn(void *p, long on, long n);
diff --git a/sys/src/cmd/cc/lex.c b/sys/src/cmd/cc/lex.c
index 06abc8232..5419f26bf 100644
--- a/sys/src/cmd/cc/lex.c
+++ b/sys/src/cmd/cc/lex.c
@@ -1524,45 +1524,6 @@ VBconv(Fmt *fp)
return fmtstrcpy(fp, str);
}
-/*
- * real allocs
- */
-void*
-alloc(long n)
-{
- void *p;
-
- while((uintptr)hunk & MAXALIGN) {
- hunk++;
- nhunk--;
- }
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void*
-allocn(void *p, long on, long n)
-{
- void *q;
-
- q = (uchar*)p + on;
- if(q != hunk || nhunk < n) {
- while(nhunk < on+n)
- gethunk();
- memmove(hunk, p, on);
- p = hunk;
- hunk += on;
- nhunk -= on;
- }
- hunk += n;
- nhunk -= n;
- return p;
-}
-
void
setinclude(char *p)
{
diff --git a/sys/src/cmd/cc/lexbody b/sys/src/cmd/cc/lexbody
index a22c6efba..471041617 100644
--- a/sys/src/cmd/cc/lexbody
+++ b/sys/src/cmd/cc/lexbody
@@ -37,45 +37,6 @@ pragincomplete(void)
;
}
-/*
- * real allocs
- */
-void*
-alloc(long n)
-{
- void *p;
-
- while((uintptr)hunk & MAXALIGN) {
- hunk++;
- nhunk--;
- }
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void*
-allocn(void *p, long on, long n)
-{
- void *q;
-
- q = (uchar*)p + on;
- if(q != hunk || nhunk < n) {
- while(nhunk < on+n)
- gethunk();
- memmove(hunk, p, on);
- p = hunk;
- hunk += on;
- nhunk -= on;
- }
- hunk += n;
- nhunk -= n;
- return p;
-}
-
void
setinclude(char *p)
{
diff --git a/sys/src/cmd/cc/mac.c b/sys/src/cmd/cc/mac.c
index 7ec6e3937..e2ec23ace 100644
--- a/sys/src/cmd/cc/mac.c
+++ b/sys/src/cmd/cc/mac.c
@@ -1,3 +1,2 @@
#include "cc.h"
-
#include "macbody"
diff --git a/sys/src/cmd/cc/macbody b/sys/src/cmd/cc/macbody
index 7d837fb43..0a921cbb8 100644
--- a/sys/src/cmd/cc/macbody
+++ b/sys/src/cmd/cc/macbody
@@ -847,22 +847,3 @@ linehist(char *f, int offset)
ehist->link = h;
ehist = h;
}
-
-void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 10L*NHUNK)
- nh = 10L*NHUNK;
- h = (char*)mysbrk(nh);
- if(h == (char*)-1) {
- yyerror("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
diff --git a/sys/src/cmd/cc/mkfile b/sys/src/cmd/cc/mkfile
index c7530b3de..91310d62a 100644
--- a/sys/src/cmd/cc/mkfile
+++ b/sys/src/cmd/cc/mkfile
@@ -19,6 +19,7 @@ OFILES=\
omachcap.$O\
HFILES=cc.h\
+ compat.h\
y.tab.h\
YFILES=cc.y\
@@ -34,7 +35,9 @@ install:V: $LIB
$LIB: $LIBOBJ
ar vu $LIB $OFILES
-mac.$O: macbody
+mac.$O: macbody
+
+compat.$O: compat
everything:V:
# mk the current compilers
diff --git a/sys/src/cmd/ka/a.h b/sys/src/cmd/ka/a.h
index 9f55ab333..5c15ceb14 100644
--- a/sys/src/cmd/ka/a.h
+++ b/sys/src/cmd/ka/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../kc/k.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Gen Gen;
@@ -95,14 +92,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int ninclude;
EXTERN int nosched;
EXTERN Gen nullgen;
@@ -115,11 +110,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* alloc(long);
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -154,29 +146,7 @@ void dodefine(char*);
void prfile(long);
void outhist(void);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/ka/mkfile b/sys/src/cmd/ka/mkfile
index afa5ad506..d7fe9b626 100644
--- a/sys/src/cmd/ka/mkfile
+++ b/sys/src/cmd/ka/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../kc/k.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/kc/mkfile b/sys/src/cmd/kc/mkfile
index 3423c37e2..9031d8a6f 100644
--- a/sys/src/cmd/kc/mkfile
+++ b/sys/src/cmd/kc/mkfile
@@ -17,6 +17,7 @@ OFILES=\
HFILES=\
gc.h\
k.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/kl/compat.c b/sys/src/cmd/kl/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/kl/compat.c
+++ b/sys/src/cmd/kl/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/kl/l.h b/sys/src/cmd/kl/l.h
index e296e4509..0ac5020db 100644
--- a/sys/src/cmd/kl/l.h
+++ b/sys/src/cmd/kl/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../kc/k.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Adr Adr;
typedef struct Sym Sym;
@@ -224,7 +221,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -232,7 +228,6 @@ EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN char literal[32];
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN char* noname;
EXTERN long instoffset;
EXTERN char* outfile;
@@ -241,7 +236,6 @@ EXTERN long symsize;
EXTERN long staticgen;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr tothunk;
EXTERN char xcmp[C_NCLASS][C_NCLASS];
EXTERN int version;
EXTERN Prog zprg;
@@ -290,7 +284,6 @@ void errorexit(void);
void exchange(Prog*);
int find1(long, int);
void follow(void);
-void gethunk(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
int isnop(Prog*);
@@ -301,7 +294,6 @@ void initmuldiv(void);
Sym* lookup(char*, int);
void lput(long);
void mkfwd(void);
-void* mysbrk(ulong);
void names(void);
void nocache(Prog*);
void noops(void);
diff --git a/sys/src/cmd/kl/mkfile b/sys/src/cmd/kl/mkfile
index b5befdd38..3c128f703 100644
--- a/sys/src/cmd/kl/mkfile
+++ b/sys/src/cmd/kl/mkfile
@@ -16,9 +16,13 @@ OFILES=\
HFILES=\
l.h\
../kc/k.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
enam.$O: ../kc/enam.c
$CC $CFLAGS ../kc/enam.c
+
+compat.$O: ../cc/compat
+
diff --git a/sys/src/cmd/kl/obj.c b/sys/src/cmd/kl/obj.c
index b778cfd8d..dd324dfb3 100644
--- a/sys/src/cmd/kl/obj.c
+++ b/sys/src/cmd/kl/obj.c
@@ -194,7 +194,7 @@ main(int argc, char *argv[])
out:
if(debug['v']) {
Bprint(&bso, "%5.2f cpu time\n", cputime());
- Bprint(&bso, "%zud memory used\n", tothunk);
+ Bprint(&bso, "%zud memory used\n", thunk);
Bprint(&bso, "%d sizeof adr\n", sizeof(Adr));
Bprint(&bso, "%d sizeof prog\n", sizeof(Prog));
}
@@ -977,29 +977,6 @@ prg(void)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(tothunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(tothunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char *)-1) {
- diag("out of memory");
- errorexit();
- }
-
- hunk = h;
- nhunk = nh;
- tothunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/qa/a.h b/sys/src/cmd/qa/a.h
index 74f386379..3dbb478b1 100644
--- a/sys/src/cmd/qa/a.h
+++ b/sys/src/cmd/qa/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../qc/q.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Gen Gen;
@@ -115,14 +112,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int nosched;
EXTERN int ninclude;
EXTERN Gen nullgen;
@@ -135,7 +130,6 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
void errorexit(void);
@@ -173,28 +167,7 @@ void dodefine(char*);
void prfile(long);
void outhist(void);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/qa/mkfile b/sys/src/cmd/qa/mkfile
index 4563f25da..5b10e478b 100644
--- a/sys/src/cmd/qa/mkfile
+++ b/sys/src/cmd/qa/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../qc/q.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/qc/mkfile b/sys/src/cmd/qc/mkfile
index 63cbd5483..fed973694 100644
--- a/sys/src/cmd/qc/mkfile
+++ b/sys/src/cmd/qc/mkfile
@@ -18,6 +18,7 @@ OFILES=\
HFILES=\
gc.h\
q.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/ql/compat.c b/sys/src/cmd/ql/compat.c
index e81bebce8..54ac0283e 100644
--- a/sys/src/cmd/ql/compat.c
+++ b/sys/src/cmd/ql/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void*, ulong)
-{
- fprint(2, "realloc called\n");
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/ql/l.h b/sys/src/cmd/ql/l.h
index e7822d01e..063bb9d45 100644
--- a/sys/src/cmd/ql/l.h
+++ b/sys/src/cmd/ql/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../qc/q.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Adr Adr;
typedef struct Sym Sym;
@@ -216,7 +213,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -224,7 +220,6 @@ EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN char literal[32];
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN char* noname;
EXTERN long instoffset;
EXTERN char* outfile;
@@ -234,7 +229,6 @@ EXTERN long symsize;
EXTERN long staticgen;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr tothunk;
EXTERN char xcmp[C_NCLASS][C_NCLASS];
EXTERN int version;
EXTERN Prog zprg;
@@ -289,7 +283,6 @@ void exchange(Prog*);
void export(void);
int find1(long, int);
void follow(void);
-void gethunk(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
void import(void);
@@ -301,7 +294,6 @@ void initmuldiv(void);
Sym* lookup(char*, int);
void lput(long);
void mkfwd(void);
-void* mysbrk(ulong);
void names(void);
void nocache(Prog*);
void noops(void);
diff --git a/sys/src/cmd/ql/mkfile b/sys/src/cmd/ql/mkfile
index 24dd45c48..681f42ee7 100644
--- a/sys/src/cmd/ql/mkfile
+++ b/sys/src/cmd/ql/mkfile
@@ -18,6 +18,7 @@ OFILES=\
HFILES=\
l.h\
../qc/q.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
@@ -26,3 +27,4 @@ enam.$O: ../qc/enam.c
$CC $CFLAGS ../qc/enam.c
cnam.c: l.h
rc mkcname
+compat.$O: ../cc/compat
diff --git a/sys/src/cmd/ql/obj.c b/sys/src/cmd/ql/obj.c
index dba56bd46..cfa8c335f 100644
--- a/sys/src/cmd/ql/obj.c
+++ b/sys/src/cmd/ql/obj.c
@@ -273,7 +273,7 @@ main(int argc, char *argv[])
out:
if(debug['v']) {
Bprint(&bso, "%5.2f cpu time\n", cputime());
- Bprint(&bso, "%zud memory used\n", tothunk);
+ Bprint(&bso, "%zud memory used\n", thunk);
Bprint(&bso, "%d sizeof adr\n", sizeof(Adr));
Bprint(&bso, "%d sizeof prog\n", sizeof(Prog));
}
@@ -1111,29 +1111,6 @@ prg(void)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(tothunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(tothunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char *)-1) {
- diag("out of memory");
- errorexit();
- }
-
- hunk = h;
- nhunk = nh;
- tothunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;
diff --git a/sys/src/cmd/va/a.h b/sys/src/cmd/va/a.h
index 7438512f1..4aef20de4 100644
--- a/sys/src/cmd/va/a.h
+++ b/sys/src/cmd/va/a.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../vc/v.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Sym Sym;
typedef struct Gen Gen;
@@ -94,14 +91,12 @@ EXTERN int nDlist;
EXTERN Hist* ehist;
EXTERN int newflag;
EXTERN Hist* hist;
-EXTERN char* hunk;
EXTERN char* include[NINCLUDE];
EXTERN Io* iofree;
EXTERN Io* ionext;
EXTERN Io* iostack;
EXTERN long lineno;
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN int nosched;
EXTERN int ninclude;
EXTERN Gen nullgen;
@@ -114,11 +109,8 @@ EXTERN int sym;
EXTERN char symb[NSYMB];
EXTERN int thechar;
EXTERN char* thestring;
-EXTERN uintptr thunk;
EXTERN Biobuf obuf;
-void* alloc(long);
-void* allocn(void*, long, long);
void errorexit(void);
void pushio(void);
void newio(void);
@@ -154,29 +146,7 @@ void outhist(void);
void dodefine(char*);
void prfile(long);
void linehist(char*, int);
-void gethunk(void);
void yyerror(char*, ...);
int yyparse(void);
void setinclude(char*);
int assemble(char*);
-
-/*
- * system-dependent stuff from ../cc/compat.c
- */
-
-enum /* keep in synch with ../cc/cc.h */
-{
- Plan9 = 1<<0,
- Unix = 1<<1,
- Windows = 1<<2
-};
-int mywait(int*);
-int mycreat(char*, int);
-int systemtype(int);
-int pathchar(void);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(ulong);
diff --git a/sys/src/cmd/va/mkfile b/sys/src/cmd/va/mkfile
index 170c66b89..288562895 100644
--- a/sys/src/cmd/va/mkfile
+++ b/sys/src/cmd/va/mkfile
@@ -7,6 +7,7 @@ OFILES=\
HFILES=\
../vc/v.out.h\
+ ../cc/compat.h\
y.tab.h\
a.h\
diff --git a/sys/src/cmd/vc/mkfile b/sys/src/cmd/vc/mkfile
index 6446089c1..cad14ebb1 100644
--- a/sys/src/cmd/vc/mkfile
+++ b/sys/src/cmd/vc/mkfile
@@ -17,6 +17,7 @@ OFILES=\
HFILES=\
gc.h\
v.out.h\
+ ../cc/compat.h\
../cc/cc.h\
LIB=../cc/cc.a$O
diff --git a/sys/src/cmd/vl/compat.c b/sys/src/cmd/vl/compat.c
index 1d9f89e43..54ac0283e 100644
--- a/sys/src/cmd/vl/compat.c
+++ b/sys/src/cmd/vl/compat.c
@@ -1,56 +1,2 @@
#include "l.h"
-
-/*
- * fake malloc
- */
-void*
-malloc(ulong n)
-{
- void *p;
-
- while(n & 7)
- n++;
- while(nhunk < n)
- gethunk();
- p = hunk;
- nhunk -= n;
- hunk += n;
- return p;
-}
-
-void
-free(void *p)
-{
- USED(p);
-}
-
-void*
-calloc(ulong m, ulong n)
-{
- void *p;
-
- n *= m;
- p = malloc(n);
- memset(p, 0, n);
- return p;
-}
-
-void*
-realloc(void *p, ulong n)
-{
- fprint(2, "realloc(0x%p %ld) called\n", p, n);
- abort();
- return 0;
-}
-
-void*
-mysbrk(ulong size)
-{
- return sbrk(size);
-}
-
-void
-setmalloctag(void *v, uintptr pc)
-{
- USED(v, pc);
-}
+#include "../cc/compat"
diff --git a/sys/src/cmd/vl/l.h b/sys/src/cmd/vl/l.h
index 094da0a50..d605e8f34 100644
--- a/sys/src/cmd/vl/l.h
+++ b/sys/src/cmd/vl/l.h
@@ -2,10 +2,7 @@
#include <libc.h>
#include <bio.h>
#include "../vc/v.out.h"
-
-#ifndef EXTERN
-#define EXTERN extern
-#endif
+#include "../cc/compat.h"
typedef struct Adr Adr;
typedef struct Sym Sym;
@@ -215,7 +212,6 @@ EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
-EXTERN char* hunk;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
@@ -223,7 +219,6 @@ EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN char literal[32];
EXTERN int nerrors;
-EXTERN long nhunk;
EXTERN long instoffset;
EXTERN Opcross opcross[10];
EXTERN Oprang oprange[ALAST];
@@ -233,7 +228,6 @@ EXTERN uchar repop[ALAST];
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
-EXTERN uintptr thunk;
EXTERN int version;
EXTERN char xcmp[32][32];
EXTERN Prog zprg;
@@ -292,7 +286,6 @@ void errorexit(void);
void exchange(Prog*);
int find1(long, int);
void follow(void);
-void gethunk(void);
void histtoauto(void);
double ieeedtod(Ieee*);
long ieeedtof(Ieee*);
diff --git a/sys/src/cmd/vl/mkfile b/sys/src/cmd/vl/mkfile
index 82b008ee7..96a4d7800 100644
--- a/sys/src/cmd/vl/mkfile
+++ b/sys/src/cmd/vl/mkfile
@@ -16,6 +16,7 @@ OFILES=\
HFILES=\
l.h\
../vc/v.out.h\
+ ../cc/compat.h\
BIN=/$objtype/bin
</sys/src/cmd/mkone
@@ -23,6 +24,8 @@ BIN=/$objtype/bin
enam.$O: ../vc/enam.c
$CC $CFLAGS ../vc/enam.c
+compat.$O: ../cc/compat
+
x:V: $O.out
$O.out -la -o/dev/null x.v
diff --git a/sys/src/cmd/vl/obj.c b/sys/src/cmd/vl/obj.c
index c20e5c98b..82cff0f22 100644
--- a/sys/src/cmd/vl/obj.c
+++ b/sys/src/cmd/vl/obj.c
@@ -1059,28 +1059,6 @@ prg(void)
}
void
-gethunk(void)
-{
- char *h;
- long nh;
-
- nh = NHUNK;
- if(thunk >= 5L*NHUNK) {
- nh = 5L*NHUNK;
- if(thunk >= 25L*NHUNK)
- nh = 25L*NHUNK;
- }
- h = mysbrk(nh);
- if(h == (char*)-1) {
- diag("out of memory");
- errorexit();
- }
- hunk = h;
- nhunk = nh;
- thunk += nh;
-}
-
-void
doprof1(void)
{
Sym *s;