diff options
author | Florian Weimer <fweimer@redhat.com> | 2016-08-03 16:11:01 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2016-08-03 16:11:01 +0200 |
commit | 5bc17330eb7667b96fee8baf3729c3310fa28b40 (patch) | |
tree | ac3204648c595d93ee2f3f84d53b04a987195400 /elf | |
parent | e7516580ecabdc09861b5e38cec25db91331c3bc (diff) | |
download | glibc-5bc17330eb7667b96fee8baf3729c3310fa28b40.zip glibc-5bc17330eb7667b96fee8baf3729c3310fa28b40.tar.gz glibc-5bc17330eb7667b96fee8baf3729c3310fa28b40.tar.bz2 |
elf: dl-minimal malloc needs to respect fundamental alignment
The dynamic linker currently uses __libc_memalign for TLS-related
allocations. The goal is to switch to malloc instead. If the minimal
malloc follows the ABI fundamental alignment, we can assume that malloc
provides this alignment, and thus skip explicit alignment in a few
cases as an optimization.
It was requested on libc-alpha that MALLOC_ALIGNMENT should be used,
although this results in wasted space if MALLOC_ALIGNMENT is larger
than the fundamental alignment. (The dynamic linker cannot assume
that the non-minimal malloc will provide an alignment of
MALLOC_ALIGNMENT; the ABI provides _Alignof (max_align_t) only.)
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-minimal.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c index c8a8f8d..6034b5a 100644 --- a/elf/dl-minimal.c +++ b/elf/dl-minimal.c @@ -27,6 +27,7 @@ #include <sys/types.h> #include <ldsodefs.h> #include <_itoa.h> +#include <malloc/malloc-internal.h> #include <assert.h> @@ -90,7 +91,7 @@ __libc_memalign (size_t align, size_t n) void * weak_function malloc (size_t n) { - return __libc_memalign (sizeof (double), n); + return __libc_memalign (MALLOC_ALIGNMENT, n); } /* We use this function occasionally since the real implementation may |