diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-04-11 05:03:49 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-04-11 05:03:49 +0200 |
commit | 1b8a56941708e6fe884f4649f718fae7c543c045 (patch) | |
tree | 3d7be0a7e43b01aba6dd986bff06bcc3947a6d78 /sys/src/cmd/8l | |
parent | 9d46360c9d83fa95f42f1eebbad49ecd9281fb0d (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/8l')
-rw-r--r-- | sys/src/cmd/8l/compat.c | 56 | ||||
-rw-r--r-- | sys/src/cmd/8l/l.h | 10 | ||||
-rw-r--r-- | sys/src/cmd/8l/mkfile | 2 | ||||
-rw-r--r-- | sys/src/cmd/8l/obj.c | 22 |
4 files changed, 4 insertions, 86 deletions
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; |