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