glibc/malloc
Jonathan Wakely 8a9a593115 Add alloc_align attribute to memalign et al
GCC 4.9.0 added the alloc_align attribute to say that a function
argument specifies the alignment of the returned pointer. Clang supports
the attribute too. Using the attribute can allow a compiler to generate
better code if it knows the returned pointer has a minimum alignment.
See https://gcc.gnu.org/PR60092 for more details.

GCC implicitly knows the semantics of aligned_alloc and posix_memalign,
but not the obsolete memalign. As a result, GCC generates worse code
when memalign is used, compared to aligned_alloc.  Clang knows about
aligned_alloc and memalign, but not posix_memalign.

This change adds a new __attribute_alloc_align__ macro to <sys/cdefs.h>
and then uses it on memalign (where it helps GCC) and aligned_alloc
(where GCC and Clang already know the semantics, but it doesn't hurt)
and xposix_memalign. It can't be used on posix_memalign because that
doesn't return a pointer (the allocated pointer is returned via a void**
parameter instead).

Unlike the alloc_size attribute, alloc_align only allows a single
argument. That means the new __attribute_alloc_align__ macro doesn't
really need to be used with double parentheses to protect a comma
between its arguments. For consistency with __attribute_alloc_size__
this patch defines it the same way, so that double parentheses are
required.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-10-21 00:19:20 +01:00
..
alloc_buffer_alloc_array.c
alloc_buffer_allocate.c
alloc_buffer_copy_bytes.c
alloc_buffer_copy_string.c
alloc_buffer_create_failure.c
arena.c misc: Add __get_nprocs_sched 2021-09-27 09:13:06 -03:00
Depend added rt to malloc/Depend [BZ #27132] 2021-02-23 10:04:45 +01:00
dynarray_at_failure.c
dynarray_emplace_enlarge.c
dynarray_finalize.c
dynarray_resize_clear.c
dynarray_resize.c
dynarray-skeleton.c
dynarray.h
hooks.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
Makefile tst-mxfast: Don't run with mcheck 2021-08-05 07:36:55 +05:30
malloc-check.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
malloc-debug.c mcheck Fix malloc_usable_size [BZ #22057] 2021-07-22 18:38:16 +05:30
malloc-internal.h Add a generic malloc test for MALLOC_ALIGNMENT 2021-07-09 06:39:30 -07:00
malloc.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
malloc.h Add alloc_align attribute to memalign et al 2021-10-21 00:19:20 +01:00
mallocbug.c
mcheck-impl.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
mcheck-init.c
mcheck.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
mcheck.h
memusage.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
memusage.sh Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
memusagestat.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
morecore.c Remove __morecore and __default_morecore 2021-07-22 18:37:57 +05:30
mtrace-impl.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
mtrace.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
mtrace.pl Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
obstack.c
obstack.h
reallocarray.c
scratch_buffer_dupfree.c
scratch_buffer_grow_preserve.c
scratch_buffer_grow.c
scratch_buffer_set_array_size.c
set-freeres.c nptl: Move stack cache management, __libpthread_freeres into libc 2021-05-11 11:22:33 +02:00
thread-freeres.c dlfcn: dlerror needs to call free from the base namespace [BZ #24773] 2021-04-21 19:49:51 +02:00
tst-alloc_buffer.c
tst-calloc.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-compathooks-off.c Move malloc hooks into a compat DSO 2021-07-22 18:37:59 +05:30
tst-compathooks-on.c Move malloc hooks into a compat DSO 2021-07-22 18:37:59 +05:30
tst-dynarray-at-fail.c
tst-dynarray-fail.c
tst-dynarray-shared.h
tst-dynarray.c
tst-free-errno.c
tst-interpose-aux-nothread.c
tst-interpose-aux-thread.c
tst-interpose-aux.c
tst-interpose-aux.h
tst-interpose-nothread.c
tst-interpose-skeleton.c
tst-interpose-static-nothread.c
tst-interpose-static-thread.c
tst-interpose-thread.c
tst-mallinfo2.c tst-mallinfo2.c: Use correct multiple for total variable 2021-05-25 16:47:01 -04:00
tst-malloc_info.c
tst-malloc-backtrace.c
tst-malloc-check.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-malloc-fork-deadlock.c
tst-malloc-stats-cancellation.c malloc: Run tst-malloc-stats-cancellation via test-driver.c 2021-04-07 02:35:50 +02:00
tst-malloc-tcache-leak.c
tst-malloc-thread-exit.c
tst-malloc-thread-fail.c
tst-malloc-too-large.c
tst-malloc-usable-tunables.c
tst-malloc-usable.c
tst-malloc.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-mallocalign1.c Add a generic malloc test for MALLOC_ALIGNMENT 2021-07-09 06:39:30 -07:00
tst-mallocfork2.c
tst-mallocfork3.c posix: Add _Fork [BZ #4737] 2021-06-28 15:55:56 -03:00
tst-mallocfork.c
tst-mallocstate.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-mallopt.c
tst-memalign.c
tst-mtrace.c
tst-mtrace.sh Move malloc hooks into a compat DSO 2021-07-22 18:37:59 +05:30
tst-mxfast.c
tst-obstack.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-posix_memalign.c
tst-pvalloc-fortify.c
tst-pvalloc.c
tst-realloc.c
tst-reallocarray.c
tst-safe-linking.c tst-safe-linking: make false positives even more improbable 2021-07-19 08:29:25 +05:30
tst-scratch_buffer.c
tst-tcfree1.c
tst-tcfree2.c
tst-tcfree3.c
tst-trim1.c
tst-valloc.c
Versions Move malloc_{g,s}et_state to libc_malloc_debug 2021-07-22 18:38:10 +05:30