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 Sun, Jan 25, 2015 at 10:12:23AM -0800, H.J. Lu wrote:
> On Sun, Jan 25, 2015 at 8:45 AM, Chris Metcalf <cmetcalf@ezchip.com> wrote:
> > On 1/25/2015 10:18 AM, Chris Metcalf wrote:
> >>
> >> I'm now running with the following change, to see if tilegx32 will
> >> also pass with it; this implements my suggestion of rounding new_sem to
> >> an 8-byte boundary explicitly on ILP32 platforms.
> >
> >
> > With my proposed change, tilegx32 (and tilegx64) pass all the tests.
> > Repeated
> > here with a suitable ChangeLog.  Let me know if this is acceptable to commit
> > for 2.21.
> >
> > 2015-01-25  Chris Metcalf  <cmetcalf@ezchip.com>
> >
> >         * sysdeps/nptl/internaltypes.h (to_new_sem): Define.  Provides new
> >         behavior for [__HAVE_64B_ATOMICS && !defined (_LP64)].
> >         * nptl/sem_getvalue.c (__new_sem_getvalue): Use to_new_sem.
> >         * nptl/sem_init.c (__new_sem_init): Likewise.
> >         * nptl/sem_post.c (__new_sem_post): Likewise.
> >         * nptl/sem_wait.c (__new_sem_wait): Likewise.
> >         (__new_sem_trywait): Likewise.
> >         * nptl/sem_timedwait.c (sem_timedwait): Likewise.
> >         * nptl/sem_open.c (sem_open): Add comment about to_new_sem.
> >
> >
> 
> Can you try something similar to siginfo_t in:
> 
> sysdeps/unix/sysv/linux/x86/bits/siginfo.h
> 
> We had a similar problem on x32 before.
> 
> 

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

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;


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