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/5l | |
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/5l')
-rw-r--r-- | sys/src/cmd/5l/compat.c | 56 | ||||
-rw-r--r-- | sys/src/cmd/5l/l.h | 10 | ||||
-rw-r--r-- | sys/src/cmd/5l/mkfile | 3 | ||||
-rw-r--r-- | sys/src/cmd/5l/obj.c | 22 |
4 files changed, 5 insertions, 86 deletions
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; |