Re: clang 3.3/3.4 fails to build items that use stdlib.h because of __alloc_size attribute assigned to posix_memalign

From: Conrad Meyer <cem_at_freebsd.org>
Date: Tue, 5 Jul 2016 13:14:33 -0700
Whoops, missed reply-all the first time.

It seems pretty clear that alloc_size (return value is a memory
allocation of size from parameter N) does not apply to posix_memalign,
because posix_memalign's allocation is stored via a pointer argument
rather than return value.

https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes

IMO the attribute should be removed from posix_memalign in stdlib.h

Best,
Conrad

On Tue, Jul 5, 2016 at 1:07 PM, Ngie Cooper (yaneurabeya)
<yaneurabeya_at_gmail.com> wrote:
> Hi,
>         It looks like clang 3.3/3.4 from ports both don’t like __alloc_size being attached to posix_memalign. This only concerns me because it might make the src upgrade path from 9.3/10.3 to 11.0 painful.
>         Thoughts on how this should be fixed or whether or not we care?
> Thanks,
> -Ngie
>
> $ cd usr.sbin/bhyve; make clean; script ts make all CC=clang34
> ...
> In file included from /usr/src/svn/usr.sbin/bhyve/atkbdc.c:40:
> /usr/include/stdlib.h:176:6: error: '__alloc_size__' attribute only applies to functions that return a pointer [-Werror,-Wignored-attributes]
>             __alloc_size(3);                    /* (ADV) */
>             ^
> /usr/include/sys/cdefs.h:241:40: note: expanded from macro '__alloc_size'
> #define __alloc_size(x) __attribute__((__alloc_size__(x)))
>                                        ^
> 1 error generated.
> *** Error code 1
>
> Stop.
> make: stopped in /usr/src/svn/usr.sbin/bhyve
> $ (set -x; clang33 --version; clang34 --version)
> + clang33 --version
> clang version 3.3 (tags/RELEASE_33/final)
> Target: x86_64-portbld-freebsd11.0
> Thread model: posix
> + clang34 --version
> clang version 3.4.2 (tags/RELEASE_34/dot2-final)
> Target: x86_64-portbld-freebsd11.0
> Thread model: posix
>
> 282988        pfg int    posix_memalign(void **, size_t, size_t) __nonnull(1) __alloc_align(2)
> 281130        pfg           __alloc_size(3);                    /* (ADV) */
Received on Tue Jul 05 2016 - 18:14:35 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:06 UTC