Fix Clang support

The amalgamated release is now confirmed to be working with Clang,
including its integrated assembler.

Fixes #41
This commit is contained in:
Justine Tunney 2021-02-06 00:24:35 -08:00
parent e06c90fafc
commit d7733579d3
103 changed files with 384 additions and 359 deletions

View file

@ -27,5 +27,5 @@
/ @return rax is memory address, or NULL w/ errno
/ @note overreliance on memalign is a sure way to fragment space
/ @see dlcalloc()
calloc: jmp *hook$calloc(%rip)
calloc: jmp *hook_calloc(%rip)
.endfn calloc,globl

View file

@ -81,5 +81,5 @@ _ZdaPv:
.endfn _ZdaPv,weak
_ZdlPv:
/ operator delete(void*)
jmp *hook$free(%rip)
jmp *hook_free(%rip)
.endfn _ZdlPv,weak

View file

@ -44,5 +44,5 @@ _Znwm:
test %rdi,%rdi
jne 1f
mov $1,%edi
1: jmp *hook$malloc(%rip)
1: jmp *hook_malloc(%rip)
.endfn _Znwm,weak

View file

@ -49,5 +49,5 @@ _ZnamSt11align_val_t:
cmp %rax,%rsi
cmovb %rax,%rsi
xchg %rdi,%rsi
jmp *hook$memalign(%rip)
jmp *hook_memalign(%rip)
.endfn _ZnamSt11align_val_t,weak

View file

@ -29,5 +29,5 @@
/
/ @param rdi is allocation address, which may be NULL
/ @see dlfree()
free: jmp *hook$free(%rip)
free: jmp *hook_free(%rip)
.endfn free,globl

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_calloc
hook$calloc:
hook_calloc:
.quad 0
.endobj hook$calloc,globl,hidden
.endobj hook_calloc,globl,hidden
.previous
.init.start 202,_init_calloc

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_free
hook$free:
hook_free:
.quad 0
.endobj hook$free,globl,hidden
.endobj hook_free,globl,hidden
.previous
.init.start 202,_init_free

View file

@ -1,19 +0,0 @@
#ifndef COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_
#define COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
extern void (*hook$free)(void *);
extern void *(*hook$malloc)(size_t);
extern void *(*hook$calloc)(size_t, size_t);
extern void *(*hook$memalign)(size_t, size_t);
extern void *(*hook$realloc)(void *, size_t);
extern void *(*hook$realloc_in_place)(void *, size_t);
extern void *(*hook$valloc)(size_t);
extern void *(*hook$pvalloc)(size_t);
extern int (*hook$malloc_trim)(size_t);
extern size_t (*hook$malloc_usable_size)(const void *);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_ */

View file

@ -0,0 +1,19 @@
#ifndef COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_
#define COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
extern void (*hook_free)(void *);
extern void *(*hook_malloc)(size_t);
extern void *(*hook_calloc)(size_t, size_t);
extern void *(*hook_memalign)(size_t, size_t);
extern void *(*hook_realloc)(void *, size_t);
extern void *(*hook_realloc_in_place)(void *, size_t);
extern void *(*hook_valloc)(size_t);
extern void *(*hook_pvalloc)(size_t);
extern int (*hook_malloc_trim)(size_t);
extern size_t (*hook_malloc_usable_size)(const void *);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_MEM_HOOK_HOOK_H_ */

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_malloc
hook$malloc:
hook_malloc:
.quad 0
.endobj hook$malloc,globl,hidden
.endobj hook_malloc,globl,hidden
.previous
.init.start 202,_init_malloc

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_malloc_trim
hook$malloc_trim:
hook_malloc_trim:
.quad 0
.endobj hook$malloc_trim,globl,hidden
.endobj hook_malloc_trim,globl,hidden
.previous
.init.start 202,_init_malloc_trim

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_malloc_usable_size
hook$malloc_usable_size:
hook_malloc_usable_size:
.quad 0
.endobj hook$malloc_usable_size,globl,hidden
.endobj hook_malloc_usable_size,globl,hidden
.previous
.init.start 202,_init_malloc_usable_size

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_memalign
hook$memalign:
hook_memalign:
.quad 0
.endobj hook$memalign,globl,hidden
.endobj hook_memalign,globl,hidden
.previous
.init.start 202,_init_memalign

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_posix_memalign
hook$posix_memalign:
hook_posix_memalign:
.quad 0
.endobj hook$posix_memalign,globl,hidden
.endobj hook_posix_memalign,globl,hidden
.previous
.init.start 202,_init_posix_memalign

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_pvalloc
hook$pvalloc:
hook_pvalloc:
.quad 0
.endobj hook$pvalloc,globl,hidden
.endobj hook_pvalloc,globl,hidden
.previous
.init.start 202,_init_pvalloc

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_realloc
hook$realloc:
hook_realloc:
.quad 0
.endobj hook$realloc,globl,hidden
.endobj hook_realloc,globl,hidden
.previous
.init.start 202,_init_realloc

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_realloc_in_place
hook$realloc_in_place:
hook_realloc_in_place:
.quad 0
.endobj hook$realloc_in_place,globl,hidden
.endobj hook_realloc_in_place,globl,hidden
.previous
.init.start 202,_init_realloc_in_place

View file

@ -20,9 +20,9 @@
.source __FILE__
.initbss 202,_init_valloc
hook$valloc:
hook_valloc:
.quad 0
.endobj hook$valloc,globl,hidden
.endobj hook_valloc,globl,hidden
.previous
.init.start 202,_init_valloc

View file

@ -36,5 +36,5 @@
/ @return new memory, or NULL w/ errno
/ @note malloc(0) → malloc(32)
/ @see dlmalloc()
malloc: jmp *hook$malloc(%rip)
malloc: jmp *hook_malloc(%rip)
.endfn malloc,globl

View file

@ -23,5 +23,5 @@
/ @param rdi specifies bytes of memory to leave available
/ @return 1 if it actually released any memory, else 0
malloc_trim:
jmp *hook$malloc_trim(%rip)
jmp *hook_malloc_trim(%rip)
.endfn malloc_trim,globl

View file

@ -37,5 +37,5 @@
/ @return rax is total number of bytes
/ @see dlmalloc_usable_size()
malloc_usable_size:
jmp *hook$malloc_usable_size(%rip)
jmp *hook_malloc_usable_size(%rip)
.endfn malloc_usable_size,globl

View file

@ -35,5 +35,5 @@
/ @note overreliance on memalign is a sure way to fragment space
/ @see dlmemalign()
memalign:
jmp *hook$memalign(%rip)
jmp *hook_memalign(%rip)
.endfn memalign,globl

View file

@ -32,5 +32,5 @@
/ @param rdx is size_t size
/ @return eax
posix_memalign:
jmp *hook$posix_memalign(%rip)
jmp *hook_posix_memalign(%rip)
.endfn posix_memalign,globl

View file

@ -26,5 +26,5 @@
/ @param rdi is number of bytes needed
/ @return rax is memory address, or NULL w/ errno
/ @see dlpvalloc()
pvalloc:jmp *hook$pvalloc(%rip)
pvalloc:jmp *hook_pvalloc(%rip)
.endfn pvalloc,globl

View file

@ -55,5 +55,5 @@
/ @note realloc(p≠0, n=0) → free(p)
/ @see dlrealloc()
realloc:
jmp *hook$realloc(%rip)
jmp *hook_realloc(%rip)
.endfn realloc,globl

View file

@ -34,5 +34,5 @@
/ @return rax is result, or NULL w/ errno
/ @see dlrealloc_in_place()
realloc_in_place:
jmp *hook$realloc_in_place(%rip)
jmp *hook_realloc_in_place(%rip)
.endfn realloc_in_place,globl

View file

@ -25,5 +25,5 @@
/ @param rdi is number of bytes needed
/ @return rax is memory address, or NULL w/ errno
/ @see dlvalloc()
valloc: jmp *hook$valloc(%rip)
valloc: jmp *hook_valloc(%rip)
.endfn valloc,globl