aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
Diffstat (limited to 'elf')
-rw-r--r--elf/Versions4
-rw-r--r--elf/dl-minimal.c18
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. */