-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
improve the libc of wasm32-freestanding target #2512
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,385 @@ | ||
#define _Addr long | ||
#define _Int64 long long | ||
#define _Reg long | ||
|
||
#if defined(__NEED_va_list) && !defined(__DEFINED_va_list) | ||
typedef __builtin_va_list va_list; | ||
#define __DEFINED_va_list | ||
#endif | ||
|
||
#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list) | ||
typedef __builtin_va_list __isoc_va_list; | ||
#define __DEFINED___isoc_va_list | ||
#endif | ||
|
||
|
||
#ifndef __cplusplus | ||
#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t) | ||
typedef int wchar_t; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think musl expects us to pass There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Rich's profile says "I don't really use or prefer to use github." - I think we should respect that preference by asking questions in |
||
#define __DEFINED_wchar_t | ||
#endif | ||
|
||
#endif | ||
|
||
#if defined(__NEED_float_t) && !defined(__DEFINED_float_t) | ||
typedef float float_t; | ||
#define __DEFINED_float_t | ||
#endif | ||
|
||
#if defined(__NEED_double_t) && !defined(__DEFINED_double_t) | ||
typedef double double_t; | ||
#define __DEFINED_double_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t) | ||
typedef struct { long long __ll; long double __ld; } max_align_t; | ||
#define __DEFINED_max_align_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_time_t) && !defined(__DEFINED_time_t) | ||
typedef long time_t; | ||
#define __DEFINED_time_t | ||
#endif | ||
|
||
#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t) | ||
typedef long suseconds_t; | ||
#define __DEFINED_suseconds_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t) | ||
typedef struct { union { int __i[9]; volatile int __vi[9]; unsigned __s[9]; } __u; } pthread_attr_t; | ||
#define __DEFINED_pthread_attr_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t) | ||
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t; | ||
#define __DEFINED_pthread_mutex_t | ||
#endif | ||
|
||
#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t) | ||
typedef struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } mtx_t; | ||
#define __DEFINED_mtx_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t) | ||
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } pthread_cond_t; | ||
#define __DEFINED_pthread_cond_t | ||
#endif | ||
|
||
#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t) | ||
typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } cnd_t; | ||
#define __DEFINED_cnd_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t) | ||
typedef struct { union { int __i[8]; volatile int __vi[8]; void *__p[8]; } __u; } pthread_rwlock_t; | ||
#define __DEFINED_pthread_rwlock_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t) | ||
typedef struct { union { int __i[5]; volatile int __vi[5]; void *__p[5]; } __u; } pthread_barrier_t; | ||
#define __DEFINED_pthread_barrier_t | ||
#endif | ||
|
||
#if defined(__NEED_size_t) && !defined(__DEFINED_size_t) | ||
typedef unsigned _Addr size_t; | ||
#define __DEFINED_size_t | ||
#endif | ||
|
||
#if defined(__NEED_uintptr_t) && !defined(__DEFINED_uintptr_t) | ||
typedef unsigned _Addr uintptr_t; | ||
#define __DEFINED_uintptr_t | ||
#endif | ||
|
||
#if defined(__NEED_ptrdiff_t) && !defined(__DEFINED_ptrdiff_t) | ||
typedef _Addr ptrdiff_t; | ||
#define __DEFINED_ptrdiff_t | ||
#endif | ||
|
||
#if defined(__NEED_ssize_t) && !defined(__DEFINED_ssize_t) | ||
typedef _Addr ssize_t; | ||
#define __DEFINED_ssize_t | ||
#endif | ||
|
||
#if defined(__NEED_intptr_t) && !defined(__DEFINED_intptr_t) | ||
typedef _Addr intptr_t; | ||
#define __DEFINED_intptr_t | ||
#endif | ||
|
||
#if defined(__NEED_regoff_t) && !defined(__DEFINED_regoff_t) | ||
typedef _Addr regoff_t; | ||
#define __DEFINED_regoff_t | ||
#endif | ||
|
||
#if defined(__NEED_register_t) && !defined(__DEFINED_register_t) | ||
typedef _Reg register_t; | ||
#define __DEFINED_register_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t) | ||
typedef signed char int8_t; | ||
#define __DEFINED_int8_t | ||
#endif | ||
|
||
#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t) | ||
typedef signed short int16_t; | ||
#define __DEFINED_int16_t | ||
#endif | ||
|
||
#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t) | ||
typedef signed int int32_t; | ||
#define __DEFINED_int32_t | ||
#endif | ||
|
||
#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t) | ||
typedef signed _Int64 int64_t; | ||
#define __DEFINED_int64_t | ||
#endif | ||
|
||
#if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t) | ||
typedef signed _Int64 intmax_t; | ||
#define __DEFINED_intmax_t | ||
#endif | ||
|
||
#if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t) | ||
typedef unsigned char uint8_t; | ||
#define __DEFINED_uint8_t | ||
#endif | ||
|
||
#if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t) | ||
typedef unsigned short uint16_t; | ||
#define __DEFINED_uint16_t | ||
#endif | ||
|
||
#if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t) | ||
typedef unsigned int uint32_t; | ||
#define __DEFINED_uint32_t | ||
#endif | ||
|
||
#if defined(__NEED_uint64_t) && !defined(__DEFINED_uint64_t) | ||
typedef unsigned _Int64 uint64_t; | ||
#define __DEFINED_uint64_t | ||
#endif | ||
|
||
#if defined(__NEED_u_int64_t) && !defined(__DEFINED_u_int64_t) | ||
typedef unsigned _Int64 u_int64_t; | ||
#define __DEFINED_u_int64_t | ||
#endif | ||
|
||
#if defined(__NEED_uintmax_t) && !defined(__DEFINED_uintmax_t) | ||
typedef unsigned _Int64 uintmax_t; | ||
#define __DEFINED_uintmax_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t) | ||
typedef unsigned mode_t; | ||
#define __DEFINED_mode_t | ||
#endif | ||
|
||
#if defined(__NEED_nlink_t) && !defined(__DEFINED_nlink_t) | ||
typedef unsigned _Reg nlink_t; | ||
#define __DEFINED_nlink_t | ||
#endif | ||
|
||
#if defined(__NEED_off_t) && !defined(__DEFINED_off_t) | ||
typedef _Int64 off_t; | ||
#define __DEFINED_off_t | ||
#endif | ||
|
||
#if defined(__NEED_ino_t) && !defined(__DEFINED_ino_t) | ||
typedef unsigned _Int64 ino_t; | ||
#define __DEFINED_ino_t | ||
#endif | ||
|
||
#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t) | ||
typedef unsigned _Int64 dev_t; | ||
#define __DEFINED_dev_t | ||
#endif | ||
|
||
#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t) | ||
typedef long blksize_t; | ||
#define __DEFINED_blksize_t | ||
#endif | ||
|
||
#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t) | ||
typedef _Int64 blkcnt_t; | ||
#define __DEFINED_blkcnt_t | ||
#endif | ||
|
||
#if defined(__NEED_fsblkcnt_t) && !defined(__DEFINED_fsblkcnt_t) | ||
typedef unsigned _Int64 fsblkcnt_t; | ||
#define __DEFINED_fsblkcnt_t | ||
#endif | ||
|
||
#if defined(__NEED_fsfilcnt_t) && !defined(__DEFINED_fsfilcnt_t) | ||
typedef unsigned _Int64 fsfilcnt_t; | ||
#define __DEFINED_fsfilcnt_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t) | ||
typedef unsigned wint_t; | ||
#define __DEFINED_wint_t | ||
#endif | ||
|
||
#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t) | ||
typedef unsigned long wctype_t; | ||
#define __DEFINED_wctype_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t) | ||
typedef void * timer_t; | ||
#define __DEFINED_timer_t | ||
#endif | ||
|
||
#if defined(__NEED_clockid_t) && !defined(__DEFINED_clockid_t) | ||
typedef int clockid_t; | ||
#define __DEFINED_clockid_t | ||
#endif | ||
|
||
#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t) | ||
typedef long clock_t; | ||
#define __DEFINED_clock_t | ||
#endif | ||
|
||
#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval) | ||
struct timeval { time_t tv_sec; suseconds_t tv_usec; }; | ||
#define __DEFINED_struct_timeval | ||
#endif | ||
|
||
#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec) | ||
struct timespec { time_t tv_sec; long tv_nsec; }; | ||
#define __DEFINED_struct_timespec | ||
#endif | ||
|
||
|
||
#if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t) | ||
typedef int pid_t; | ||
#define __DEFINED_pid_t | ||
#endif | ||
|
||
#if defined(__NEED_id_t) && !defined(__DEFINED_id_t) | ||
typedef unsigned id_t; | ||
#define __DEFINED_id_t | ||
#endif | ||
|
||
#if defined(__NEED_uid_t) && !defined(__DEFINED_uid_t) | ||
typedef unsigned uid_t; | ||
#define __DEFINED_uid_t | ||
#endif | ||
|
||
#if defined(__NEED_gid_t) && !defined(__DEFINED_gid_t) | ||
typedef unsigned gid_t; | ||
#define __DEFINED_gid_t | ||
#endif | ||
|
||
#if defined(__NEED_key_t) && !defined(__DEFINED_key_t) | ||
typedef int key_t; | ||
#define __DEFINED_key_t | ||
#endif | ||
|
||
#if defined(__NEED_useconds_t) && !defined(__DEFINED_useconds_t) | ||
typedef unsigned useconds_t; | ||
#define __DEFINED_useconds_t | ||
#endif | ||
|
||
|
||
#ifdef __cplusplus | ||
#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t) | ||
typedef unsigned long pthread_t; | ||
#define __DEFINED_pthread_t | ||
#endif | ||
|
||
#else | ||
#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t) | ||
typedef struct __pthread * pthread_t; | ||
#define __DEFINED_pthread_t | ||
#endif | ||
|
||
#endif | ||
#if defined(__NEED_pthread_once_t) && !defined(__DEFINED_pthread_once_t) | ||
typedef int pthread_once_t; | ||
#define __DEFINED_pthread_once_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_key_t) && !defined(__DEFINED_pthread_key_t) | ||
typedef unsigned pthread_key_t; | ||
#define __DEFINED_pthread_key_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_spinlock_t) && !defined(__DEFINED_pthread_spinlock_t) | ||
typedef int pthread_spinlock_t; | ||
#define __DEFINED_pthread_spinlock_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t) | ||
typedef struct { unsigned __attr; } pthread_mutexattr_t; | ||
#define __DEFINED_pthread_mutexattr_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_condattr_t) && !defined(__DEFINED_pthread_condattr_t) | ||
typedef struct { unsigned __attr; } pthread_condattr_t; | ||
#define __DEFINED_pthread_condattr_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t) | ||
typedef struct { unsigned __attr; } pthread_barrierattr_t; | ||
#define __DEFINED_pthread_barrierattr_t | ||
#endif | ||
|
||
#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t) | ||
typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t; | ||
#define __DEFINED_pthread_rwlockattr_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_FILE) && !defined(__DEFINED_FILE) | ||
typedef struct _IO_FILE FILE; | ||
#define __DEFINED_FILE | ||
#endif | ||
|
||
|
||
#if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t) | ||
typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t; | ||
#define __DEFINED_mbstate_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t) | ||
typedef struct __locale_struct * locale_t; | ||
#define __DEFINED_locale_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t) | ||
typedef struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t; | ||
#define __DEFINED_sigset_t | ||
#endif | ||
|
||
|
||
#if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec) | ||
struct iovec { void *iov_base; size_t iov_len; }; | ||
#define __DEFINED_struct_iovec | ||
#endif | ||
|
||
|
||
#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t) | ||
typedef unsigned socklen_t; | ||
#define __DEFINED_socklen_t | ||
#endif | ||
|
||
#if defined(__NEED_sa_family_t) && !defined(__DEFINED_sa_family_t) | ||
typedef unsigned short sa_family_t; | ||
#define __DEFINED_sa_family_t | ||
#endif | ||
|
||
|
||
#undef _Addr | ||
#undef _Int64 | ||
#undef _Reg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we have created
libc/musl/arch/wasm32/bits/alltypes.h.in
instead?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure why we even have those .in files; it might be a mistake.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Want to make an issue to follow that up?