Re: [PATCH] malloc.3: Scale back promises of alignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Greg,

On 25.10.2013 08:42, Greg Price wrote:
> It's not true that the return value is suitably aligned for "any
> variable"; for example, it's unsuitable for a variable like
>   float *x __attribute__ ((__vector_size__ (32)));
> which requires 32-byte alignment.  Types like this are defined in
> <avxintrin.h>, and with 16-byte alignment in <emmintrin.h> and
> <xmmintrin.h>, so the application programmer need not even know
> that a vector_size attribute has been applied.
> 
> On an x86 architecture, a program that loads from or stores to a
> pointer with this type derived from malloc can crash because GCC
> generates an aligned load/store, like MOVDQA.
> 
> The C99 standard (TC3, as of N1256) does say the return value is
> suitably aligned for "any type of object".  The C11 standard (as
> of N1570) revises this to any type with "fundamental alignment",
> which means an alignment "supported by the implementation in all
> contexts", which I suppose tautologically includes aligning
> malloc/realloc return values.
> 
> The actual behavior of current glibc malloc is to align to the
> greater of 2 * sizeof(size_t) and __alignof__ (long double),
> which may be one bit greater than this commit promises.

Thanks for the patch and the excellent commit message. I've applied.

Cheers,

Michael


> Signed-off-by: Greg Price <price@xxxxxxx>
> ---
>  man3/malloc.3 | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/man3/malloc.3 b/man3/malloc.3
> index 372b503..84d9852 100644
> --- a/man3/malloc.3
> +++ b/man3/malloc.3
> @@ -131,8 +131,8 @@ The
>  .BR malloc ()
>  and
>  .BR calloc ()
> -functions return a pointer to the allocated memory
> -that is suitably aligned for any kind of variable.
> +functions return a pointer to the allocated memory,
> +which is suitably aligned for any built-in type.
>  On error, these functions return NULL.
>  NULL may also be returned by a successful call to
>  .BR malloc ()
> @@ -154,7 +154,7 @@ function returns no value.
>  The
>  .BR realloc ()
>  function returns a pointer to the newly allocated memory, which is suitably
> -aligned for any kind of variable and may be different from
> +aligned for any built-in type and may be different from
>  .IR ptr ,
>  or NULL if the request fails.
>  If
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
My next Linux/UNIX system programming course:
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux