mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 23:08:31 +00:00
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:
parent
e06c90fafc
commit
d7733579d3
103 changed files with 384 additions and 359 deletions
|
@ -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
|
||||
|
|
|
@ -81,5 +81,5 @@ _ZdaPv:
|
|||
.endfn _ZdaPv,weak
|
||||
_ZdlPv:
|
||||
/ operator delete(void*)
|
||||
jmp *hook$free(%rip)
|
||||
jmp *hook_free(%rip)
|
||||
.endfn _ZdlPv,weak
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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_ */
|
19
libc/mem/hook/hook.internal.h
Normal file
19
libc/mem/hook/hook.internal.h
Normal 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_ */
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue