Skip to content

Commit e6d6ef5

Browse files
authored
Revise alltypes.h update process. NFC (#24773)
Align it with musl, i.e. only update `alltypes.h.in` and regenerate `alltypes.h` using a script.
1 parent 5105b4f commit e6d6ef5

File tree

4 files changed

+193
-112
lines changed

4 files changed

+193
-112
lines changed

system/lib/libc/musl/arch/emscripten/bits/alltypes.h

Lines changed: 134 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,59 @@
1-
#define __LITTLE_ENDIAN 1234
2-
#define __BIG_ENDIAN 4321
3-
#define __USE_TIME_BITS64 1
4-
5-
#define __BYTE_ORDER __LITTLE_ENDIAN
6-
7-
#define __LONG_MAX __LONG_MAX__
8-
1+
/*
2+
* The .h version of this file is generated from the .h.in.
3+
* See update_alltypes.sh.
4+
*/
95
#define _Addr __PTRDIFF_TYPE__
106
#define _Int64 __INT64_TYPE__
117
#define _Reg __PTRDIFF_TYPE__
128

13-
#if __GNUC__ >= 3
14-
#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
15-
typedef __builtin_va_list va_list;
16-
#define __DEFINED_va_list
17-
#endif
9+
#define __BYTE_ORDER 1234
10+
#define __LONG_MAX __LONG_MAX__
1811

19-
#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list)
20-
typedef __builtin_va_list __isoc_va_list;
21-
#define __DEFINED___isoc_va_list
12+
#ifndef __cplusplus
13+
#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
14+
typedef __WCHAR_TYPE__ wchar_t;
15+
#define __DEFINED_wchar_t
2216
#endif
2317

24-
#else
25-
#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
26-
typedef struct __va_list * va_list;
27-
#define __DEFINED_va_list
2818
#endif
29-
30-
#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list)
31-
typedef struct __va_list * __isoc_va_list;
32-
#define __DEFINED___isoc_va_list
19+
#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
20+
typedef __WINT_TYPE__ wint_t;
21+
#define __DEFINED_wint_t
3322
#endif
3423

24+
25+
// XXX EMSCRIPTEN: ensure it's always 32-bits even in wasm64
26+
#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t)
27+
typedef int blkcnt_t;
28+
#define __DEFINED_blkcnt_t
3529
#endif
3630

37-
#ifndef __cplusplus
38-
#ifdef __WCHAR_TYPE__
39-
#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
40-
typedef __WCHAR_TYPE__ wchar_t;
41-
#define __DEFINED_wchar_t
31+
#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t)
32+
typedef int blksize_t;
33+
#define __DEFINED_blksize_t
4234
#endif
4335

44-
#else
45-
#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
46-
typedef int wchar_t;
47-
#define __DEFINED_wchar_t
36+
#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t)
37+
typedef int clock_t;
38+
#define __DEFINED_clock_t
4839
#endif
4940

41+
#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t)
42+
typedef unsigned int dev_t;
43+
#define __DEFINED_dev_t
5044
#endif
45+
46+
#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
47+
typedef int suseconds_t;
48+
#define __DEFINED_suseconds_t
5149
#endif
52-
#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
53-
typedef __WINT_TYPE__ wint_t;
54-
#define __DEFINED_wint_t
50+
51+
#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t)
52+
typedef unsigned int wctype_t;
53+
#define __DEFINED_wctype_t
5554
#endif
5655

5756

58-
#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0
5957
#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
6058
typedef float float_t;
6159
#define __DEFINED_float_t
@@ -66,76 +64,54 @@ typedef double double_t;
6664
#define __DEFINED_double_t
6765
#endif
6866

69-
#else
70-
#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
71-
typedef long double float_t;
72-
#define __DEFINED_float_t
73-
#endif
7467

75-
#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
76-
typedef long double double_t;
77-
#define __DEFINED_double_t
68+
#ifndef __cplusplus
69+
#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
70+
typedef struct { _Alignas(8) long long __ll; long double __ld; } max_align_t;
71+
#define __DEFINED_max_align_t
7872
#endif
7973

74+
#elif defined(__GNUC__)
75+
#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
76+
typedef struct { __attribute__((__aligned__(8))) long long __ll; long double __ld; } max_align_t;
77+
#define __DEFINED_max_align_t
8078
#endif
8179

82-
#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
83-
typedef _Int64 time_t;
84-
#define __DEFINED_time_t
80+
#else
81+
#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
82+
typedef struct { alignas(8) long long __ll; long double __ld; } max_align_t;
83+
#define __DEFINED_max_align_t
8584
#endif
8685

87-
#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
88-
typedef int suseconds_t; /* XXX EMSCRIPTEN: ensure it's always 32-bits even in wasm64 */
89-
#define __DEFINED_suseconds_t
9086
#endif
9187

92-
88+
// For canvas transfer implementation in Emscripten, use an extra control field
89+
// to pass a pointer to a string denoting the WebGL canvases to transfer.
9390
#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
94-
typedef struct {
95-
union {
96-
int __i[10];
97-
volatile int __vi[10];
98-
unsigned long __s[10];
99-
} __u;
100-
#ifdef __EMSCRIPTEN__
101-
// For canvas transfer implementation in Emscripten, use an extra control field
102-
// to pass a pointer to a string denoting the WebGL canvases to transfer.
103-
const char *_a_transferredcanvases;
104-
#endif
105-
} pthread_attr_t;
91+
typedef struct { union { int __i[10]; volatile int __vi[10]; unsigned long __s[10]; } __u; const char *_a_transferredcanvases; } pthread_attr_t;
10692
#define __DEFINED_pthread_attr_t
10793
#endif
10894

95+
96+
// TODO(kleisauke): Remove these two typedefs.
10997
#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
110-
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void *__p[6]; } __u; } pthread_mutex_t;
98+
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void * /*volatile*/__p[6]; } __u; } pthread_mutex_t;
11199
#define __DEFINED_pthread_mutex_t
112100
#endif
113101

114102
#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t)
115-
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void *__p[6]; } __u; } mtx_t;
103+
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void * /*volatile*/__p[6]; } __u; } mtx_t;
116104
#define __DEFINED_mtx_t
117105
#endif
118106

119-
#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
120-
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } pthread_cond_t;
121-
#define __DEFINED_pthread_cond_t
122-
#endif
123-
124-
#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t)
125-
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } cnd_t;
126-
#define __DEFINED_cnd_t
127-
#endif
128-
129-
#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
130-
typedef struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
131-
#define __DEFINED_pthread_rwlock_t
132-
#endif
133-
134-
#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
135-
typedef struct { union { int __i[5]; volatile int __vi[5]; void *__p[5]; } __u; } pthread_barrier_t;
136-
#define __DEFINED_pthread_barrier_t
137-
#endif
138107

108+
// END EMSCRIPTEN-SPECIFIC DEFINITIONS
109+
//
110+
// Below here are the shared musl definitions. The emscripten-specific definitions above will take precedence
111+
// due to the `__DEFINED_` macro system.
112+
#define __LITTLE_ENDIAN 1234
113+
#define __BIG_ENDIAN 4321
114+
#define __USE_TIME_BITS64 1
139115

140116
#if defined(__NEED_size_t) && !defined(__DEFINED_size_t)
141117
typedef unsigned _Addr size_t;
@@ -172,29 +148,39 @@ typedef _Reg register_t;
172148
#define __DEFINED_register_t
173149
#endif
174150

151+
#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
152+
typedef _Int64 time_t;
153+
#define __DEFINED_time_t
154+
#endif
155+
156+
#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
157+
typedef _Int64 suseconds_t;
158+
#define __DEFINED_suseconds_t
159+
#endif
160+
175161

176162
#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t)
177163
typedef signed char int8_t;
178164
#define __DEFINED_int8_t
179165
#endif
180166

181167
#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t)
182-
typedef short int16_t;
168+
typedef signed short int16_t;
183169
#define __DEFINED_int16_t
184170
#endif
185171

186172
#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t)
187-
typedef int int32_t;
173+
typedef signed int int32_t;
188174
#define __DEFINED_int32_t
189175
#endif
190176

191177
#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t)
192-
typedef _Int64 int64_t;
178+
typedef signed _Int64 int64_t;
193179
#define __DEFINED_int64_t
194180
#endif
195181

196182
#if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t)
197-
typedef _Int64 intmax_t;
183+
typedef signed _Int64 intmax_t;
198184
#define __DEFINED_intmax_t
199185
#endif
200186

@@ -250,17 +236,17 @@ typedef unsigned _Int64 ino_t;
250236
#endif
251237

252238
#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t)
253-
typedef unsigned int dev_t;
239+
typedef unsigned _Int64 dev_t;
254240
#define __DEFINED_dev_t
255241
#endif
256242

257243
#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t)
258-
typedef int blksize_t; /* XXX EMSCRIPTEN: ensure it's always 32-bits even in wasm64 */
244+
typedef long blksize_t;
259245
#define __DEFINED_blksize_t
260246
#endif
261247

262248
#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t)
263-
typedef int blkcnt_t;
249+
typedef _Int64 blkcnt_t;
264250
#define __DEFINED_blkcnt_t
265251
#endif
266252

@@ -274,13 +260,14 @@ typedef unsigned _Int64 fsfilcnt_t;
274260
#define __DEFINED_fsfilcnt_t
275261
#endif
276262

263+
277264
#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
278265
typedef unsigned wint_t;
279266
#define __DEFINED_wint_t
280267
#endif
281268

282269
#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t)
283-
typedef unsigned int wctype_t; /* XXX EMSCRIPTEN: ensure it's always 32-bits even in wasm64 */
270+
typedef unsigned long wctype_t;
284271
#define __DEFINED_wctype_t
285272
#endif
286273

@@ -296,22 +283,17 @@ typedef int clockid_t;
296283
#endif
297284

298285
#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t)
299-
typedef int clock_t; /* XXX EMSCRIPTEN: ensure it's always 32-bits even in wasm64 */
286+
typedef long clock_t;
300287
#define __DEFINED_clock_t
301288
#endif
302289

303-
#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
304-
typedef struct { long long __ll; long double __ld; } max_align_t;
305-
#define __DEFINED_max_align_t
306-
#endif
307-
308290
#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval)
309291
struct timeval { time_t tv_sec; suseconds_t tv_usec; };
310292
#define __DEFINED_struct_timeval
311293
#endif
312294

313295
#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec)
314-
struct timespec { time_t tv_sec; long tv_nsec; };
296+
struct timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); };
315297
#define __DEFINED_struct_timespec
316298
#endif
317299

@@ -396,12 +378,28 @@ typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t;
396378
#endif
397379

398380

381+
#if defined(__NEED_struct__IO_FILE) && !defined(__DEFINED_struct__IO_FILE)
382+
struct _IO_FILE { char __x; };
383+
#define __DEFINED_struct__IO_FILE
384+
#endif
385+
399386
#if defined(__NEED_FILE) && !defined(__DEFINED_FILE)
400387
typedef struct _IO_FILE FILE;
401388
#define __DEFINED_FILE
402389
#endif
403390

404391

392+
#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
393+
typedef __builtin_va_list va_list;
394+
#define __DEFINED_va_list
395+
#endif
396+
397+
#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list)
398+
typedef __builtin_va_list __isoc_va_list;
399+
#define __DEFINED___isoc_va_list
400+
#endif
401+
402+
405403
#if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t)
406404
typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
407405
#define __DEFINED_mbstate_t
@@ -443,6 +441,42 @@ typedef unsigned short sa_family_t;
443441
#endif
444442

445443

444+
#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
445+
typedef struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t;
446+
#define __DEFINED_pthread_attr_t
447+
#endif
448+
449+
#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
450+
typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t;
451+
#define __DEFINED_pthread_mutex_t
452+
#endif
453+
454+
#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t)
455+
typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t;
456+
#define __DEFINED_mtx_t
457+
#endif
458+
459+
#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
460+
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t;
461+
#define __DEFINED_pthread_cond_t
462+
#endif
463+
464+
#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t)
465+
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t;
466+
#define __DEFINED_cnd_t
467+
#endif
468+
469+
#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
470+
typedef struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t;
471+
#define __DEFINED_pthread_rwlock_t
472+
#endif
473+
474+
#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
475+
typedef struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t;
476+
#define __DEFINED_pthread_barrier_t
477+
#endif
478+
479+
446480
#undef _Addr
447481
#undef _Int64
448482
#undef _Reg

0 commit comments

Comments
 (0)