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>
			
			
This commit is contained in:
		| @@ -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. | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 */ | ||||
|   | ||||
| @@ -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__ */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user