This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: glibc 2.21 - Machine maintainers, please test your machines.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]