diff options
Diffstat (limited to 'elf')
-rw-r--r-- | elf/Versions | 4 | ||||
-rw-r--r-- | elf/dl-minimal.c | 18 |
2 files changed, 9 insertions, 13 deletions
diff --git a/elf/Versions b/elf/Versions index 05e5449..08f76a7 100644 --- a/elf/Versions +++ b/elf/Versions @@ -34,8 +34,8 @@ libc { ld { GLIBC_2.0 { - # Function from libc.so which must be shared with libc. - __libc_memalign; calloc; free; malloc; realloc; + # Functions which are interposed from libc.so. + calloc; free; malloc; realloc; _r_debug; } diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c index 6034b5a..116ec49 100644 --- a/elf/dl-minimal.c +++ b/elf/dl-minimal.c @@ -31,8 +31,10 @@ #include <assert.h> -/* Minimal `malloc' allocator for use while loading shared libraries. - No block is ever freed. */ +/* Minimal malloc allocator for used during initial link. After the + initial link, a full malloc implementation is interposed, either + the one in libc, or a different one supplied by the user through + interposition. */ static void *alloc_ptr, *alloc_end, *alloc_last_block; @@ -49,7 +51,7 @@ extern unsigned long int weak_function strtoul (const char *nptr, /* Allocate an aligned memory block. */ void * weak_function -__libc_memalign (size_t align, size_t n) +malloc (size_t n) { if (alloc_end == 0) { @@ -62,8 +64,8 @@ __libc_memalign (size_t align, size_t n) } /* Make sure the allocation pointer is ideally aligned. */ - alloc_ptr = (void *) 0 + (((alloc_ptr - (void *) 0) + align - 1) - & ~(align - 1)); + alloc_ptr = (void *) 0 + (((alloc_ptr - (void *) 0) + MALLOC_ALIGNMENT - 1) + & ~(MALLOC_ALIGNMENT - 1)); if (alloc_ptr + n >= alloc_end || n >= -(uintptr_t) alloc_ptr) { @@ -88,12 +90,6 @@ __libc_memalign (size_t align, size_t n) return alloc_last_block; } -void * weak_function -malloc (size_t n) -{ - return __libc_memalign (MALLOC_ALIGNMENT, n); -} - /* We use this function occasionally since the real implementation may be optimized when it can assume the memory it returns already is set to NUL. */ |