summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Oreman2009-03-31 08:20:11 +0200
committerMichael Brown2009-03-31 08:21:07 +0200
commit820b11dc0ae315a33bbf0cd2cca91ca592e280a3 (patch)
treef61a4a765fc0e060385ebaf9d1257b095e0248e2
parent[3c90x] Add missing size_t format specifier (diff)
downloadipxe-820b11dc0ae315a33bbf0cd2cca91ca592e280a3.tar.gz
ipxe-820b11dc0ae315a33bbf0cd2cca91ca592e280a3.tar.xz
ipxe-820b11dc0ae315a33bbf0cd2cca91ca592e280a3.zip
[build] Use __SIZE_TYPE__ macro in definition of size_t
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>
-rw-r--r--src/arch/i386/include/bits/stdint.h4
-rw-r--r--src/arch/x86_64/include/bits/stdint.h2
-rw-r--r--src/include/stdint.h10
3 files changed, 13 insertions, 3 deletions
diff --git a/src/arch/i386/include/bits/stdint.h b/src/arch/i386/include/bits/stdint.h
index 6ccf09717..9eb72e9c4 100644
--- a/src/arch/i386/include/bits/stdint.h
+++ b/src/arch/i386/include/bits/stdint.h
@@ -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;
diff --git a/src/arch/x86_64/include/bits/stdint.h b/src/arch/x86_64/include/bits/stdint.h
index 23bae9c46..9eb72e9c4 100644
--- a/src/arch/x86_64/include/bits/stdint.h
+++ b/src/arch/x86_64/include/bits/stdint.h
@@ -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;
diff --git a/src/include/stdint.h b/src/include/stdint.h
index 4b0e44f2e..dc4bd8c76 100644
--- a/src/include/stdint.h
+++ b/src/include/stdint.h
@@ -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;