From c23a9ee01ff578b2dd7a0218e943e4a4bc0aa7ff Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 1 Aug 2017 11:08:14 +0200 Subject: [PATCH] mescc: drop naive realloc. * mlibc/libc-gcc.c (free, memcpy): Move from libc-mes+tcc.c. (realloc): Use realloc from libc-mes+tcc.c * mlibc/libc-gcc+tcc.c (free, memcpy, realloc): Remove. * mlibc/libc-mes+tcc.c (free, memcpy, realloc): Remove. * scaffold/tests/79-int-array.c (test): Update. * scaffold/tests/7a-struct-char-array.c (test): Update. --- mlibc/libc-gcc+tcc.c | 1 - mlibc/libc-gcc.c | 35 ++++++++++++++++++++------- mlibc/libc-mes+tcc.c | 27 --------------------- mlibc/libc-mes.c | 27 +++++++++++++++++---- scaffold/tests/79-int-array.c | 9 ------- scaffold/tests/7a-struct-char-array.c | 20 --------------- 6 files changed, 48 insertions(+), 71 deletions(-) diff --git a/mlibc/libc-gcc+tcc.c b/mlibc/libc-gcc+tcc.c index c3743c7e..ebdca80b 100644 --- a/mlibc/libc-gcc+tcc.c +++ b/mlibc/libc-gcc+tcc.c @@ -18,7 +18,6 @@ * along with Mes. If not, see . */ -#define FULL_MALLOC 1 #include #include diff --git a/mlibc/libc-gcc.c b/mlibc/libc-gcc.c index 0ee872e6..32575fcc 100644 --- a/mlibc/libc-gcc.c +++ b/mlibc/libc-gcc.c @@ -174,11 +174,9 @@ fputc (int c, int fd) return 0; } -int -putchar (int c) +void +free (void *ptr) { - write (STDOUT, (char*)&c, 1); - return 0; } char *g_brk = 0; @@ -195,14 +193,33 @@ malloc (size_t size) return p; } -#if !FULL_MALLOC void * -realloc (void *p, size_t size) +memcpy (void *dest, void const *src, size_t n) { - brk (g_brk + size); - return g_brk; + char* p = dest; + char* q = src; + while (n--) *p++ = *q++; + return dest; +} + +int +putchar (int c) +{ + write (STDOUT, (char*)&c, 1); + return 0; +} + +void * +realloc (void *ptr, size_t size) +{ + void *new = malloc (size); + if (ptr && new) + { + memcpy (new, ptr, size); + free (ptr); + } + return new; } -#endif size_t strlen (char const* s) diff --git a/mlibc/libc-mes+tcc.c b/mlibc/libc-mes+tcc.c index c90b4f57..e075768f 100644 --- a/mlibc/libc-mes+tcc.c +++ b/mlibc/libc-mes+tcc.c @@ -30,7 +30,6 @@ #include #if !__GNUC__ -#define FULL_MALLOC 1 #include int errno; @@ -139,11 +138,6 @@ fread (void *ptr, size_t size, size_t nmemb, FILE *stream) return 0; } -void -free (void *ptr) -{ -} - int fseek (FILE *stream, long offset, int whence) { @@ -184,15 +178,6 @@ longjmp (jmp_buf env, int val) eputs ("longjmp stub\n"); } -void * -memcpy (void *dest, void const *src, size_t n) -{ - char* p = dest; - char* q = src; - while (n--) *p++ = *q++; - return dest; -} - void * memmove (void *dest, void const *src, size_t n) { @@ -363,18 +348,6 @@ calloc (size_t nmemb, size_t size) return p; } -void * -realloc (void *ptr, size_t size) -{ - void *new = malloc (size); - if (ptr && new) - { - memcpy (new, ptr, size); - free (ptr); - } - return new; -} - int vfprintf (FILE* f, char const* format, va_list ap) { diff --git a/mlibc/libc-mes.c b/mlibc/libc-mes.c index 1a351eda..c8abba5f 100644 --- a/mlibc/libc-mes.c +++ b/mlibc/libc-mes.c @@ -224,6 +224,11 @@ fgetc (int fd) return c == 1 ? c : (-1); } +void +free (void *ptr) +{ +} + //#define assert(x) ((x) ? (void)0 : assert_fail (#x)) int ungetc (int c, int fd) @@ -328,14 +333,26 @@ malloc (size_t size) return p; } -#if !FULL_MALLOC void * -realloc (void *p, size_t size) +memcpy (void *dest, void const *src, size_t n) { - brk (g_brk + size); - return g_brk; + char* p = dest; + char* q = src; + while (n--) *p++ = *q++; + return dest; +} + +void * +realloc (void *ptr, size_t size) +{ + void *new = malloc (size); + if (ptr && new) + { + memcpy (new, ptr, size); + free (ptr); + } + return new; } -#endif int strncmp (char const* a, char const* b, int length) diff --git a/scaffold/tests/79-int-array.c b/scaffold/tests/79-int-array.c index 2658187b..64b2758a 100644 --- a/scaffold/tests/79-int-array.c +++ b/scaffold/tests/79-int-array.c @@ -29,15 +29,6 @@ struct foo { struct foo f; -void * -memcpy (void *dest, void const *src, size_t n) -{ - char* p = dest; - char* q = src; - while (n--) *p++ = *q++; - return dest; -} - int bla[6] = {0,0,11223344, 55667788,0,0}; int g_c[2] = {101, 111}; diff --git a/scaffold/tests/7a-struct-char-array.c b/scaffold/tests/7a-struct-char-array.c index 3d9c45b2..ea33087a 100644 --- a/scaffold/tests/7a-struct-char-array.c +++ b/scaffold/tests/7a-struct-char-array.c @@ -38,26 +38,6 @@ int fill7; int fill8; int fill9; -void * -memcpy (void *dest, void const *src, int n) -{ - char* p = dest; - char* q = src; - while (n--) *p++ = *q++; - return dest; -} - -#if __MESC__ -char * -strcpy (char *dest, char const *src) -{ - char *p = dest; - while (*src) *p++ = *src++; - *p = 0; - return dest; -} -#endif - int test () {