glibc 2.21 - Machine maintainers, please test your machines.

Chris Metcalf cmetcalf@ezchip.com
Sun Jan 25 23:05:00 GMT 2015


On 1/25/2015 4:51 PM, H.J. Lu wrote:

> This is for x86.  Each target can do something like it if needed.

This does change the ABI for existing code, however, which may legitimately
have sem_t objects that are only aligned to 4-byte boundaries.  Your change
is a good idea for new platforms.  I suppose we could also do something
with symbol versioning to use it for existing 32-bit platforms with
64-bit atomics, too.  So there seem to be multiple fixes we can consider.

> H.J.
> ---
> diff --git a/sysdeps/x86/bits/semaphore.h b/sysdeps/x86/bits/semaphore.h
> index 18b2b3c..4890e0d 100644
> --- a/sysdeps/x86/bits/semaphore.h
> +++ b/sysdeps/x86/bits/semaphore.h
> @@ -28,6 +28,11 @@
>   # define __SIZEOF_SEM_T	16
>   #endif
>   
> +#ifdef __x86_64__
> +# define __SEM_ALIGN_T	long long int
> +#else
> +# define __SEM_ALIGN_T	long int
> +#endif
>   
>   /* Value returned if `sem_open' failed.  */
>   #define SEM_FAILED      ((sem_t *) 0)
> @@ -36,5 +41,5 @@
>   typedef union
>   {
>     char __size[__SIZEOF_SEM_T];
> -  long int __align;
> +  __SEM_ALIGN_T __align;
>   } sem_t;
>
>
-- 
Chris Metcalf, EZChip Semiconductor
http://www.ezchip.com



More information about the Libc-alpha mailing list