Define __intmax_t, __uintmax_t in bits/types.h.
TS 18661-1 defines *fromfp* functions, which are declared in math.h and whose return types are intmax_t and uintmax_t, without allowing math.h to define those typedefs. (This is similar to e.g. ISO C declaring vprintf in stdio.h without allowing that header to define va_list.) Thus, math.h needs to access those typedefs under internal names. This patch accordingly arranges for bits/types.h (which defines only internal names, not public *_t typedefs) to define __intmax_t and __uintmax_t. stdint.h is made to use bits/types.h and define intmax_t and uintmax_t using __intmax_t and __uintmax_t, to avoid duplication of information. (It would be reasonable to define more of the types in stdint.h - and in sys/types.h, where it duplicates such types - using information already available in bits/types.h.) The idea is that the subsequent addition of fromfp functions would then make math.h include bits/types.h and use __intmax_t and __uintmax_t as the return types of those functions. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * bits/types.h (__intmax_t): New typedef. (__uintmax_t): Likewise. * sysdeps/generic/stdint.h: Include <bits/types.h>. (intmax_t): Define using __intmax_t. (uintmax_t): Define using __uintmax_t.
This commit is contained in:
parent
ef83c83a25
commit
769998892d
@ -1,5 +1,11 @@
|
|||||||
2016-12-30 Joseph Myers <joseph@codesourcery.com>
|
2016-12-30 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* bits/types.h (__intmax_t): New typedef.
|
||||||
|
(__uintmax_t): Likewise.
|
||||||
|
* sysdeps/generic/stdint.h: Include <bits/types.h>.
|
||||||
|
(intmax_t): Define using __intmax_t.
|
||||||
|
(uintmax_t): Define using __uintmax_t.
|
||||||
|
|
||||||
* support/Makefile (tests-special): Make definition conditional on
|
* support/Makefile (tests-special): Make definition conditional on
|
||||||
[$(run-built-tests) = yes].
|
[$(run-built-tests) = yes].
|
||||||
($(objpfx)tst-support_record_failure-2.out): Make rule conditional
|
($(objpfx)tst-support_record_failure-2.out): Make rule conditional
|
||||||
|
@ -56,6 +56,15 @@ __extension__ typedef long long int __quad_t;
|
|||||||
__extension__ typedef unsigned long long int __u_quad_t;
|
__extension__ typedef unsigned long long int __u_quad_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Largest integral types. */
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
typedef long int __intmax_t;
|
||||||
|
typedef unsigned long int __uintmax_t;
|
||||||
|
#else
|
||||||
|
__extension__ typedef long long int __intmax_t;
|
||||||
|
__extension__ typedef unsigned long long int __uintmax_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
|
/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
|
||||||
macros for each of the OS types we define below. The definitions
|
macros for each of the OS types we define below. The definitions
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
||||||
#include <bits/libc-header-start.h>
|
#include <bits/libc-header-start.h>
|
||||||
|
#include <bits/types.h>
|
||||||
#include <bits/wchar.h>
|
#include <bits/wchar.h>
|
||||||
#include <bits/wordsize.h>
|
#include <bits/wordsize.h>
|
||||||
|
|
||||||
@ -131,15 +132,8 @@ typedef unsigned int uintptr_t;
|
|||||||
|
|
||||||
|
|
||||||
/* Largest integral types. */
|
/* Largest integral types. */
|
||||||
#if __WORDSIZE == 64
|
typedef __intmax_t intmax_t;
|
||||||
typedef long int intmax_t;
|
typedef __uintmax_t uintmax_t;
|
||||||
typedef unsigned long int uintmax_t;
|
|
||||||
#else
|
|
||||||
__extension__
|
|
||||||
typedef long long int intmax_t;
|
|
||||||
__extension__
|
|
||||||
typedef unsigned long long int uintmax_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
# if __WORDSIZE == 64
|
# if __WORDSIZE == 64
|
||||||
|
Loading…
Reference in New Issue
Block a user