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