Skip to content

Commit b824e83

Browse files
committed
Fix type definitions of size_t and wchar_t in the built-in stddef.h
1 parent a7eb834 commit b824e83

File tree

2 files changed

+52
-27
lines changed

2 files changed

+52
-27
lines changed

src/lib/cxx/include/stddef.h

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,76 @@
1-
#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
2-
!defined(__need_wchar_t) && !defined(__need_NULL) && \
3-
!defined(__need_STDDEF_H_misc)
1+
#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
2+
!defined(__need_wchar_t) && !defined(__need_NULL) && \
3+
!defined(__need_rsize_t) && !defined(__need_nullptr_t) && \
4+
!defined(__need_max_align_t) && !defined(__need_offsetof) && \
5+
!defined(__need_wint_t)
46
#define __need_ptrdiff_t
57
#define __need_size_t
68
#define __need_wchar_t
9+
#define __need_offsetof
10+
#define __need_max_align_t
11+
12+
#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
13+
#define __need_rsize_t
14+
#endif
15+
16+
#if !defined(__STDDEF_H)
717
#define __need_NULL
8-
#define __need_STDDEF_H_misc
918
#endif
1019

20+
#endif /* no needs */
21+
1122
#ifdef __need_ptrdiff_t
1223
#undef __need_ptrdiff_t
13-
typedef long int ptrdiff_t;
24+
typedef __PTRDIFF_TYPE__ ptrdiff_t;
1425
#endif /* __need_ptrdiff_t */
1526

1627
#ifdef __need_size_t
1728
#undef __need_size_t
18-
typedef long unsigned int size_t;
29+
typedef __SIZE_TYPE__ size_t;
1930
#endif /* __need_size_t */
2031

32+
#ifdef __need_rsize_t
33+
#undef __need_rsize_t
34+
typedef __SIZE_TYPE__ rsize_t;
35+
#endif /* __need_size_t */
36+
37+
#ifdef __need_ptrdiff_t
38+
#undef __need_ptrdiff_t
39+
typedef __PTRDIFF_TYPE__ ptrdiff_t;
40+
#endif /* __need_ptrdiff_t */
41+
2142
#ifdef __need_wchar_t
2243
#undef __need_wchar_t
44+
#ifndef __cplusplus
45+
#if !defined(_WCHAR_T)
46+
#define _WCHAR_T
47+
typedef __WCHAR_TYPE__ wchar_t;
48+
#endif /* _WCHAR_T */
49+
#endif /* __cplusplus */
2350
#endif /* __need_wchar_t */
2451

2552
#ifdef __need_NULL
2653
#undef __need_NULL
27-
#undef NULL
54+
#if !defined(NULL)
2855
#define NULL 0
56+
#endif /* NULL */
2957
#endif /* __need_NULL */
3058

31-
#ifdef __need_STDDEF_H_misc
32-
#undef __need_STDDEF_H_misc
33-
typedef long unsigned int rsize_t;
59+
#ifdef __need_wint_t
60+
#undef __need_wint_t
61+
typedef __WINT_TYPE__ wint_t;
62+
#endif /* __need_wint_t */
63+
64+
#ifdef __need_offsetof
65+
#undef __need_offsetof
66+
#if !defined(offsetof)
67+
#define offsetof(t, d) __builtin_offsetof(t, d)
68+
#endif
69+
70+
#endif /* __need_offsetof */
71+
72+
#ifdef __need_max_align_t
73+
#undef __need_max_align_t
3474

3575
typedef struct {
3676
long long __clang_max_align_nonce1
@@ -40,19 +80,4 @@ typedef struct {
4080
__attribute__((__aligned__(__alignof__(long double))));
4181
} max_align_t;
4282

43-
#endif /* __need_STDDEF_H_misc */
44-
45-
#ifdef __need_wint_t
46-
#undef __need_wint_t
47-
48-
#ifdef __WINT_TYPE__
49-
typedef __WINT_TYPE__ wint_t;
50-
#else
51-
typedef int wint_t;
52-
#endif
53-
54-
#endif /* __need_wint_t */
55-
56-
#if !defined(offsetof)
57-
#define offsetof(t, d) __builtin_offsetof(t, d)
58-
#endif
83+
#endif /* __need_max_align_t */

tests/unit_tests/parser/c_stdlib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %cxx -toolchain wasm32 -verify %s
1+
// RUN: %cxx -toolchain wasm32 -verify -fcheck %s
22

33
#include <assert.h>
44
#include <complex.h>

0 commit comments

Comments
 (0)