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