[build] Use __SIZE_TYPE__ macro in definition of size_t
authorJoshua Oreman <oremanj@rwcr.net>
Tue, 31 Mar 2009 06:20:11 +0000 (07:20 +0100)
committerMichael Brown <mcb30@etherboot.org>
Tue, 31 Mar 2009 06:21:07 +0000 (07:21 +0100)
This is required in order to build on Mac OS X.

Modified-by: Michael Brown <mcb30@etherboot.org>
Signed-off-by: Michael Brown <mcb30@etherboot.org>
src/arch/i386/include/bits/stdint.h
src/arch/x86_64/include/bits/stdint.h
src/include/stdint.h

index 6ccf097..9eb72e9 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _BITS_STDINT_H
 #define _BITS_STDINT_H
 
-typedef unsigned int           size_t;
-typedef signed int             ssize_t;
+typedef __SIZE_TYPE__          size_t;
+typedef signed long            ssize_t;
 typedef signed long            off_t;
 
 typedef unsigned char          uint8_t;
index 23bae9c..9eb72e9 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef _BITS_STDINT_H
 #define _BITS_STDINT_H
 
-typedef unsigned long          size_t;
+typedef __SIZE_TYPE__          size_t;
 typedef signed long            ssize_t;
 typedef signed long            off_t;
 
index 4b0e44f..dc4bd8c 100644 (file)
@@ -1,6 +1,16 @@
 #ifndef _STDINT_H
 #define _STDINT_H
 
+/*
+ * This is a standard predefined macro on all gcc's I've seen. It's
+ * important that we define size_t in the same way as the compiler,
+ * because that's what it's expecting when it checks %zd/%zx printf
+ * format specifiers.
+ */
+#ifndef __SIZE_TYPE__
+#define __SIZE_TYPE__ unsigned long /* safe choice on most systems */
+#endif
+
 #include <bits/stdint.h>
 
 typedef int8_t s8;