]> xenbits.xensource.com Git - unikraft/libs/newlib.git/commitdiff
Fix selectively included type definitions
authorFlorian Schmidt <florian.schmidt@neclab.eu>
Tue, 26 Mar 2019 13:51:36 +0000 (14:51 +0100)
committerFelipe Huici <felipe.huici@neclab.eu>
Tue, 26 Mar 2019 14:28:37 +0000 (15:28 +0100)
The newlib glue code uses code originally taken from musl. In musl, the
way to selectively include certain data types from those defined in
types.h is through the use of __NEED_* macros. Newlib uses a different
approach: it provides all definitions as underscored variants via
sys/_types.h, and the header files then typedef them over to the normal
variants as needed, with preprocessor guards around each of them to
provent duplications.

Replace the __NEED macros (which are effectively noops, so none of those
data types ever got properly defined in those headers) with the newlib
_types solution.

Signed-off-by: Florian Schmidt <florian.schmidt@neclab.eu>
Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>
include/dirent.h
include/sys/mman.h
include/sys/resource.h
include/sys/statvfs.h

index 37589b425ab8974065726b68021b5fb47a4533d3..85329304337f42e07efcceb0e09d74f1331687bd 100644 (file)
 extern "C" {
 #endif
 
-#define __NEED_ino_t
-#define __NEED_off_t
+#include <sys/_types.h>
+
+#ifndef _INO_T_DECLARED
+typedef __ino_t ino_t;
+#define _INO_T_DECLARED
+#endif
+
+#ifndef _OFF_T_DECLARED
+typedef __off_t off_t;
+#define _OFF_T_DECLARED
+#endif
+
 #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
-#define __NEED_size_t
+#ifndef _SIZE_T_DECLARED
+typedef __size_t size_t;
+#define _SIZE_T_DECLARED
+#endif
 #endif
 
 typedef struct __dirstream DIR;
index 7abf57f64dde4e5550f78639f6db245194e26439..147ed5d2295869760fbd8d23efbade9c0b7052b0 100644 (file)
 extern "C" {
 #endif
 
+#include <sys/_types.h>
 #include <stddef.h>
 
-#define __NEED_mode_t
-#define __NEED_size_t
-#define __NEED_off_t
+#ifndef _OFF_T_DECLARED
+typedef __off_t off_t;
+#define _OFF_T_DECLARED
+#endif
+
+#ifndef _SIZE_T_DECLARED
+typedef __size_t size_t;
+#define _SIZE_T_DECLARED
+#endif
+
+#ifndef _MODE_T_DECLARED
+typedef __mode_t mode_t;
+#define _MODE_T_DECLARED
+#endif
 
 #if defined(_GNU_SOURCE)
-#define __NEED_ssize_t
+#ifndef _SSIZE_T_DECLARED
+typedef __ssize_t ssize_t;
+#define _SSIZE_T_DECLARED
+#endif
 #endif
 
 #define MAP_FAILED ((void *) -1)
index 5174b65471ad0fe1c8fc6b0afbe63d26d33e4125..82eb6316cdc7b7aa031a1e3f8653d2362d632e96 100644 (file)
 extern "C" {
 #endif
 
+#include <sys/_types.h>
 #include <sys/time.h>
 
-#define __NEED_id_t
+#ifndef _ID_T_DECLARED
+typedef __id_t id_t;
+#define _ID_T_DECLARED
+#endif
 
 #ifdef _GNU_SOURCE
-#define __NEED_pid_t
+#ifndef _PID_T_DECLARED
+typedef __pid_t pid_t;
+#define _PID_T_DECLARED
+#endif
 #endif
 
 typedef unsigned long long rlim_t;
index 0357eec5c9c76071d610f724f1f7ed4054af221f..96ef8513c6c2e5562e8817aff6cf7f495e16ef75 100644 (file)
 extern "C" {
 #endif
 
-#define __NEED_fsblkcnt_t
-#define __NEED_fsfilcnt_t
-#include <sys/types.h>
 #include <endian.h>
+#include <sys/_types.h>
+
+#ifndef _FSBLKCNT_T_DECLARED
+typedef __fsblkcnt_t fsblkcnt_t;
+#define _FSBLKCNT_T_DECLARED
+#endif
+
+#ifndef _FSFILCNT_T_DECLARED
+typedef __fsfilcnt_t fsfilcnt_t;
+#define _FSFILCNT_T_DECLARED
+#endif
 
 struct statvfs {
        unsigned long f_bsize, f_frsize;