fix x32 pthread type definitions
authorRich Felker <dalias@aerifal.cx>
Wed, 4 Mar 2015 16:33:26 +0000 (11:33 -0500)
committerRich Felker <dalias@aerifal.cx>
Wed, 4 Mar 2015 16:33:26 +0000 (11:33 -0500)
the previous definitions were copied from x86_64. not only did they
fail to match the ABI sizes; they also wrongly encoded an assumption
that long/pointer types are twice as large as int.

arch/x32/bits/alltypes.h.in

index 38230c42d9798b86b91bf0e7ce92f4ad23af567c..4f218817fa7a8004078fdfa6ce4f52e07c596ba6 100644 (file)
@@ -22,10 +22,10 @@ TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
 TYPEDEF long long time_t;
 TYPEDEF long long suseconds_t;
 
-TYPEDEF struct { union { int __i[14]; volatile int __vi[14]; unsigned long __s[7]; } __u; } pthread_attr_t;
-TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } pthread_mutex_t;
-TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } mtx_t;
-TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } pthread_cond_t;
-TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } cnd_t;
-TYPEDEF struct { union { int __i[14]; volatile int __vi[14]; void *__p[7]; } __u; } pthread_rwlock_t;
-TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; void *__p[4]; } __u; } pthread_barrier_t;
+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; unsigned long __s[8]; } __u; } pthread_attr_t;
+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; volatile void *volatile __p[8]; } __u; } pthread_mutex_t;
+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; volatile void *volatile __p[8]; } __u; } mtx_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } pthread_cond_t;
+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } cnd_t;
+TYPEDEF struct { union { int __i[11]; volatile int __vi[11]; void *__p[11]; } __u; } pthread_rwlock_t;
+TYPEDEF struct { union { int __i[5]; volatile int __vi[5]; void *__p[5]; } __u; } pthread_barrier_t;