summaryrefslogtreecommitdiff
path: root/sys/src/cmd
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-04-11 05:03:49 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2020-04-11 05:03:49 +0200
commit1b8a56941708e6fe884f4649f718fae7c543c045 (patch)
tree3d7be0a7e43b01aba6dd986bff06bcc3947a6d78 /sys/src/cmd
parent9d46360c9d83fa95f42f1eebbad49ecd9281fb0d (diff)
cc, ?[acl]: fix gethunk() and move common memory allocator code to cc/compat
for gethunk() to work, all allocators have to use it, including allocations done by libc thru malloc(), so the fake allocation functions are mandatory for everyone. to avoid duplication the code is moved to cc/compat and prototypes provided in new cc/compat.h header.
Diffstat (limited to 'sys/src/cmd')
-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;