blob: 81aaa17cb81a77c20c1ca5cc49c2d24611a87f49 [file] [log] [blame]
Nico Huber0a31d5e2021-06-16 17:54:50 +00001#ifndef _STDDEF_H
2#define _STDDEF_H
Stefan Reinauer6ceed092013-04-08 16:55:47 -07003
4#include <arch/types.h>
Thomas Heijligen3f9613b2022-11-28 11:46:48 +01005
6#if !defined(offsetof)
7#define offsetof(type, member) __builtin_offsetof(type, member)
8#endif
Stefan Reinauer6ceed092013-04-08 16:55:47 -07009
Nico Huber2eae4102021-06-16 17:46:17 +000010#ifndef __WCHAR_TYPE__
11#define __WCHAR_TYPE__ int
12#endif
13#ifndef __cplusplus
14typedef __WCHAR_TYPE__ wchar_t;
15#endif
16
Stefan Reinauer6ceed092013-04-08 16:55:47 -070017#ifndef __SIZE_TYPE__
18#define __SIZE_TYPE__ unsigned long
19#endif
20typedef __SIZE_TYPE__ size_t;
Stefan Reinauerf8b36502013-05-02 14:02:28 -070021/* There is a GCC macro for a size_t type, but not
22 * for a ssize_t type. Below construct tricks GCC
23 * into making __SIZE_TYPE__ signed.
24 */
25#define unsigned signed
26typedef __SIZE_TYPE__ ssize_t;
27#undef unsigned
Stefan Reinauer6ceed092013-04-08 16:55:47 -070028
Nico Huber0a31d5e2021-06-16 17:54:50 +000029#endif