summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-04-29 13:06:45 +0200
committerCorinna Vinschen <corinna@vinschen.de>2015-04-29 13:06:45 +0200
commit496380c166667907202c7793436187940d39df14 (patch)
treef086a475ea18d10fece4adc777c652c4640b67a3
parent9d2727e9a3355f1d48ff3ccc28c453d0bc3ca435 (diff)
downloadcygnal-496380c166667907202c7793436187940d39df14.tar.gz
cygnal-496380c166667907202c7793436187940d39df14.tar.bz2
cygnal-496380c166667907202c7793436187940d39df14.zip
Improve check for int32_t being long or int
* libc/include/sys/config.h: Move evaluation of _UINTPTR_EQ_ULONG and _UINTPTR_EQ_ULONGLONG from here... * libc/include/sys/_intsup.h: ...to here. Rename to _INTPTR_EQ_LONG and _INTPTR_EQ_LONGLONG to refer to signed base type. Add test for base type of int32_t and set _INT32_EQ_LONG accordingly. * libc/include/stdint.h: Change checks for __have_long32 to checks for _INT32_EQ_LONG. * libc/include/inttypes.h: Ditto. Accommodate aforementioned name change. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--newlib/ChangeLog12
-rw-r--r--newlib/libc/include/inttypes.h6
-rw-r--r--newlib/libc/include/stdint.h6
-rw-r--r--newlib/libc/include/sys/_intsup.h35
-rw-r--r--newlib/libc/include/sys/config.h26
5 files changed, 53 insertions, 32 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index edf4a7fce..2e8706367 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,15 @@
+2015-04-29 Corinna Vinschen <vinschen@redhat.com>
+
+ * libc/include/sys/config.h: Move evaluation of _UINTPTR_EQ_ULONG and
+ _UINTPTR_EQ_ULONGLONG from here...
+ * libc/include/sys/_intsup.h: ...to here. Rename to _INTPTR_EQ_LONG
+ and _INTPTR_EQ_LONGLONG to refer to signed base type. Add test for
+ base type of int32_t and set _INT32_EQ_LONG accordingly.
+ * libc/include/stdint.h: Change checks for __have_long32 to checks
+ for _INT32_EQ_LONG.
+ * libc/include/inttypes.h: Ditto. Accommodate aforementioned name
+ change.
+
2015-04-22 Corinna Vinschen <vinschen@redhat.com>
* libc/include/libgen.h (basename): Drop defining _BASENAME_DEFINED.
diff --git a/newlib/libc/include/inttypes.h b/newlib/libc/include/inttypes.h
index 52b2d845c..7158cc667 100644
--- a/newlib/libc/include/inttypes.h
+++ b/newlib/libc/include/inttypes.h
@@ -142,7 +142,7 @@
#define SCNxFAST16 __SCN16(x)
/* 32-bit types */
-#if __have_long32
+#if defined (_INT32_EQ_LONG)
#define __PRI32(x) __STRINGIFY(l##x)
#define __SCN32(x) __STRINGIFY(l##x)
#else
@@ -272,10 +272,10 @@
#define SCNxMAX __SCNMAX(x)
/* ptr types */
-#if defined(_UINTPTR_EQ_ULONGLONG)
+#if defined (_INTPTR_EQ_LONGLONG)
# define __PRIPTR(x) __STRINGIFY(ll##x)
# define __SCNPTR(x) __STRINGIFY(ll##x)
-#elif defined(_UINTPTR_EQ_ULONG)
+#elif defined (_INTPTR_EQ_LONG)
# define __PRIPTR(x) __STRINGIFY(l##x)
# define __SCNPTR(x) __STRINGIFY(l##x)
#else
diff --git a/newlib/libc/include/stdint.h b/newlib/libc/include/stdint.h
index aa9d68e9e..bd65cd0e0 100644
--- a/newlib/libc/include/stdint.h
+++ b/newlib/libc/include/stdint.h
@@ -216,7 +216,7 @@ typedef __uint_least64_t uint_least64_t;
#define INT32_MAX (__INT32_MAX__)
#define UINT32_MAX (__UINT32_MAX__)
#elif defined(__int32_t_defined)
-#if __have_long32
+#if defined (_INT32_EQ_LONG)
#define INT32_MIN (-2147483647L-1)
#define INT32_MAX (2147483647L)
#define UINT32_MAX (4294967295UL)
@@ -232,7 +232,7 @@ typedef __uint_least64_t uint_least64_t;
#define INT_LEAST32_MAX (__INT_LEAST32_MAX__)
#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)
#elif defined(__int_least32_t_defined)
-#if __have_long32
+#if defined (_INT32_EQ_LONG)
#define INT_LEAST32_MIN (-2147483647L-1)
#define INT_LEAST32_MAX (2147483647L)
#define UINT_LEAST32_MAX (4294967295UL)
@@ -439,7 +439,7 @@ typedef __uint_least64_t uint_least64_t;
#define INT32_C(x) __INT32_C(x)
#define UINT32_C(x) __UINT32_C(x)
#else
-#if __have_long32
+#if defined (_INT32_EQ_LONG)
#define INT32_C(x) x##L
#define UINT32_C(x) x##UL
#else
diff --git a/newlib/libc/include/sys/_intsup.h b/newlib/libc/include/sys/_intsup.h
index 7c3bc01cb..6c53641a5 100644
--- a/newlib/libc/include/sys/_intsup.h
+++ b/newlib/libc/include/sys/_intsup.h
@@ -33,4 +33,39 @@
#define __have_long32 1
#endif
+/* Determine how intptr_t and int32_t are defined by gcc for this target. This
+ is used to determine the correct printf() constant in inttypes.h and other
+ constants in stdint.h. */
+#pragma push_macro("signed")
+#pragma push_macro("int")
+#pragma push_macro("long")
+#undef signed
+#undef int
+#undef long
+#define signed +0
+#define int +0
+#define long +1
+#if __INTPTR_TYPE__ == 2
+#define _INTPTR_EQ_LONGLONG
+#elif __INTPTR_TYPE__ == 1
+#define _INTPTR_EQ_LONG
+#elif __INTPTR_TYPE__ == 0
+/* Nothing to define because intptr_t is safe to print as an int. */
+#else
+#error "Unable to determine type definition of intptr_t"
+#endif
+#if __INT32_TYPE__ == 1
+#define _INT32_EQ_LONG
+#elif __INT32_TYPE__ == 0
+/* Nothing to define because int32_t is safe to print as an int. */
+#else
+#error "Unable to determine type definition of int32_t"
+#endif
+#undef long
+#undef int
+#undef signed
+#pragma pop_macro("signed")
+#pragma pop_macro("int")
+#pragma pop_macro("long")
+
#endif /* _SYS__INTSUP_H */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 04f1e3abf..5297befe5 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -287,30 +287,4 @@
#define _MB_EXTENDED_CHARSETS_WINDOWS 1
#endif
-/* Determine how uintptr_t is defined by gcc for this target. This
- is used to determine the correct printf() constant in inttypes.h */
-#pragma push_macro("signed")
-#pragma push_macro("int")
-#pragma push_macro("long")
-#undef signed
-#undef int
-#undef long
-#define signed +0
-#define int +0
-#define long +1
-#if __INTPTR_TYPE__ == 2
-#define _UINTPTR_EQ_ULONGLONG
-#elif __INTPTR_TYPE__ == 1
-#define _UINTPTR_EQ_ULONG
-#elif __INTPTR_TYPE__ == 0
-/* Nothing to define because intptr_t is safe to print as an int. */
-#else
-#error "Unable to determine type definition of uintptr_t"
-#endif
-#undef long
-#undef int
-#undef signed
-#pragma pop_macro("signed")
-#pragma pop_macro("int")
-#pragma pop_macro("long")
#endif /* __SYS_CONFIG_H__ */