[PATCH v2 3/3] Fix <sys/_types.h> issues with <stddef.h>

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
A commit from 2016 tried to address this GCC provided <stddef.h> issue

    #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
      || defined(__DragonFly__) \
      || defined(__FreeBSD_kernel__)
    /* __size_t is a typedef on FreeBSD 5, must not trash it. */
    #elif defined (__VMS__)
    /* __size_t is also a typedef on VMS.  */
    #else
    #define __size_t
    #endif

with an include of <stddef.h> before <sys/_types.h> in <sys/types.h>.
Is is not robust enough.  Do the include of <stddef.h> in <sys/_types.h>
directly and request only the necessary types.

Signed-off-by: Sebastian Huber <[email protected]>
---
 newlib/libc/include/sys/_types.h | 6 +++---
 newlib/libc/include/sys/types.h  | 2 --
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/newlib/libc/include/sys/_types.h b/newlib/libc/include/sys/_types.h
index 0ed56ed44..017a0aaf6 100644
--- a/newlib/libc/include/sys/_types.h
+++ b/newlib/libc/include/sys/_types.h
@@ -19,6 +19,9 @@
 #ifndef	_SYS__TYPES_H
 #define _SYS__TYPES_H
 
+#define __need_size_t
+#define __need_wint_t
+#include <stddef.h>
 #include <newlib.h>
 #include <sys/config.h>
 #include <machine/_types.h>
@@ -154,9 +157,6 @@ typedef long _ssize_t;
 
 typedef _ssize_t __ssize_t;
 
-#define __need_wint_t
-#include <stddef.h>
-
 #ifndef __machine_mbstate_t_defined
 /* Conversion state information.  */
 typedef struct
diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h
index 19e3de689..4613ac81f 100644
--- a/newlib/libc/include/sys/types.h
+++ b/newlib/libc/include/sys/types.h
@@ -42,8 +42,6 @@ typedef __intptr_t register_t;
 #ifndef __need_inttypes
 
 #define _SYS_TYPES_H
-/* <stddef.h> must be before <sys/_types.h> for __size_t considerations */
-#include <stddef.h>
 #include <sys/_types.h>
 #include <sys/_stdint.h>
 
-- 
2.16.4
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.