summary refs log tree commit diff stats
path: root/tinyc/include/stddef.h
diff options
context:
space:
mode:
Diffstat (limited to 'tinyc/include/stddef.h')
-rw-r--r--tinyc/include/stddef.h46
1 files changed, 40 insertions, 6 deletions
diff --git a/tinyc/include/stddef.h b/tinyc/include/stddef.h
index aef5b3923..694d50375 100644
--- a/tinyc/include/stddef.h
+++ b/tinyc/include/stddef.h
@@ -1,20 +1,54 @@
 #ifndef _STDDEF_H
 #define _STDDEF_H
 
-#define NULL ((void *)0)
 typedef __SIZE_TYPE__ size_t;
+typedef __PTRDIFF_TYPE__ ssize_t;
 typedef __WCHAR_TYPE__ wchar_t;
 typedef __PTRDIFF_TYPE__ ptrdiff_t;
-#define offsetof(type, field) ((size_t) &((type *)0)->field)
+typedef __PTRDIFF_TYPE__ intptr_t;
+typedef __SIZE_TYPE__ uintptr_t;
 
 #ifndef __int8_t_defined
 #define __int8_t_defined
-typedef char int8_t;
-typedef short int int16_t;
-typedef int int32_t;
-typedef long long int int64_t;
+typedef signed char int8_t;
+typedef signed short int int16_t;
+typedef signed int int32_t;
+#ifdef __LP64__
+typedef signed long int int64_t;
+#else
+typedef signed long long int int64_t;
+#endif
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+#ifdef __LP64__
+typedef unsigned long int uint64_t;
+#else
+typedef unsigned long long int uint64_t;
+#endif
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
 #endif
 
+#define offsetof(type, field) ((size_t)&((type *)0)->field)
+
 void *alloca(size_t size);
 
 #endif
+
+/* Older glibc require a wint_t from <stddef.h> (when requested
+   by __need_wint_t, as otherwise stddef.h isn't allowed to
+   define this type).   Note that this must be outside the normal
+   _STDDEF_H guard, so that it works even when we've included the file
+   already (without requiring wint_t).  Some other libs define _WINT_T
+   if they've already provided that type, so we can use that as guard.
+   TCC defines __WINT_TYPE__ for us.  */
+#if defined (__need_wint_t)
+#ifndef _WINT_T
+#define _WINT_T
+typedef __WINT_TYPE__ wint_t;
+#endif
+#undef __need_wint_t
+#endif