Taylor R Campbell wrote: > A quicker way to address most of it is to just define your own malloc: > > $ cat null.o > #include <stddef.h> > void *malloc(size_t n) { return NULL; } > void *realloc(void *p, size_t n) { return NULL; } > void *calloc(size_t n, size_t sz) { return NULL; } > void free(void *p) {} > int main(void) { return 0; } > $ cc -g -O2 -static -o null null.c > $ size null > text data bss dec hex filename > 26724 3208 3184 33116 815c null
I'm sorta curious why linking against one of our small malloc implementations still pulls in jemalloc: thoreau 3633> echo 'int main(void) { return 0; }' > null.c thoreau 3634> cc -g -O2 -static -o null null.c -lgnumalloc thoreau 3635> size null text data bss dec hex filename 582263 28928 2176553 2787744 2a89a0 null thoreau 3636> nm null | grep -c je_malloc 30 thoreau 3637> cc -g -O2 -static -o null null.c -lbsdmalloc thoreau 3638> size null text data bss dec hex filename 582263 28928 2176553 2787744 2a89a0 null thoreau 3639> cat >> malloc.c #include <stddef.h> void *malloc(size_t n) { return NULL; } void *realloc(void *p, size_t n) { return NULL; } void *calloc(size_t n, size_t sz) { return NULL; } void free(void *p) {} thoreau 3640> cc -g -O2 -static -o null null.c malloc.c thoreau 3641> size null text data bss dec hex filename 33096 3224 3152 39472 9a30 null Is this something to do with the jemalloc constructor still getting called somehow? Using cc -v shows that libbsdmalloc is being linked against before libc: thoreau 3648> cc -v -g -O2 -static -o null null.c -lbsdmalloc ... ld -plugin ... -lbsdmalloc -lgcc -lc -lgcc ... Cheers, Simon.