re PR c/448 (<stdint.h>-related issues (C99 issues))

PR c/448
fixincludes:
	* inclhack.def (newlib_stdint_1, newlib_stdint_2): New fixes.
	* fixincl.x: Regenerate.
	* tests/base/stdint.h: Update.

gcc:
	* Makefile.in (USE_GCC_STDINT): Define.
	(stmp-int-hdrs): Install stdint.h if applicable.
	* c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
	if known.
	(CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
	(SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
	UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
	INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
	INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
	UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
	INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
	UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
	UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
	(c_common_nodes_and_builtins): Initialize
	underlying_wchar_type_node.  Do not initialize
	signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
	nodes for new types.
	(c_stddef_cpp_builtins): Define macros for new types.
	* c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
	Remove.
	(CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
	CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
	CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
	CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
	CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
	CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
	CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
	CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
	CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
	(signed_wchar_type_node, unsigned_wchar_type_node): Remove.
	(underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
	int16_type_node, int32_type_node, int64_type_node,
	uint8_type_node, uint16_type_node, c_uint32_type_node,
	c_uint64_type_node, int_least8_type_node, int_least16_type_node,
	int_least32_type_node, int_least64_type_node,
	uint_least8_type_node, uint_least16_type_node,
	uint_least32_type_node, uint_least64_type_node,
	int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
	int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
	uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
	uintptr_type_node): Define.
	* c-cppbuiltin.c (builtin_define_constants,
	builtin_define_type_minmax): New.
	(builtin_define_stdint_macros): Define more macros.
	(c_cpp_builtins): Define more limit macros.
	(type_suffix): New.
	(builtin_define_type_max): Define in terms of
	builtin_define_type_minmax.  Remove is_long parameter.  All
	callers changed.
	* config.gcc (use_gcc_stdint): Define.
	(tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
	Add newlib-stdint.h for generic targets.
	* config/glibc-stdint.h, config/newlib-stdint.h,
	ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
	* config/m32c/m32c.h (UINTPTR_TYPE): Define.
	* config/score/score.h (UINTPTR_TYPE): Define.
	* config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
	INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
	UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
	INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
	UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
	INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
	UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
	UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
	* config/spu/spu.h (STDINT_LONG32): Define.
	* configure.ac (use_gcc_stdint): Substitute.
	* configure: Regenerate.
	* doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
	__INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
	__UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
	__INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
	__INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
	__UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
	__INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
	__UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
	__UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
	__WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
	__SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
	__INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
	__UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
	__INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
	__UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
	__INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
	__INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
	__UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
	__UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
	__INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
	__UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
	* doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
	INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
	INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
	INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
	UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
	INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
	UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
	UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.

gcc/testsuite:
	* lib/target-supports.exp (check_effective_target_stdint_types):
	Update comment.
	(check_effective_target_inttypes_types): New.
	* gcc.dg/c99-stdint-1.c, gcc.dg/c99-stdint-2.c,
	gcc.dg/c99-stdint-3.c, gcc.dg/c99-stdint-4.c,
	gcc.dg/c99-stdint-5.c, gcc.dg/c99-stdint-6.c: New tests.

From-SVN: r145372
This commit is contained in:
Joseph Myers 2009-03-31 21:30:31 +01:00 committed by Joseph Myers
parent e49be8f7c3
commit 207bf79d7f
30 changed files with 2069 additions and 170 deletions

View File

@ -1,3 +1,10 @@
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR c/448
* inclhack.def (newlib_stdint_1, newlib_stdint_2): New fixes.
* fixincl.x: Regenerate.
* tests/base/stdint.h: Update.
2009-03-29 Joseph Myers <joseph@codesourcery.com>
* tests/base/math.h, tests/base/pthread.h, tests/base/sys/wait.h:

View File

@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
* It has been AutoGen-ed Sunday March 29, 2009 at 01:30:25 AM UTC
* It has been AutoGen-ed Tuesday March 31, 2009 at 05:01:22 PM UTC
* From the definitions inclhack.def
* and the template file fixincl
*/
/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Mar 29 01:30:25 UTC 2009
/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Mar 31 17:01:22 UTC 2009
*
* You must regenerate it. Use the ./genfixes script.
*
@ -15,7 +15,7 @@
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
* This file contains 178 fixup descriptions.
* This file contains 180 fixup descriptions.
*
* See README for more information.
*
@ -4516,6 +4516,96 @@ static const char* apzNetbsd_Extra_SemicolonPatch[] = {
"#define __END_DECLS }",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Newlib_Stdint_1 fix
*/
tSCC zNewlib_Stdint_1Name[] =
"newlib_stdint_1";
/*
* File name selection pattern
*/
tSCC zNewlib_Stdint_1List[] =
"stdint.h\0";
/*
* Machine/OS name selection pattern
*/
#define apzNewlib_Stdint_1Machs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
tSCC zNewlib_Stdint_1Select0[] =
"@todo - Add support for wint_t types";
#define NEWLIB_STDINT_1_TEST_CT 1
static tTestDesc aNewlib_Stdint_1Tests[] = {
{ TT_EGREP, zNewlib_Stdint_1Select0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Newlib_Stdint_1
*/
static const char* apzNewlib_Stdint_1Patch[] = { sed_cmd_z,
"-e", "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@",
"-e", "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@",
"-e", "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@",
"-e", "s@#define INT_LEAST32_MIN.*@#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)@",
"-e", "s@#define INT_LEAST32_MAX.*@#define INT_LEAST32_MAX __INT_LEAST32_MAX__@",
"-e", "s@#define UINT_LEAST32_MAX.*@#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__@",
"-e", "s@#define INT_FAST\\([0-9]*\\)_MIN.*@#define INT_FAST\\1_MIN (-INT_FAST\\1_MAX - 1)@",
"-e", "s@#define INT_FAST\\([0-9]*\\)_MAX.*@#define INT_FAST\\1_MAX __INT_FAST\\1_MAX__@",
"-e", "s@#define UINT_FAST\\([0-9]*\\)_MAX.*@#define UINT_FAST\\1_MAX __UINT_FAST\\1_MAX__@",
"-e", "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@",
"-e", "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@",
"-e", "s@#define PTRDIFF_MAX.*@#define PTRDIFF_MAX __PTRDIFF_MAX__@",
"-e", "s@#define UINT8_C.*@#define UINT8_C(c) __UINT8_C(c)@",
"-e", "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Newlib_Stdint_2 fix
*/
tSCC zNewlib_Stdint_2Name[] =
"newlib_stdint_2";
/*
* File name selection pattern
*/
tSCC zNewlib_Stdint_2List[] =
"stdint.h\0";
/*
* Machine/OS name selection pattern
*/
#define apzNewlib_Stdint_2Machs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
tSCC zNewlib_Stdint_2Select0[] =
"@todo - Add support for wint_t types";
#define NEWLIB_STDINT_2_TEST_CT 1
static tTestDesc aNewlib_Stdint_2Tests[] = {
{ TT_EGREP, zNewlib_Stdint_2Select0, (regex_t*)NULL }, };
/*
* Fix Command Arguments for Newlib_Stdint_2
*/
static const char* apzNewlib_Stdint_2Patch[] = {
"format",
"#define INTMAX_MAX __INTMAX_MAX__\n\
#define INTMAX_MIN (-INTMAX_MAX - 1)\n\
#define UINTMAX_MAX __UINTMAX_MAX__\n\
#define WCHAR_MAX __WCHAR_MAX__\n\
#define WCHAR_MIN __WCHAR_MIN__\n\
#define WINT_MAX __WINT_MAX__\n\
#define WINT_MIN __WINT_MIN__\n\n\
%0",
"/\\*\\* Macros for minimum-width integer constant expressions \\*/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Next_Math_Prefix fix
@ -7235,9 +7325,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
#define REGEX_COUNT 223
#define REGEX_COUNT 225
#define MACH_LIST_SIZE_LIMIT 181
#define FIX_COUNT 178
#define FIX_COUNT 180
/*
* Enumerate the fixes
@ -7354,6 +7444,8 @@ typedef enum {
NETBSD_C99_INLINE_1_FIXIDX,
NETBSD_C99_INLINE_2_FIXIDX,
NETBSD_EXTRA_SEMICOLON_FIXIDX,
NEWLIB_STDINT_1_FIXIDX,
NEWLIB_STDINT_2_FIXIDX,
NEXT_MATH_PREFIX_FIXIDX,
NEXT_TEMPLATE_FIXIDX,
NEXT_VOLITILE_FIXIDX,
@ -7979,6 +8071,16 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
NETBSD_EXTRA_SEMICOLON_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aNetbsd_Extra_SemicolonTests, apzNetbsd_Extra_SemicolonPatch, 0 },
{ zNewlib_Stdint_1Name, zNewlib_Stdint_1List,
apzNewlib_Stdint_1Machs,
NEWLIB_STDINT_1_TEST_CT, FD_MACH_ONLY,
aNewlib_Stdint_1Tests, apzNewlib_Stdint_1Patch, 0 },
{ zNewlib_Stdint_2Name, zNewlib_Stdint_2List,
apzNewlib_Stdint_2Machs,
NEWLIB_STDINT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aNewlib_Stdint_2Tests, apzNewlib_Stdint_2Patch, 0 },
{ zNext_Math_PrefixName, zNext_Math_PrefixList,
apzNext_Math_PrefixMachs,
NEXT_MATH_PREFIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,

View File

@ -2430,6 +2430,64 @@ fix = {
};
/* newlib's stdint.h has several failures to conform to C99. The fix
for these removed a comment that can be matched to identify unfixed
versions. */
fix = {
hackname = newlib_stdint_1;
files = stdint.h;
select = "@todo - Add support for wint_t types";
sed = "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@";
sed = "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@";
sed = "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@";
sed = "s@#define INT_LEAST32_MIN.*@#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)@";
sed = "s@#define INT_LEAST32_MAX.*@#define INT_LEAST32_MAX __INT_LEAST32_MAX__@";
sed = "s@#define UINT_LEAST32_MAX.*@#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__@";
sed = 's@#define INT_FAST\([0-9]*\)_MIN.*@#define INT_FAST\1_MIN (-INT_FAST\1_MAX - 1)@';
sed = 's@#define INT_FAST\([0-9]*\)_MAX.*@#define INT_FAST\1_MAX __INT_FAST\1_MAX__@';
sed = 's@#define UINT_FAST\([0-9]*\)_MAX.*@#define UINT_FAST\1_MAX __UINT_FAST\1_MAX__@';
sed = "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@";
sed = "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
sed = "s@#define PTRDIFF_MAX.*@#define PTRDIFF_MAX __PTRDIFF_MAX__@";
sed = "s@#define UINT8_C.*@#define UINT8_C(c) __UINT8_C(c)@";
sed = "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@";
test_text = "/* @todo - Add support for wint_t types. */\n"
"#define INT32_MIN (-2147483647-1)\n"
"#define INT32_MAX 2147483647\n"
"#define UINT32_MAX 4294967295U\n"
"#define INT_LEAST32_MIN (-2147483647-1)\n"
"#define INT_LEAST32_MAX 2147483647\n"
"#define UINT_LEAST32_MAX 4294967295U\n"
"#define INT_FAST8_MIN INT8_MIN\n"
"#define INT_FAST8_MAX INT8_MAX\n"
"#define UINT_FAST8_MAX UINT8_MAX\n"
"#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)\n"
"#define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)\n"
"#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)\n"
"#define UINT8_C(x) x##U\n"
"#define UINT16_C(x) x##U";
};
fix = {
hackname = newlib_stdint_2;
files = stdint.h;
select = "@todo - Add support for wint_t types";
c_fix = format;
c_fix_arg = "#define INTMAX_MAX __INTMAX_MAX__\n"
"#define INTMAX_MIN (-INTMAX_MAX - 1)\n"
"#define UINTMAX_MAX __UINTMAX_MAX__\n"
"#define WCHAR_MAX __WCHAR_MAX__\n"
"#define WCHAR_MIN __WCHAR_MIN__\n"
"#define WINT_MAX __WINT_MAX__\n"
"#define WINT_MIN __WINT_MIN__\n\n"
"%0";
c_fix_arg = '/\*\* Macros for minimum-width integer constant expressions \*/';
test_text = "/* @todo - Add support for wint_t types. */\n"
"/** Macros for minimum-width integer constant expressions */";
};
/*
* NeXT 3.2 adds const prefix to some math functions.
* These conflict with the built-in functions.

View File

@ -14,3 +14,36 @@
#error This header file is to be used only for c99 mode compilations
#else
#endif /* IRIX_STDINT_C99_CHECK */
#if defined( NEWLIB_STDINT_1_CHECK )
/* @todo - Add support for wint_t types. */
#define INT32_MIN (-INT32_MAX - 1)
#define INT32_MAX __INT32_MAX__
#define UINT32_MAX __UINT32_MAX__
#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
#define INT_LEAST32_MAX __INT_LEAST32_MAX__
#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
#define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
#define INT_FAST8_MAX __INT_FAST8_MAX__
#define UINT_FAST8_MAX __UINT_FAST8_MAX__
#define SIZE_MAX __SIZE_MAX__
#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
#define PTRDIFF_MAX __PTRDIFF_MAX__
#define UINT8_C(c) __UINT8_C(c)
#define UINT16_C(c) __UINT16_C(c)
#endif /* NEWLIB_STDINT_1_CHECK */
#if defined( NEWLIB_STDINT_2_CHECK )
/* @todo - Add support for wint_t types. */
#define INTMAX_MAX __INTMAX_MAX__
#define INTMAX_MIN (-INTMAX_MAX - 1)
#define UINTMAX_MAX __UINTMAX_MAX__
#define WCHAR_MAX __WCHAR_MAX__
#define WCHAR_MIN __WCHAR_MIN__
#define WINT_MAX __WINT_MAX__
#define WINT_MIN __WINT_MIN__
/** Macros for minimum-width integer constant expressions */
#endif /* NEWLIB_STDINT_2_CHECK */

View File

@ -1,3 +1,103 @@
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR c/448
* Makefile.in (USE_GCC_STDINT): Define.
(stmp-int-hdrs): Install stdint.h if applicable.
* c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
if known.
(CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
(SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
(c_common_nodes_and_builtins): Initialize
underlying_wchar_type_node. Do not initialize
signed_wchar_type_node or unsigned_wchar_type_node. Initialize
nodes for new types.
(c_stddef_cpp_builtins): Define macros for new types.
* c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
Remove.
(CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
(signed_wchar_type_node, unsigned_wchar_type_node): Remove.
(underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
int16_type_node, int32_type_node, int64_type_node,
uint8_type_node, uint16_type_node, c_uint32_type_node,
c_uint64_type_node, int_least8_type_node, int_least16_type_node,
int_least32_type_node, int_least64_type_node,
uint_least8_type_node, uint_least16_type_node,
uint_least32_type_node, uint_least64_type_node,
int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
uintptr_type_node): Define.
* c-cppbuiltin.c (builtin_define_constants,
builtin_define_type_minmax): New.
(builtin_define_stdint_macros): Define more macros.
(c_cpp_builtins): Define more limit macros.
(type_suffix): New.
(builtin_define_type_max): Define in terms of
builtin_define_type_minmax. Remove is_long parameter. All
callers changed.
* config.gcc (use_gcc_stdint): Define.
(tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
Add newlib-stdint.h for generic targets.
* config/glibc-stdint.h, config/newlib-stdint.h,
ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
* config/m32c/m32c.h (UINTPTR_TYPE): Define.
* config/score/score.h (UINTPTR_TYPE): Define.
* config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
* config/spu/spu.h (STDINT_LONG32): Define.
* configure.ac (use_gcc_stdint): Substitute.
* configure: Regenerate.
* doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
__INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
__UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
__INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
__INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
__UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
__INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
__UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
__UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
__WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
__SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
__INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
__UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
__INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
__UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
__INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
__INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
__UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
__UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
__INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
__UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
* doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
2009-03-31 Bernd Schmidt <bernd.schmidt@analog.com>
* loop-iv.c (suitable_set_for_replacement): Renamed from

View File

@ -634,6 +634,9 @@ EXTRA_GCC_OBJS =@extra_gcc_objs@
# List of additional header files to install.
EXTRA_HEADERS =@extra_headers_list@
# How to handle <stdint.h>.
USE_GCC_STDINT = @use_gcc_stdint@
# The configure script will set this to collect2$(exeext), except on a
# (non-Unix) host which can not build collect2, for which it will be
# set to empty.
@ -3533,6 +3536,14 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list
done
rm -f include/unwind.h
cp $(UNWIND_H) include/unwind.h
rm -f include/stdint.h
if [ $(USE_GCC_STDINT) = wrap ]; then \
rm -f include/stdint-gcc.h; \
cp $(srcdir)/ginclude/stdint-gcc.h include/stdint-gcc.h; \
cp $(srcdir)/ginclude/stdint-wrap.h include/stdint.h; \
elif [ $(USE_GCC_STDINT) = provide ]; then \
cp $(srcdir)/ginclude/stdint-gcc.h include/stdint.h; \
fi
set -e; for ml in `cat fixinc_list`; do \
sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \

View File

@ -69,11 +69,21 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
#define PID_TYPE "int"
#endif
#ifndef CHAR16_TYPE
/* If GCC knows the exact uint_least16_t and uint_least32_t types from
<stdint.h>, use them for char16_t and char32_t. Otherwise, use
these guesses; getting the wrong type of a given width will not
affect C++ name mangling because in C++ these are distinct types
not typedefs. */
#ifdef UINT_LEAST16_TYPE
#define CHAR16_TYPE UINT_LEAST16_TYPE
#else
#define CHAR16_TYPE "short unsigned int"
#endif
#ifndef CHAR32_TYPE
#ifdef UINT_LEAST32_TYPE
#define CHAR32_TYPE UINT_LEAST32_TYPE
#else
#define CHAR32_TYPE "unsigned int"
#endif
@ -109,6 +119,116 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
: "long long unsigned int"))
#endif
/* There are no default definitions of these <stdint.h> types. */
#ifndef SIG_ATOMIC_TYPE
#define SIG_ATOMIC_TYPE ((const char *) NULL)
#endif
#ifndef INT8_TYPE
#define INT8_TYPE ((const char *) NULL)
#endif
#ifndef INT16_TYPE
#define INT16_TYPE ((const char *) NULL)
#endif
#ifndef INT32_TYPE
#define INT32_TYPE ((const char *) NULL)
#endif
#ifndef INT64_TYPE
#define INT64_TYPE ((const char *) NULL)
#endif
#ifndef UINT8_TYPE
#define UINT8_TYPE ((const char *) NULL)
#endif
#ifndef UINT16_TYPE
#define UINT16_TYPE ((const char *) NULL)
#endif
#ifndef UINT32_TYPE
#define UINT32_TYPE ((const char *) NULL)
#endif
#ifndef UINT64_TYPE
#define UINT64_TYPE ((const char *) NULL)
#endif
#ifndef INT_LEAST8_TYPE
#define INT_LEAST8_TYPE ((const char *) NULL)
#endif
#ifndef INT_LEAST16_TYPE
#define INT_LEAST16_TYPE ((const char *) NULL)
#endif
#ifndef INT_LEAST32_TYPE
#define INT_LEAST32_TYPE ((const char *) NULL)
#endif
#ifndef INT_LEAST64_TYPE
#define INT_LEAST64_TYPE ((const char *) NULL)
#endif
#ifndef UINT_LEAST8_TYPE
#define UINT_LEAST8_TYPE ((const char *) NULL)
#endif
#ifndef UINT_LEAST16_TYPE
#define UINT_LEAST16_TYPE ((const char *) NULL)
#endif
#ifndef UINT_LEAST32_TYPE
#define UINT_LEAST32_TYPE ((const char *) NULL)
#endif
#ifndef UINT_LEAST64_TYPE
#define UINT_LEAST64_TYPE ((const char *) NULL)
#endif
#ifndef INT_FAST8_TYPE
#define INT_FAST8_TYPE ((const char *) NULL)
#endif
#ifndef INT_FAST16_TYPE
#define INT_FAST16_TYPE ((const char *) NULL)
#endif
#ifndef INT_FAST32_TYPE
#define INT_FAST32_TYPE ((const char *) NULL)
#endif
#ifndef INT_FAST64_TYPE
#define INT_FAST64_TYPE ((const char *) NULL)
#endif
#ifndef UINT_FAST8_TYPE
#define UINT_FAST8_TYPE ((const char *) NULL)
#endif
#ifndef UINT_FAST16_TYPE
#define UINT_FAST16_TYPE ((const char *) NULL)
#endif
#ifndef UINT_FAST32_TYPE
#define UINT_FAST32_TYPE ((const char *) NULL)
#endif
#ifndef UINT_FAST64_TYPE
#define UINT_FAST64_TYPE ((const char *) NULL)
#endif
#ifndef INTPTR_TYPE
#define INTPTR_TYPE ((const char *) NULL)
#endif
#ifndef UINTPTR_TYPE
#define UINTPTR_TYPE ((const char *) NULL)
#endif
/* The following symbols are subsumed in the c_global_trees array, and
listed here individually for documentation purposes.
@ -131,8 +251,6 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
tree unsigned_char_type_node;
tree signed_char_type_node;
tree wchar_type_node;
tree signed_wchar_type_node;
tree unsigned_wchar_type_node;
tree char16_type_node;
tree char32_type_node;
@ -4762,6 +4880,7 @@ c_common_nodes_and_builtins (void)
wchar_type_node = get_identifier (MODIFIED_WCHAR_TYPE);
wchar_type_node = TREE_TYPE (identifier_global_value (wchar_type_node));
wchar_type_size = TYPE_PRECISION (wchar_type_node);
underlying_wchar_type_node = wchar_type_node;
if (c_dialect_cxx ())
{
if (TYPE_UNSIGNED (wchar_type_node))
@ -4770,11 +4889,6 @@ c_common_nodes_and_builtins (void)
wchar_type_node = make_signed_type (wchar_type_size);
record_builtin_type (RID_WCHAR, "wchar_t", wchar_type_node);
}
else
{
signed_wchar_type_node = c_common_signed_type (wchar_type_node);
unsigned_wchar_type_node = c_common_unsigned_type (wchar_type_node);
}
/* This is for wide string constants. */
wchar_array_type_node
@ -4820,6 +4934,88 @@ c_common_nodes_and_builtins (void)
uintmax_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINTMAX_TYPE)));
if (SIG_ATOMIC_TYPE)
sig_atomic_type_node =
TREE_TYPE (identifier_global_value (get_identifier (SIG_ATOMIC_TYPE)));
if (INT8_TYPE)
int8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT8_TYPE)));
if (INT16_TYPE)
int16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT16_TYPE)));
if (INT32_TYPE)
int32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT32_TYPE)));
if (INT64_TYPE)
int64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT64_TYPE)));
if (UINT8_TYPE)
uint8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT8_TYPE)));
if (UINT16_TYPE)
uint16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT16_TYPE)));
if (UINT32_TYPE)
c_uint32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT32_TYPE)));
if (UINT64_TYPE)
c_uint64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT64_TYPE)));
if (INT_LEAST8_TYPE)
int_least8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_LEAST8_TYPE)));
if (INT_LEAST16_TYPE)
int_least16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_LEAST16_TYPE)));
if (INT_LEAST32_TYPE)
int_least32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_LEAST32_TYPE)));
if (INT_LEAST64_TYPE)
int_least64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_LEAST64_TYPE)));
if (UINT_LEAST8_TYPE)
uint_least8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_LEAST8_TYPE)));
if (UINT_LEAST16_TYPE)
uint_least16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_LEAST16_TYPE)));
if (UINT_LEAST32_TYPE)
uint_least32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_LEAST32_TYPE)));
if (UINT_LEAST64_TYPE)
uint_least64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_LEAST64_TYPE)));
if (INT_FAST8_TYPE)
int_fast8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_FAST8_TYPE)));
if (INT_FAST16_TYPE)
int_fast16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_FAST16_TYPE)));
if (INT_FAST32_TYPE)
int_fast32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_FAST32_TYPE)));
if (INT_FAST64_TYPE)
int_fast64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INT_FAST64_TYPE)));
if (UINT_FAST8_TYPE)
uint_fast8_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_FAST8_TYPE)));
if (UINT_FAST16_TYPE)
uint_fast16_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_FAST16_TYPE)));
if (UINT_FAST32_TYPE)
uint_fast32_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_FAST32_TYPE)));
if (UINT_FAST64_TYPE)
uint_fast64_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINT_FAST64_TYPE)));
if (INTPTR_TYPE)
intptr_type_node =
TREE_TYPE (identifier_global_value (get_identifier (INTPTR_TYPE)));
if (UINTPTR_TYPE)
uintptr_type_node =
TREE_TYPE (identifier_global_value (get_identifier (UINTPTR_TYPE)));
default_function_type = build_function_type (integer_type_node, NULL_TREE);
ptrdiff_type_node
= TREE_TYPE (identifier_global_value (get_identifier (PTRDIFF_TYPE)));
@ -5522,8 +5718,8 @@ boolean_increment (enum tree_code code, tree arg)
return val;
}
/* Built-in macros for stddef.h, that require macros defined in this
file. */
/* Built-in macros for stddef.h and stdint.h, that require macros
defined in this file. */
void
c_stddef_cpp_builtins(void)
{
@ -5535,6 +5731,60 @@ c_stddef_cpp_builtins(void)
builtin_define_with_value ("__UINTMAX_TYPE__", UINTMAX_TYPE, 0);
builtin_define_with_value ("__CHAR16_TYPE__", CHAR16_TYPE, 0);
builtin_define_with_value ("__CHAR32_TYPE__", CHAR32_TYPE, 0);
if (SIG_ATOMIC_TYPE)
builtin_define_with_value ("__SIG_ATOMIC_TYPE__", SIG_ATOMIC_TYPE, 0);
if (INT8_TYPE)
builtin_define_with_value ("__INT8_TYPE__", INT8_TYPE, 0);
if (INT16_TYPE)
builtin_define_with_value ("__INT16_TYPE__", INT16_TYPE, 0);
if (INT32_TYPE)
builtin_define_with_value ("__INT32_TYPE__", INT32_TYPE, 0);
if (INT64_TYPE)
builtin_define_with_value ("__INT64_TYPE__", INT64_TYPE, 0);
if (UINT8_TYPE)
builtin_define_with_value ("__UINT8_TYPE__", UINT8_TYPE, 0);
if (UINT16_TYPE)
builtin_define_with_value ("__UINT16_TYPE__", UINT16_TYPE, 0);
if (UINT32_TYPE)
builtin_define_with_value ("__UINT32_TYPE__", UINT32_TYPE, 0);
if (UINT64_TYPE)
builtin_define_with_value ("__UINT64_TYPE__", UINT64_TYPE, 0);
if (INT_LEAST8_TYPE)
builtin_define_with_value ("__INT_LEAST8_TYPE__", INT_LEAST8_TYPE, 0);
if (INT_LEAST16_TYPE)
builtin_define_with_value ("__INT_LEAST16_TYPE__", INT_LEAST16_TYPE, 0);
if (INT_LEAST32_TYPE)
builtin_define_with_value ("__INT_LEAST32_TYPE__", INT_LEAST32_TYPE, 0);
if (INT_LEAST64_TYPE)
builtin_define_with_value ("__INT_LEAST64_TYPE__", INT_LEAST64_TYPE, 0);
if (UINT_LEAST8_TYPE)
builtin_define_with_value ("__UINT_LEAST8_TYPE__", UINT_LEAST8_TYPE, 0);
if (UINT_LEAST16_TYPE)
builtin_define_with_value ("__UINT_LEAST16_TYPE__", UINT_LEAST16_TYPE, 0);
if (UINT_LEAST32_TYPE)
builtin_define_with_value ("__UINT_LEAST32_TYPE__", UINT_LEAST32_TYPE, 0);
if (UINT_LEAST64_TYPE)
builtin_define_with_value ("__UINT_LEAST64_TYPE__", UINT_LEAST64_TYPE, 0);
if (INT_FAST8_TYPE)
builtin_define_with_value ("__INT_FAST8_TYPE__", INT_FAST8_TYPE, 0);
if (INT_FAST16_TYPE)
builtin_define_with_value ("__INT_FAST16_TYPE__", INT_FAST16_TYPE, 0);
if (INT_FAST32_TYPE)
builtin_define_with_value ("__INT_FAST32_TYPE__", INT_FAST32_TYPE, 0);
if (INT_FAST64_TYPE)
builtin_define_with_value ("__INT_FAST64_TYPE__", INT_FAST64_TYPE, 0);
if (UINT_FAST8_TYPE)
builtin_define_with_value ("__UINT_FAST8_TYPE__", UINT_FAST8_TYPE, 0);
if (UINT_FAST16_TYPE)
builtin_define_with_value ("__UINT_FAST16_TYPE__", UINT_FAST16_TYPE, 0);
if (UINT_FAST32_TYPE)
builtin_define_with_value ("__UINT_FAST32_TYPE__", UINT_FAST32_TYPE, 0);
if (UINT_FAST64_TYPE)
builtin_define_with_value ("__UINT_FAST64_TYPE__", UINT_FAST64_TYPE, 0);
if (INTPTR_TYPE)
builtin_define_with_value ("__INTPTR_TYPE__", INTPTR_TYPE, 0);
if (UINTPTR_TYPE)
builtin_define_with_value ("__UINTPTR_TYPE__", UINTPTR_TYPE, 0);
}
static void

View File

@ -153,8 +153,7 @@ enum c_tree_index
CTI_CHAR16_TYPE,
CTI_CHAR32_TYPE,
CTI_WCHAR_TYPE,
CTI_SIGNED_WCHAR_TYPE,
CTI_UNSIGNED_WCHAR_TYPE,
CTI_UNDERLYING_WCHAR_TYPE,
CTI_WINT_TYPE,
CTI_SIGNED_SIZE_TYPE, /* For format checking only. */
CTI_UNSIGNED_PTRDIFF_TYPE, /* For format checking only. */
@ -163,6 +162,36 @@ enum c_tree_index
CTI_WIDEST_INT_LIT_TYPE,
CTI_WIDEST_UINT_LIT_TYPE,
/* Types for <stdint.h>, that may not be defined on all
targets. */
CTI_SIG_ATOMIC_TYPE,
CTI_INT8_TYPE,
CTI_INT16_TYPE,
CTI_INT32_TYPE,
CTI_INT64_TYPE,
CTI_UINT8_TYPE,
CTI_UINT16_TYPE,
CTI_UINT32_TYPE,
CTI_UINT64_TYPE,
CTI_INT_LEAST8_TYPE,
CTI_INT_LEAST16_TYPE,
CTI_INT_LEAST32_TYPE,
CTI_INT_LEAST64_TYPE,
CTI_UINT_LEAST8_TYPE,
CTI_UINT_LEAST16_TYPE,
CTI_UINT_LEAST32_TYPE,
CTI_UINT_LEAST64_TYPE,
CTI_INT_FAST8_TYPE,
CTI_INT_FAST16_TYPE,
CTI_INT_FAST32_TYPE,
CTI_INT_FAST64_TYPE,
CTI_UINT_FAST8_TYPE,
CTI_UINT_FAST16_TYPE,
CTI_UINT_FAST32_TYPE,
CTI_UINT_FAST64_TYPE,
CTI_INTPTR_TYPE,
CTI_UINTPTR_TYPE,
CTI_CHAR_ARRAY_TYPE,
CTI_CHAR16_ARRAY_TYPE,
CTI_CHAR32_ARRAY_TYPE,
@ -239,8 +268,7 @@ extern const unsigned int num_c_common_reswords;
#define char16_type_node c_global_trees[CTI_CHAR16_TYPE]
#define char32_type_node c_global_trees[CTI_CHAR32_TYPE]
#define wchar_type_node c_global_trees[CTI_WCHAR_TYPE]
#define signed_wchar_type_node c_global_trees[CTI_SIGNED_WCHAR_TYPE]
#define unsigned_wchar_type_node c_global_trees[CTI_UNSIGNED_WCHAR_TYPE]
#define underlying_wchar_type_node c_global_trees[CTI_UNDERLYING_WCHAR_TYPE]
#define wint_type_node c_global_trees[CTI_WINT_TYPE]
#define signed_size_type_node c_global_trees[CTI_SIGNED_SIZE_TYPE]
#define unsigned_ptrdiff_type_node c_global_trees[CTI_UNSIGNED_PTRDIFF_TYPE]
@ -249,6 +277,34 @@ extern const unsigned int num_c_common_reswords;
#define widest_integer_literal_type_node c_global_trees[CTI_WIDEST_INT_LIT_TYPE]
#define widest_unsigned_literal_type_node c_global_trees[CTI_WIDEST_UINT_LIT_TYPE]
#define sig_atomic_type_node c_global_trees[CTI_SIG_ATOMIC_TYPE]
#define int8_type_node c_global_trees[CTI_INT8_TYPE]
#define int16_type_node c_global_trees[CTI_INT16_TYPE]
#define int32_type_node c_global_trees[CTI_INT32_TYPE]
#define int64_type_node c_global_trees[CTI_INT64_TYPE]
#define uint8_type_node c_global_trees[CTI_UINT8_TYPE]
#define uint16_type_node c_global_trees[CTI_UINT16_TYPE]
#define c_uint32_type_node c_global_trees[CTI_UINT32_TYPE]
#define c_uint64_type_node c_global_trees[CTI_UINT64_TYPE]
#define int_least8_type_node c_global_trees[CTI_INT_LEAST8_TYPE]
#define int_least16_type_node c_global_trees[CTI_INT_LEAST16_TYPE]
#define int_least32_type_node c_global_trees[CTI_INT_LEAST32_TYPE]
#define int_least64_type_node c_global_trees[CTI_INT_LEAST64_TYPE]
#define uint_least8_type_node c_global_trees[CTI_UINT_LEAST8_TYPE]
#define uint_least16_type_node c_global_trees[CTI_UINT_LEAST16_TYPE]
#define uint_least32_type_node c_global_trees[CTI_UINT_LEAST32_TYPE]
#define uint_least64_type_node c_global_trees[CTI_UINT_LEAST64_TYPE]
#define int_fast8_type_node c_global_trees[CTI_INT_FAST8_TYPE]
#define int_fast16_type_node c_global_trees[CTI_INT_FAST16_TYPE]
#define int_fast32_type_node c_global_trees[CTI_INT_FAST32_TYPE]
#define int_fast64_type_node c_global_trees[CTI_INT_FAST64_TYPE]
#define uint_fast8_type_node c_global_trees[CTI_UINT_FAST8_TYPE]
#define uint_fast16_type_node c_global_trees[CTI_UINT_FAST16_TYPE]
#define uint_fast32_type_node c_global_trees[CTI_UINT_FAST32_TYPE]
#define uint_fast64_type_node c_global_trees[CTI_UINT_FAST64_TYPE]
#define intptr_type_node c_global_trees[CTI_INTPTR_TYPE]
#define uintptr_type_node c_global_trees[CTI_UINTPTR_TYPE]
#define truthvalue_type_node c_global_trees[CTI_TRUTHVALUE_TYPE]
#define truthvalue_true_node c_global_trees[CTI_TRUTHVALUE_TRUE]
#define truthvalue_false_node c_global_trees[CTI_TRUTHVALUE_FALSE]
@ -818,6 +874,21 @@ extern void finish_file (void);
|| (TREE_CODE (EXPR) == C_MAYBE_CONST_EXPR \
&& C_MAYBE_CONST_EXPR_INT_OPERANDS (EXPR))))
/* C_MAYBE_CONST_EXPR accessors. */
#define C_MAYBE_CONST_EXPR_PRE(NODE) \
TREE_OPERAND (C_MAYBE_CONST_EXPR_CHECK (NODE), 0)
#define C_MAYBE_CONST_EXPR_EXPR(NODE) \
TREE_OPERAND (C_MAYBE_CONST_EXPR_CHECK (NODE), 1)
#define C_MAYBE_CONST_EXPR_INT_OPERANDS(NODE) \
TREE_LANG_FLAG_0 (C_MAYBE_CONST_EXPR_CHECK (NODE))
#define C_MAYBE_CONST_EXPR_NON_CONST(NODE) \
TREE_LANG_FLAG_1 (C_MAYBE_CONST_EXPR_CHECK (NODE))
#define EXPR_INT_CONST_OPERANDS(EXPR) \
(INTEGRAL_TYPE_P (TREE_TYPE (EXPR)) \
&& (TREE_CODE (EXPR) == INTEGER_CST \
|| (TREE_CODE (EXPR) == C_MAYBE_CONST_EXPR \
&& C_MAYBE_CONST_EXPR_INT_OPERANDS (EXPR))))
/* In a FIELD_DECL, nonzero if the decl was originally a bitfield. */
#define DECL_C_BIT_FIELD(NODE) \
(DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) == 1)

View File

@ -55,7 +55,9 @@ static void builtin_define_with_hex_fp_value (const char *, tree,
const char *,
const char *);
static void builtin_define_stdint_macros (void);
static void builtin_define_type_max (const char *, tree, int);
static void builtin_define_constants (const char *, tree);
static void builtin_define_type_max (const char *, tree);
static void builtin_define_type_minmax (const char *, const char *, tree);
static void builtin_define_type_precision (const char *, tree);
static void builtin_define_type_sizeof (const char *, tree);
static void builtin_define_float_constants (const char *,
@ -394,21 +396,93 @@ define__GNUC__ (void)
cpp_define_formatted (parse_in, "__GNUG__=%d", major);
}
/* Define macros used by <stdint.h>. Currently only defines limits
for intmax_t, used by the testsuite. */
/* Define macros used by <stdint.h>. */
static void
builtin_define_stdint_macros (void)
{
int intmax_long;
if (intmax_type_node == long_long_integer_type_node)
intmax_long = 2;
else if (intmax_type_node == long_integer_type_node)
intmax_long = 1;
else if (intmax_type_node == integer_type_node)
intmax_long = 0;
else
gcc_unreachable ();
builtin_define_type_max ("__INTMAX_MAX__", intmax_type_node, intmax_long);
builtin_define_type_max ("__INTMAX_MAX__", intmax_type_node);
builtin_define_constants ("__INTMAX_C", intmax_type_node);
builtin_define_type_max ("__UINTMAX_MAX__", uintmax_type_node);
builtin_define_constants ("__UINTMAX_C", uintmax_type_node);
if (sig_atomic_type_node)
builtin_define_type_minmax ("__SIG_ATOMIC_MIN__", "__SIG_ATOMIC_MAX__",
sig_atomic_type_node);
if (int8_type_node)
builtin_define_type_max ("__INT8_MAX__", int8_type_node);
if (int16_type_node)
builtin_define_type_max ("__INT16_MAX__", int16_type_node);
if (int32_type_node)
builtin_define_type_max ("__INT32_MAX__", int32_type_node);
if (int64_type_node)
builtin_define_type_max ("__INT64_MAX__", int64_type_node);
if (uint8_type_node)
builtin_define_type_max ("__UINT8_MAX__", uint8_type_node);
if (uint16_type_node)
builtin_define_type_max ("__UINT16_MAX__", uint16_type_node);
if (c_uint32_type_node)
builtin_define_type_max ("__UINT32_MAX__", c_uint32_type_node);
if (c_uint64_type_node)
builtin_define_type_max ("__UINT64_MAX__", c_uint64_type_node);
if (int_least8_type_node)
{
builtin_define_type_max ("__INT_LEAST8_MAX__", int_least8_type_node);
builtin_define_constants ("__INT8_C", int_least8_type_node);
}
if (int_least16_type_node)
{
builtin_define_type_max ("__INT_LEAST16_MAX__", int_least16_type_node);
builtin_define_constants ("__INT16_C", int_least16_type_node);
}
if (int_least32_type_node)
{
builtin_define_type_max ("__INT_LEAST32_MAX__", int_least32_type_node);
builtin_define_constants ("__INT32_C", int_least32_type_node);
}
if (int_least64_type_node)
{
builtin_define_type_max ("__INT_LEAST64_MAX__", int_least64_type_node);
builtin_define_constants ("__INT64_C", int_least64_type_node);
}
if (uint_least8_type_node)
{
builtin_define_type_max ("__UINT_LEAST8_MAX__", uint_least8_type_node);
builtin_define_constants ("__UINT8_C", uint_least8_type_node);
}
if (uint_least16_type_node)
{
builtin_define_type_max ("__UINT_LEAST16_MAX__", uint_least16_type_node);
builtin_define_constants ("__UINT16_C", uint_least16_type_node);
}
if (uint_least32_type_node)
{
builtin_define_type_max ("__UINT_LEAST32_MAX__", uint_least32_type_node);
builtin_define_constants ("__UINT32_C", uint_least32_type_node);
}
if (uint_least64_type_node)
{
builtin_define_type_max ("__UINT_LEAST64_MAX__", uint_least64_type_node);
builtin_define_constants ("__UINT64_C", uint_least64_type_node);
}
if (int_fast8_type_node)
builtin_define_type_max ("__INT_FAST8_MAX__", int_fast8_type_node);
if (int_fast16_type_node)
builtin_define_type_max ("__INT_FAST16_MAX__", int_fast16_type_node);
if (int_fast32_type_node)
builtin_define_type_max ("__INT_FAST32_MAX__", int_fast32_type_node);
if (int_fast64_type_node)
builtin_define_type_max ("__INT_FAST64_MAX__", int_fast64_type_node);
if (uint_fast8_type_node)
builtin_define_type_max ("__UINT_FAST8_MAX__", uint_fast8_type_node);
if (uint_fast16_type_node)
builtin_define_type_max ("__UINT_FAST16_MAX__", uint_fast16_type_node);
if (uint_fast32_type_node)
builtin_define_type_max ("__UINT_FAST32_MAX__", uint_fast32_type_node);
if (uint_fast64_type_node)
builtin_define_type_max ("__UINT_FAST64_MAX__", uint_fast64_type_node);
if (intptr_type_node)
builtin_define_type_max ("__INTPTR_MAX__", intptr_type_node);
if (uintptr_type_node)
builtin_define_type_max ("__UINTPTR_MAX__", uintptr_type_node);
}
/* Adjust the optimization macros when a #pragma GCC optimization is done to
@ -518,17 +592,21 @@ c_cpp_builtins (cpp_reader *pfile)
if (USING_SJLJ_EXCEPTIONS)
cpp_define (pfile, "__USING_SJLJ_EXCEPTIONS__");
/* limits.h needs to know these. */
builtin_define_type_max ("__SCHAR_MAX__", signed_char_type_node, 0);
builtin_define_type_max ("__SHRT_MAX__", short_integer_type_node, 0);
builtin_define_type_max ("__INT_MAX__", integer_type_node, 0);
builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
builtin_define_type_max ("__WCHAR_MAX__", wchar_type_node, 0);
/* limits.h and stdint.h need to know these. */
builtin_define_type_max ("__SCHAR_MAX__", signed_char_type_node);
builtin_define_type_max ("__SHRT_MAX__", short_integer_type_node);
builtin_define_type_max ("__INT_MAX__", integer_type_node);
builtin_define_type_max ("__LONG_MAX__", long_integer_type_node);
builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node);
builtin_define_type_minmax ("__WCHAR_MIN__", "__WCHAR_MAX__",
underlying_wchar_type_node);
builtin_define_type_minmax ("__WINT_MIN__", "__WINT_MAX__", wint_type_node);
builtin_define_type_max ("__PTRDIFF_MAX__", ptrdiff_type_node);
builtin_define_type_max ("__SIZE_MAX__", size_type_node);
builtin_define_type_precision ("__CHAR_BIT__", char_type_node);
/* stdint.h (eventually) and the testsuite need to know these. */
/* stdint.h and the testsuite need to know these. */
builtin_define_stdint_macros ();
/* float.h needs to know these. */
@ -891,12 +969,80 @@ builtin_define_with_hex_fp_value (const char *macro,
cpp_define (parse_in, buf1);
}
/* Define MAX for TYPE based on the precision of the type. IS_LONG is
1 for type "long" and 2 for "long long". We have to handle
unsigned types, since wchar_t might be unsigned. */
/* Return a string constant for the suffix for a value of type TYPE
promoted according to the integer promotions. The type must be one
of the standard integer type nodes. */
static const char *
type_suffix (tree type)
{
static const char *const suffixes[] = { "", "U", "L", "UL", "LL", "ULL" };
int unsigned_suffix;
int is_long;
if (type == long_long_integer_type_node
|| type == long_long_unsigned_type_node)
is_long = 2;
else if (type == long_integer_type_node
|| type == long_unsigned_type_node)
is_long = 1;
else if (type == integer_type_node
|| type == unsigned_type_node
|| type == short_integer_type_node
|| type == short_unsigned_type_node
|| type == signed_char_type_node
|| type == unsigned_char_type_node
/* ??? "char" is not a signed or unsigned integer type and
so is not permitted for the standard typedefs, but some
systems use it anyway. */
|| type == char_type_node)
is_long = 0;
else
gcc_unreachable ();
unsigned_suffix = TYPE_UNSIGNED (type);
if (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))
unsigned_suffix = 0;
return suffixes[is_long * 2 + unsigned_suffix];
}
/* Define MACRO as a <stdint.h> constant-suffix macro for TYPE. */
static void
builtin_define_constants (const char *macro, tree type)
{
const char *suffix;
char *buf;
suffix = type_suffix (type);
if (suffix[0] == 0)
{
buf = (char *) alloca (strlen (macro) + 6);
sprintf (buf, "%s(c)=c", macro);
}
else
{
buf = (char *) alloca (strlen (macro) + 9 + strlen (suffix) + 1);
sprintf (buf, "%s(c)=c ## %s", macro, suffix);
}
cpp_define (parse_in, buf);
}
/* Define MAX for TYPE based on the precision of the type. */
static void
builtin_define_type_max (const char *macro, tree type, int is_long)
builtin_define_type_max (const char *macro, tree type)
{
builtin_define_type_minmax (NULL, macro, type);
}
/* Define MIN_MACRO (if not NULL) and MAX_MACRO for TYPE based on the
precision of the type. */
static void
builtin_define_type_minmax (const char *min_macro, const char *max_macro,
tree type)
{
static const char *const values[]
= { "127", "255",
@ -905,7 +1051,6 @@ builtin_define_type_max (const char *macro, tree type, int is_long)
"9223372036854775807", "18446744073709551615",
"170141183460469231731687303715884105727",
"340282366920938463463374607431768211455" };
static const char *const suffixes[] = { "", "U", "L", "UL", "LL", "ULL" };
const char *value, *suffix;
char *buf;
@ -925,11 +1070,27 @@ builtin_define_type_max (const char *macro, tree type, int is_long)
}
value = values[idx + TYPE_UNSIGNED (type)];
suffix = suffixes[is_long * 2 + TYPE_UNSIGNED (type)];
suffix = type_suffix (type);
buf = (char *) alloca (strlen (macro) + 1 + strlen (value)
buf = (char *) alloca (strlen (max_macro) + 1 + strlen (value)
+ strlen (suffix) + 1);
sprintf (buf, "%s=%s%s", macro, value, suffix);
sprintf (buf, "%s=%s%s", max_macro, value, suffix);
cpp_define (parse_in, buf);
if (min_macro)
{
if (TYPE_UNSIGNED (type))
{
buf = (char *) alloca (strlen (min_macro) + 2 + strlen (suffix) + 1);
sprintf (buf, "%s=0%s", min_macro, suffix);
}
else
{
buf = (char *) alloca (strlen (min_macro) + 3
+ strlen (max_macro) + 6);
sprintf (buf, "%s=(-%s - 1)", min_macro, max_macro);
}
cpp_define (parse_in, buf);
}
}

View File

@ -104,6 +104,12 @@
# use_gcc_tgmath If set, add tgmath.h to the list of used header
# files.
#
# use_gcc_stdint If "wrap", install a version of stdint.h that
# wraps the system's copy for hosted compilations;
# if "provide", provide a version of systems without
# such a system header; otherwise "none", do not
# provide such a header at all.
#
# extra_passes List of extra executables compiled for this target
# machine, used for compiling from source to object.
#
@ -166,6 +172,7 @@ out_file=
tmake_file=
extra_headers=
use_gcc_tgmath=yes
use_gcc_stdint=none
extra_passes=
extra_parts=
extra_programs=
@ -494,6 +501,7 @@ case ${target} in
# Assume that glibc or uClibc are being used and so __cxa_atexit is provided.
default_use_cxa_atexit=yes
use_gcc_tgmath=no
use_gcc_stdint=wrap
;;
*-*-netbsd*)
tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
@ -551,6 +559,10 @@ case ${target} in
case ${enable_threads} in
yes) thread_file='rtems' ;;
esac
use_gcc_stdint=wrap
;;
*-*-uclinux*)
use_gcc_stdint=wrap
;;
*-*-vxworks*)
tmake_file=t-vxworks
@ -566,6 +578,7 @@ case ${target} in
*-*-elf)
# Assume that newlib is being used and so __cxa_atexit is provided.
default_use_cxa_atexit=yes
use_gcc_stdint=wrap
;;
esac
@ -582,12 +595,12 @@ case ${target} in
fi
;;
alpha*-*-linux*)
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
target_cpu_default="MASK_GAS"
tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
;;
alpha*-*-gnu*)
tm_file="$tm_file alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h alpha/gnu.h"
tm_file="$tm_file alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h glibc-stdint.h alpha/gnu.h"
target_cpu_default="MASK_GAS"
tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
;;
@ -657,7 +670,7 @@ alpha*-dec-*vms*)
local_prefix=/gnu
;;
arc-*-elf*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
extra_parts="crtinit.o crtfini.o"
;;
arm-wrs-vxworks)
@ -679,7 +692,7 @@ arm*-*-netbsd*)
use_collect2=yes
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
tm_file="dbxelf.h elfos.h linux.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
case $target in
arm*b-*)
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
@ -705,7 +718,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
arm*-*-uclinux*) # ARM ucLinux
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h"
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
tmake_file="arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-uclinux*eabi)
@ -722,7 +735,7 @@ arm*-*-uclinux*) # ARM ucLinux
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
arm*-*-ecos-elf)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
tmake_file="arm/t-arm arm/t-arm-elf"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
@ -736,9 +749,10 @@ arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="arm/t-arm arm/t-arm-elf"
case ${target} in
arm*-*-eabi*)
tm_file="$tm_file arm/eabi.h"
tm_file="$tm_file arm/eabi.h newlib-stdint.h"
tmake_file="${tmake_file} arm/t-bpabi"
extra_options="${extra_options} arm/eabi.opt"
use_gcc_stdint=wrap
;;
arm*-*-symbianelf*)
tm_file="${tm_file} arm/symbian.h"
@ -751,12 +765,12 @@ arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
arm*-*-rtems*)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h"
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
arm*-*-elf)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
tmake_file="arm/t-arm arm/t-arm-elf"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
@ -767,32 +781,34 @@ arm*-wince-pe*)
extra_objs="pe.o"
;;
arm-*-pe*)
tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h"
tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h newlib-stdint.h"
tmake_file="arm/t-arm arm/t-pe"
use_gcc_stdint=wrap
extra_options="${extra_options} arm/pe.opt"
extra_objs="pe.o"
;;
avr-*-rtems*)
tm_file="avr/avr.h dbxelf.h avr/rtems.h rtems.h"
tm_file="avr/avr.h dbxelf.h avr/rtems.h rtems.h newlib-stdint.h"
tmake_file="avr/t-avr t-rtems avr/t-rtems"
;;
avr-*-*)
tm_file="avr/avr.h dbxelf.h"
tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
use_gcc_stdint=wrap
;;
bfin*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
tmake_file=bfin/t-bfin-elf
use_collect2=no
;;
bfin*-uclinux*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h bfin/uclinux.h"
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h glibc-stdint.h bfin/uclinux.h"
tmake_file=bfin/t-bfin-uclinux
tm_defines="${tm_defines} UCLIBC_DEFAULT=1"
extra_options="${extra_options} linux.opt"
use_collect2=no
;;
bfin*-linux-uclibc*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h bfin/linux.h ./linux-sysroot-suffix.h"
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
tmake_file="t-slibgcc-elf-ver bfin/t-bfin-linux"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
use_collect2=no
@ -802,25 +818,28 @@ bfin*-rtems*)
tmake_file="bfin/t-bfin t-rtems bfin/t-rtems"
;;
bfin*-*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
tmake_file=bfin/t-bfin
use_collect2=no
use_gcc_stdint=wrap
;;
crisv32-*-elf | crisv32-*-none)
tm_file="dbxelf.h elfos.h ${tm_file}"
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
tmake_file="cris/t-cris"
target_cpu_default=32
gas=yes
extra_options="${extra_options} cris/elf.opt"
use_gcc_stdint=wrap
;;
cris-*-elf | cris-*-none)
tm_file="dbxelf.h elfos.h ${tm_file}"
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
tmake_file="cris/t-cris cris/t-elfmulti"
gas=yes
extra_options="${extra_options} cris/elf.opt"
use_gcc_stdint=wrap
;;
crisv32-*-linux* | cris-*-linux*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h glibc-stdint.h cris/linux.h"
# We need to avoid using t-linux, so override default tmake_file
tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
extra_options="${extra_options} cris/linux.opt"
@ -834,43 +853,44 @@ crisv32-*-linux* | cris-*-linux*)
esac
;;
crx-*-elf)
tm_file="elfos.h ${tm_file}"
tm_file="elfos.h newlib-stdint.h ${tm_file}"
extra_parts="crtbegin.o crtend.o"
use_collect2=no
;;
fr30-*-elf)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
tmake_file=fr30/t-fr30
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
;;
frv-*-elf)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} frv/frv-abi.h"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file} frv/frv-abi.h"
tmake_file=frv/t-frv
;;
frv-*-*linux*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} \
linux.h frv/linux.h frv/frv-abi.h"
linux.h glibc-stdint.h frv/linux.h frv/frv-abi.h"
tmake_file="${tmake_file} frv/t-frv frv/t-linux"
;;
h8300-*-rtems*)
tmake_file="h8300/t-h8300 h8300/t-elf t-rtems h8300/t-rtems"
tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h"
tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h newlib-stdint.h"
;;
h8300-*-elf*)
tmake_file="h8300/t-h8300 h8300/t-elf"
tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h"
tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
;;
hppa*64*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_PA_20"
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h \
pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
pa/pa64-linux.h"
tmake_file="${tmake_file} pa/t-linux64"
gas=yes gnu_ld=yes
need_64bit_hwint=yes
;;
hppa*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h pa/pa-linux.h \
pa/pa32-regs.h pa/pa32-linux.h"
tmake_file="${tmake_file} pa/t-linux"
# Set the libgcc version number
@ -1002,11 +1022,11 @@ x86_64-*-darwin*)
tm_file="${tm_file} ${cpu_type}/darwin64.h"
;;
i[34567]86-*-elf*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h"
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
tmake_file="${tmake_file} i386/t-i386elf t-svr4"
;;
x86_64-*-elf*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h"
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
tmake_file="${tmake_file} i386/t-i386elf t-svr4"
;;
i[34567]86-*-freebsd*)
@ -1045,7 +1065,7 @@ i[34567]86-*-openbsd*)
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
# Intel 80386's running GNU/*
# with ELF format using glibc 2
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h"
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h"
case ${target} in
i[34567]86-*-linux*)
if test x$enable_targets = xall; then
@ -1079,7 +1099,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
;;
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h \
i386/x86-64.h i386/linux64.h"
case ${target} in
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
@ -1131,7 +1151,7 @@ i[34567]86-*-nto-qnx*)
gas=yes
;;
i[34567]86-*-rtems*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h"
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
extra_parts="crtbegin.o crtend.o crti.o crtn.o"
tmake_file="${tmake_file} i386/t-rtems-i386 i386/t-crtstuff t-rtems"
;;
@ -1167,6 +1187,7 @@ i[34567]86-*-solaris2*)
# depends on a runtime test and is thus performed in
# libgcc/configure.ac instead.
need_64bit_hwint=yes
use_gcc_stdint=wrap
case X"${with_cpu}" in
Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
;;
@ -1182,6 +1203,9 @@ i[34567]86-*-solaris2*)
;;
esac
;;
*)
use_gcc_stdint=provide
;;
esac
case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
"":yes:* | yes:yes:* )
@ -1275,7 +1299,7 @@ i[34567]86-*-interix3*)
fi
;;
ia64*-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/elf.h"
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
tmake_file="ia64/t-ia64"
target_cpu_default="0"
if test x$gas = xyes
@ -1295,7 +1319,7 @@ ia64*-*-freebsd*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
;;
ia64*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
if test x$with_system_libunwind != xyes ; then
tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
@ -1318,26 +1342,26 @@ ia64*-*-hpux*)
extra_options="${extra_options} ia64/ilp32.opt"
;;
iq2000*-*-elf*)
tm_file="svr4.h elfos.h iq2000/iq2000.h"
tm_file="svr4.h elfos.h newlib-stdint.h iq2000/iq2000.h"
tmake_file=iq2000/t-iq2000
out_file=iq2000/iq2000.c
md_file=iq2000/iq2000.md
;;
m32r-*-elf*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
extra_parts="crtinit.o crtfini.o"
;;
m32rle-*-elf*)
tm_file="dbxelf.h elfos.h svr4.h m32r/little.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h m32r/little.h ${tm_file}"
extra_parts="crtinit.o crtfini.o m32rx/crtinit.o m32rx/crtfini.o"
;;
m32r-*-rtems*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32r/rtems.h rtems.h"
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32r/rtems.h rtems.h newlib-stdint.h"
tmake_file="m32r/t-m32r t-rtems"
extra_parts="crtinit.o crtfini.o"
;;
m32r-*-linux*)
tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} m32r/linux.h"
tm_file="dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
# We override the tmake_file for linux -- why?
tmake_file="t-slibgcc-elf-ver m32r/t-linux"
gnu_ld=yes
@ -1346,7 +1370,7 @@ m32r-*-linux*)
fi
;;
m32rle-*-linux*)
tm_file="dbxelf.h elfos.h svr4.h linux.h m32r/little.h ${tm_file} m32r/linux.h"
tm_file="dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
# We override the tmake_file for linux -- why?
tmake_file="t-slibgcc-elf-ver m32r/t-linux"
gnu_ld=yes
@ -1356,19 +1380,21 @@ m32rle-*-linux*)
;;
# m68hc11 and m68hc12 share the same machine description.
m68hc11-*-*|m6811-*-*)
tm_file="dbxelf.h elfos.h usegas.h m68hc11/m68hc11.h"
tm_file="dbxelf.h elfos.h usegas.h newlib-stdint.h m68hc11/m68hc11.h"
tm_p_file="m68hc11/m68hc11-protos.h"
md_file="m68hc11/m68hc11.md"
out_file="m68hc11/m68hc11.c"
tmake_file="m68hc11/t-m68hc11"
use_gcc_stdint=wrap
;;
m68hc12-*-*|m6812-*-*)
tm_file="m68hc11/m68hc12.h dbxelf.h elfos.h usegas.h m68hc11/m68hc11.h"
tm_file="m68hc11/m68hc12.h dbxelf.h elfos.h usegas.h newlib-stdint.h m68hc11/m68hc11.h"
tm_p_file="m68hc11/m68hc11-protos.h"
md_file="m68hc11/m68hc11.md"
out_file="m68hc11/m68hc11.c"
tmake_file="m68hc11/t-m68hc11"
extra_options="${extra_options} m68hc11/m68hc11.opt"
use_gcc_stdint=wrap
;;
m68k-*-elf* | fido-*-elf*)
case ${target} in
@ -1389,7 +1415,7 @@ m68k-*-elf* | fido-*-elf*)
default_cf_cpu=5206
;;
esac
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
tm_defines="${tm_defines} MOTOROLA=1"
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
# Add multilibs for targets other than fido.
@ -1423,7 +1449,7 @@ m68k-*-uclinuxoldabi*) # Motorola m68k/ColdFire running uClinux
# m68k-elf-based ABI
default_m68k_cpu=68020
default_cf_cpu=5206
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux-oldabi.h"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux-oldabi.h glibc-stdint.h"
tm_defines="${tm_defines} MOTOROLA=1"
tmake_file="m68k/t-floatlib m68k/t-uclinux"
;;
@ -1432,7 +1458,7 @@ m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux
# ABI.
default_m68k_cpu=68020
default_cf_cpu=5206
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
tm_defines="${tm_defines} MOTOROLA=1 UCLIBC_DEFAULT=1"
extra_options="${extra_options} linux.opt"
tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
@ -1443,7 +1469,7 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux
default_m68k_cpu=68020
default_cf_cpu=5475
with_arch=${with_arch:-m68k}
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h m68k/linux.h ./sysroot-suffix.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
extra_options="${extra_options} m68k/ieee.opt"
tm_defines="${tm_defines} MOTOROLA=1"
tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
@ -1457,19 +1483,20 @@ m68k-*-rtems*)
default_m68k_cpu=68020
default_cf_cpu=5206
tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems m68k/t-mlibs"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
tm_defines="${tm_defines} MOTOROLA=1"
extra_parts="crtbegin.o crtend.o"
;;
mcore-*-elf)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} mcore/mcore-elf.h"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
tmake_file=mcore/t-mcore
inhibit_libc=true
;;
mcore-*-pe*)
tm_file="svr3.h dbxcoff.h ${tm_file} mcore/mcore-pe.h"
tm_file="svr3.h dbxcoff.h newlib-stdint.h ${tm_file} mcore/mcore-pe.h"
tmake_file=mcore/t-mcore-pe
inhibit_libc=true
use_gcc_stdint=wrap
;;
mips-sgi-irix[56]*)
tm_file="elfos.h ${tm_file} mips/iris.h"
@ -1503,7 +1530,7 @@ mips*-*-netbsd*) # NetBSD/mips, either endian.
tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
;;
mips64*-*-linux* | mipsisa64*-*-linux*)
tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h"
tm_file="dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h ${tm_file} mips/linux.h mips/linux64.h"
tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16"
tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
case ${target} in
@ -1524,7 +1551,7 @@ mips64*-*-linux* | mipsisa64*-*-linux*)
test x$with_llsc != x || with_llsc=yes
;;
mips*-*-linux*) # Linux MIPS, either endian.
tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
tm_file="dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h ${tm_file} mips/linux.h"
tmake_file="${tmake_file} mips/t-libgcc-mips16"
case ${target} in
mipsisa32r2*)
@ -1546,7 +1573,7 @@ mips*-*-openbsd*)
esac
;;
mips*-sde-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h mips/sde.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/sde.h"
tmake_file="mips/t-sde mips/t-libgcc-mips16"
case "${with_newlib}" in
yes)
@ -1583,7 +1610,7 @@ mipsisa32-*-elf* | mipsisa32el-*-elf* | \
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
mipsisa64-*-elf* | mipsisa64el-*-elf* | \
mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-isa3264 mips/t-libgcc-mips16"
case ${target} in
mipsisa32r2*)
@ -1614,39 +1641,39 @@ mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*)
esac
;;
mipsisa64sr71k-*-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file=mips/t-sr71k
target_cpu_default="MASK_64BIT|MASK_FLOAT64"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
;;
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16 mips/t-sb1"
target_cpu_default="MASK_64BIT|MASK_FLOAT64"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
;;
mips-*-elf* | mipsel-*-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16"
;;
mips64-*-elf* | mips64el-*-elf*)
tm_file="elfos.h ${tm_file} mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16"
target_cpu_default="MASK_64BIT|MASK_FLOAT64"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
;;
mips64vr-*-elf* | mips64vrel-*-elf*)
tm_file="elfos.h ${tm_file} mips/vr.h mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
tmake_file=mips/t-vr
;;
mips64orion-*-elf* | mips64orionel-*-elf*)
tm_file="elfos.h ${tm_file} mips/elforion.h mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16"
target_cpu_default="MASK_64BIT|MASK_FLOAT64"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
;;
mips*-*-rtems*)
tm_file="elfos.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
tmake_file="mips/t-elf mips/t-libgcc-mips16 t-rtems mips/t-rtems"
;;
mips-wrs-vxworks)
@ -1654,24 +1681,30 @@ mips-wrs-vxworks)
tmake_file="${tmake_file} mips/t-vxworks"
;;
mipstx39-*-elf* | mipstx39el-*-elf*)
tm_file="elfos.h ${tm_file} mips/r3900.h mips/elf.h"
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
tmake_file="mips/t-r3900 mips/t-libgcc-mips16"
;;
mmix-knuth-mmixware)
tm_file="${tm_file} newlib-stdint.h"
need_64bit_hwint=yes
use_gcc_stdint=wrap
;;
mn10300-*-*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
if test x$stabs = xyes
then
tm_file="${tm_file} dbx.h"
fi
use_collect2=no
use_gcc_stdint=wrap
;;
pdp11-*-*)
tm_file="${tm_file} newlib-stdint.h"
use_gcc_stdint=wrap
;;
picochip-*)
# Nothing special
tm_file="${tm_file} newlib-stdint.h"
use_gcc_stdint=wrap
;;
# port not yet contributed
#powerpc-*-openbsd*)
@ -1682,7 +1715,7 @@ powerpc64-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
test x$with_cpu != x || cpu_is_64bit=yes
test x$cpu_is_64bit != xyes || tm_file="${tm_file} rs6000/default64.h"
tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h"
tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
fi
@ -1690,7 +1723,7 @@ powerpc64-*-linux*)
tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
;;
powerpc64-*-gnu*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h glibc-stdint.h"
extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
;;
@ -1727,57 +1760,63 @@ powerpc-*-netbsd*)
extra_options="${extra_options} rs6000/sysv4.opt"
;;
powerpc-*-eabispe*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabispe.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabispe.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-spe rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-*-eabisimaltivec*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h rs6000/eabialtivec.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h rs6000/eabialtivec.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-*-eabisim*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
;;
powerpc-*-eabialtivec*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-xilinx-eabi*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-*-eabi*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
powerpc-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-rtems t-rtems rs6000/t-ppccomm"
;;
powerpc-*-linux*altivec*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h glibc-stdint.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
;;
powerpc-*-linux*spe*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h rs6000/e500.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h rs6000/e500.h glibc-stdint.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
;;
powerpc-*-linux*paired*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/750cl.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/750cl.h glibc-stdint.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
;;
@ -1790,12 +1829,12 @@ powerpc-*-linux*)
if test x$cpu_is_64bit = xyes; then
tm_file="${tm_file} rs6000/default64.h"
fi
tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h"
tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
tmake_file="$tmake_file rs6000/t-linux64"
extra_options="${extra_options} rs6000/linux64.opt"
;;
*)
tm_file="${tm_file} rs6000/linux.h"
tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
;;
esac
if test x${enable_secureplt} = xyes; then
@ -1803,7 +1842,7 @@ powerpc-*-linux*)
fi
;;
powerpc-*-gnu-gnualtivec*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h glibc-stdint.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
if test x$enable_threads = xyes; then
@ -1811,7 +1850,7 @@ powerpc-*-gnu-gnualtivec*)
fi
;;
powerpc-*-gnu*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h"
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h glibc-stdint.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
if test x$enable_threads = xyes; then
@ -1845,24 +1884,27 @@ powerpc-*-lynxos*)
gas=yes
;;
powerpcle-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
powerpcle-*-eabisim*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
use_gcc_stdint=wrap
;;
powerpcle-*-eabi*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
use_gcc_stdint=wrap
;;
powerpc-xilinx-eabi*)
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h rs6000/xfpu.h"
tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h rs6000/xfpu.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
use_gcc_stdint=wrap
;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h"
@ -1905,11 +1947,11 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
extra_headers=altivec.h
;;
s390-*-linux*)
tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h s390/linux.h"
tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux"
;;
s390x-*-linux*)
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h s390/linux.h"
tm_p_file=s390/s390-protos.h
md_file=s390/s390.md
extra_modes=s390/s390-modes.def
@ -1928,7 +1970,7 @@ s390x-ibm-tpf*)
extra_options="${extra_options} s390/tpf.opt"
;;
score-*-elf)
tm_file="dbxelf.h elfos.h score/elf.h score/score.h"
tm_file="dbxelf.h elfos.h score/elf.h score/score.h newlib-stdint.h"
tmake_file=score/t-score-elf
extra_objs="score7.o score3.o"
;;
@ -1965,7 +2007,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
tm_file="${tm_file} sh/elf.h"
case ${target} in
sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
tm_file="${tm_file} linux.h sh/linux.h" ;;
tm_file="${tm_file} linux.h glibc-stdint.h sh/linux.h" ;;
sh*-*-netbsd*) tm_file="${tm_file} netbsd.h netbsd-elf.h sh/netbsd-elf.h" ;;
sh*-superh-elf) if test x$with_libgloss != xno; then
with_libgloss=yes
@ -2008,6 +2050,9 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
extra_objs="symbian.o"
extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o"
;;
*-*-elf*)
tm_file="${tm_file} newlib-stdint.h"
;;
esac
# sed el/eb endian suffixes away to avoid confusion with sh[23]e
case `echo ${target} | sed 's/e[lb]-/-/'` in
@ -2099,7 +2144,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
;;
sh-*-rtems*)
tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
;;
sh-wrs-vxworks)
tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
@ -2116,12 +2161,12 @@ sparc64-*-openbsd*)
with_cpu=ultrasparc
;;
sparc-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h"
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h svr4.h sparc/sysv4.h sparc/sp-elf.h"
tmake_file="sparc/t-elf sparc/t-crtfm"
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
;;
sparc-*-linux*) # SPARC's running GNU/Linux, libc6
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-linux"
if test x$enable_targets = xall; then
@ -2133,7 +2178,7 @@ sparc-*-linux*) # SPARC's running GNU/Linux, libc6
tmake_file="${tmake_file} sparc/t-crtfm"
;;
sparc-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
;;
@ -2142,6 +2187,10 @@ sparc64-*-solaris2* | sparcv9-*-solaris2*)
case ${target} in
*-*-solaris2.1[0-9]*)
tm_file="${tm_file} sol2-10.h"
use_gcc_stdint=wrap
;;
*)
use_gcc_stdint=provide
;;
esac
tm_file="${tm_file} sparc/sol2.h sparc/sol2-64.h sparc/sol2-bi.h"
@ -2173,6 +2222,10 @@ sparc-*-solaris2*)
case ${target} in
*-*-solaris2.1[0-9]*)
tm_file="${tm_file} sol2-10.h"
use_gcc_stdint=wrap
;;
*)
use_gcc_stdint=provide
;;
esac
tm_file="${tm_file} sparc/sol2.h"
@ -2217,7 +2270,7 @@ sparc-wrs-vxworks)
tmake_file="${tmake_file} sparc/t-vxworks"
;;
sparc64-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
extra_options="${extra_options} sparc/little-endian.opt"
tmake_file="${tmake_file} sparc/t-crtfm"
extra_parts="crtbegin.o crtend.o"
@ -2233,7 +2286,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
esac
;;
sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h sparc/linux64.h"
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
;;
@ -2244,7 +2297,7 @@ sparc64-*-netbsd*)
tmake_file="${tmake_file} sparc/t-netbsd64"
;;
spu-*-elf*)
tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h"
tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
tmake_file="spu/t-spu-elf"
extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h"
extra_modes=spu/spu-modes.def
@ -2253,7 +2306,7 @@ spu-*-elf*)
;;
v850e1-*-*)
target_cpu_default="TARGET_CPU_v850e1"
tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h v850/v850.h"
tm_p_file=v850/v850-protos.h
tmake_file=v850/t-v850e
md_file=v850/v850.md
@ -2266,10 +2319,11 @@ v850e1-*-*)
use_collect2=no
c_target_objs="v850-c.o"
cxx_target_objs="v850-c.o"
use_gcc_stdint=wrap
;;
v850e-*-*)
target_cpu_default="TARGET_CPU_v850e"
tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h v850/v850.h"
tm_p_file=v850/v850-protos.h
tmake_file=v850/t-v850e
md_file=v850/v850.md
@ -2282,10 +2336,11 @@ v850e-*-*)
use_collect2=no
c_target_objs="v850-c.o"
cxx_target_objs="v850-c.o"
use_gcc_stdint=wrap
;;
v850-*-*)
target_cpu_default="TARGET_CPU_generic"
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
tmake_file=v850/t-v850
if test x$stabs = xyes
then
@ -2294,6 +2349,7 @@ v850-*-*)
use_collect2=no
c_target_objs="v850-c.o"
cxx_target_objs="v850-c.o"
use_gcc_stdint=wrap
;;
vax-*-netbsdelf*)
tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h"
@ -2310,7 +2366,7 @@ vax-*-openbsd*)
;;
xstormy16-*-elf)
# For historical reasons, the target files omit the 'x'.
tm_file="dbxelf.h elfos.h svr4.h stormy16/stormy16.h"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h stormy16/stormy16.h"
tm_p_file=stormy16/stormy16-protos.h
md_file=stormy16/stormy16.md
out_file=stormy16/stormy16.c
@ -2319,28 +2375,28 @@ xstormy16-*-elf)
extra_parts="crtbegin.o crtend.o"
;;
xtensa*-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h xtensa/elf.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h newlib-stdint.h xtensa/elf.h"
tmake_file="xtensa/t-xtensa xtensa/t-elf"
;;
xtensa*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h xtensa/linux.h"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h xtensa/linux.h"
tmake_file="${tmake_file} xtensa/t-xtensa xtensa/t-linux"
;;
am33_2.0-*-linux*)
tm_file="mn10300/mn10300.h dbxelf.h elfos.h linux.h mn10300/linux.h"
tm_file="mn10300/mn10300.h dbxelf.h elfos.h linux.h glibc-stdint.h mn10300/linux.h"
tmake_file="${tmake_file} mn10300/t-linux"
gas=yes gnu_ld=yes
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
use_collect2=no
;;
m32c-*-rtems*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32c/rtems.h rtems.h"
tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32c/rtems.h rtems.h newlib-stdint.h"
tmake_file="${tmake_file} t-rtems"
c_target_objs="m32c-pragma.o"
cxx_target_objs="m32c-pragma.o"
;;
m32c-*-elf*)
tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
tm_file="dbxelf.h elfos.h svr4.h newlib-stdint.h ${tm_file}"
c_target_objs="m32c-pragma.o"
cxx_target_objs="m32c-pragma.o"
;;

50
gcc/config/glibc-stdint.h Normal file
View File

@ -0,0 +1,50 @@
/* Definitions for <stdint.h> types on systems using GNU libc or uClibc.
Copyright (C) 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#define SIG_ATOMIC_TYPE "int"
#define INT8_TYPE "signed char"
#define INT16_TYPE "short int"
#define INT32_TYPE "int"
#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT8_TYPE "unsigned char"
#define UINT16_TYPE "short unsigned int"
#define UINT32_TYPE "unsigned int"
#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INT_LEAST8_TYPE "signed char"
#define INT_LEAST16_TYPE "short int"
#define INT_LEAST32_TYPE "int"
#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT_LEAST8_TYPE "unsigned char"
#define UINT_LEAST16_TYPE "short unsigned int"
#define UINT_LEAST32_TYPE "unsigned int"
#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INT_FAST8_TYPE "signed char"
#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT_FAST8_TYPE "unsigned char"
#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")

View File

@ -189,6 +189,9 @@ machine_function;
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE (TARGET_A16 ? "int" : "long int")
#undef UINTPTR_TYPE
#define UINTPTR_TYPE (TARGET_A16 ? "unsigned int" : "long unsigned int")
/* REGISTER USAGE */
/* Register Basics */

View File

@ -0,0 +1,64 @@
/* Definitions for <stdint.h> types on systems using newlib.
Copyright (C) 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* newlib uses 32-bit long in certain cases for all non-SPU
targets. */
#ifndef STDINT_LONG32
#define STDINT_LONG32 (LONG_TYPE_SIZE == 32)
#endif
#define SIG_ATOMIC_TYPE "int"
/* The newlib logic actually checks for sizes greater than 32 rather
than equal to 64 for various 64-bit types. */
#define INT8_TYPE (CHAR_TYPE_SIZE == 8 ? "signed char" : 0)
#define INT16_TYPE (SHORT_TYPE_SIZE == 16 ? "short int" : INT_TYPE_SIZE == 16 ? "int" : CHAR_TYPE_SIZE == 16 ? "signed char" : 0)
#define INT32_TYPE (STDINT_LONG32 ? "long int" : INT_TYPE_SIZE == 32 ? "int" : SHORT_TYPE_SIZE == 32 ? "short int" : CHAR_TYPE_SIZE == 32 ? "signed char" : 0)
#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : LONG_LONG_TYPE_SIZE == 64 ? "long long int" : INT_TYPE_SIZE == 64 ? "int" : 0)
#define UINT8_TYPE (CHAR_TYPE_SIZE == 8 ? "unsigned char" : 0)
#define UINT16_TYPE (SHORT_TYPE_SIZE == 16 ? "short unsigned int" : INT_TYPE_SIZE == 16 ? "unsigned int" : CHAR_TYPE_SIZE == 16 ? "unsigned char" : 0)
#define UINT32_TYPE (STDINT_LONG32 ? "long unsigned int" : INT_TYPE_SIZE == 32 ? "unsigned int" : SHORT_TYPE_SIZE == 32 ? "short unsigned int" : CHAR_TYPE_SIZE == 32 ? "unsigned char" : 0)
#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : LONG_LONG_TYPE_SIZE == 64 ? "long long unsigned int" : INT_TYPE_SIZE == 64 ? "unsigned int" : 0)
#define INT_LEAST8_TYPE (INT8_TYPE ? INT8_TYPE : INT16_TYPE ? INT16_TYPE : INT32_TYPE ? INT32_TYPE : INT64_TYPE ? INT64_TYPE : 0)
#define INT_LEAST16_TYPE (INT16_TYPE ? INT16_TYPE : INT32_TYPE ? INT32_TYPE : INT64_TYPE ? INT64_TYPE : 0)
#define INT_LEAST32_TYPE (INT32_TYPE ? INT32_TYPE : INT64_TYPE ? INT64_TYPE : 0)
#define INT_LEAST64_TYPE INT64_TYPE
#define UINT_LEAST8_TYPE (UINT8_TYPE ? UINT8_TYPE : UINT16_TYPE ? UINT16_TYPE : UINT32_TYPE ? UINT32_TYPE : UINT64_TYPE ? UINT64_TYPE : 0)
#define UINT_LEAST16_TYPE (UINT16_TYPE ? UINT16_TYPE : UINT32_TYPE ? UINT32_TYPE : UINT64_TYPE ? UINT64_TYPE : 0)
#define UINT_LEAST32_TYPE (UINT32_TYPE ? UINT32_TYPE : UINT64_TYPE ? UINT64_TYPE : 0)
#define UINT_LEAST64_TYPE UINT64_TYPE
#define INT_FAST8_TYPE (INT_TYPE_SIZE >= 8 ? "int" : INT_LEAST8_TYPE)
#define INT_FAST16_TYPE (INT_TYPE_SIZE >= 16 ? "int" : INT_LEAST16_TYPE)
#define INT_FAST32_TYPE (INT_TYPE_SIZE >= 32 ? "int" : INT_LEAST32_TYPE)
#define INT_FAST64_TYPE (INT_TYPE_SIZE >= 64 ? "int" : INT_LEAST64_TYPE)
#define UINT_FAST8_TYPE (INT_TYPE_SIZE >= 8 ? "unsigned int" : UINT_LEAST8_TYPE)
#define UINT_FAST16_TYPE (INT_TYPE_SIZE >= 16 ? "unsigned int" : UINT_LEAST16_TYPE)
#define UINT_FAST32_TYPE (INT_TYPE_SIZE >= 32 ? "unsigned int" : UINT_LEAST32_TYPE)
#define UINT_FAST64_TYPE (INT_TYPE_SIZE >= 64 ? "unsigned int" : UINT_LEAST64_TYPE)
/* Newlib uses the unsigned type corresponding to ptrdiff_t for
uintptr_t; this is the same as size_t for most newlib-using
targets. */
#define INTPTR_TYPE PTRDIFF_TYPE
#ifndef UINTPTR_TYPE
#define UINTPTR_TYPE SIZE_TYPE
#endif

View File

@ -1,5 +1,5 @@
/* score.h for Sunplus S+CORE processor
Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Sunnorth.
This file is part of GCC.
@ -216,6 +216,8 @@
/* Default definitions for size_t and ptrdiff_t. */
#define SIZE_TYPE "unsigned int"
#define UINTPTR_TYPE "long unsigned int"
/* Register Usage
S+core have:

View File

@ -1,6 +1,6 @@
/* Operating system specific defines to be used when targeting GCC for any
Solaris 2 system.
Copyright 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
Copyright 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@ -38,6 +38,40 @@ along with GCC; see the file COPYING3. If not see
#undef WINT_TYPE_SIZE
#define WINT_TYPE_SIZE BITS_PER_WORD
#define SIG_ATOMIC_TYPE "int"
/* ??? This definition of int8_t follows the system header but does
not conform to C99. Likewise int_fast8_t, int_least8_t. */
#define INT8_TYPE "char"
#define INT16_TYPE "short int"
#define INT32_TYPE "int"
#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT8_TYPE "unsigned char"
#define UINT16_TYPE "short unsigned int"
#define UINT32_TYPE "unsigned int"
#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INT_LEAST8_TYPE "char"
#define INT_LEAST16_TYPE "short int"
#define INT_LEAST32_TYPE "int"
#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT_LEAST8_TYPE "unsigned char"
#define UINT_LEAST16_TYPE "short unsigned int"
#define UINT_LEAST32_TYPE "unsigned int"
#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INT_FAST8_TYPE "char"
#define INT_FAST16_TYPE "int"
#define INT_FAST32_TYPE "int"
#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
#define UINT_FAST8_TYPE "unsigned char"
#define UINT_FAST16_TYPE "unsigned int"
#define UINT_FAST32_TYPE "unsigned int"
#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
#define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME 1
/* ??? Note: in order for -compat-bsd to work fully,

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
/* Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
@ -142,6 +142,8 @@ extern GTY(()) int spu_tune;
#define DEFAULT_SIGNED_CHAR 0
#define STDINT_LONG32 0
/* Register Basics */

6
gcc/configure vendored
View File

@ -458,7 +458,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines use_gcc_stdint c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
ac_subst_files='language_hooks'
ac_pwd=`pwd`
@ -23337,7 +23337,7 @@ if test "${gcc_cv_as_powerpc_tls_markers+set}" = set; then
else
gcc_cv_as_powerpc_tls_markers=no
if test $in_tree_gas = yes; then
if test $gcc_cv_gas_vers -ge `expr \( \( 9 \* 1000 \) + 99 \) \* 1000 + 0`
if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 20 \) \* 1000 + 0`
then gcc_cv_as_powerpc_tls_markers=yes
fi
elif test x$gcc_cv_as != x; then
@ -24643,6 +24643,7 @@ fi;
# Echo link setup.
@ -25512,6 +25513,7 @@ s,@tm_p_include_list@,$tm_p_include_list,;t t
s,@xm_file_list@,$xm_file_list,;t t
s,@xm_include_list@,$xm_include_list,;t t
s,@xm_defines@,$xm_defines,;t t
s,@use_gcc_stdint@,$use_gcc_stdint,;t t
s,@c_target_objs@,$c_target_objs,;t t
s,@cxx_target_objs@,$cxx_target_objs,;t t
s,@fortran_target_objs@,$fortran_target_objs,;t t

View File

@ -3911,6 +3911,7 @@ AC_SUBST(tm_p_include_list)
AC_SUBST(xm_file_list)
AC_SUBST(xm_include_list)
AC_SUBST(xm_defines)
AC_SUBST(use_gcc_stdint)
AC_SUBST(c_target_objs)
AC_SUBST(cxx_target_objs)
AC_SUBST(fortran_target_objs)

View File

@ -11,7 +11,8 @@
@copying
@c man begin COPYRIGHT
Copyright @copyright{} 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@ -2117,13 +2118,50 @@ OSF/rose @option{-mno-underscores} option).
@itemx __WINT_TYPE__
@itemx __INTMAX_TYPE__
@itemx __UINTMAX_TYPE__
@itemx __SIG_ATOMIC_TYPE__
@itemx __INT8_TYPE__
@itemx __INT16_TYPE__
@itemx __INT32_TYPE__
@itemx __INT64_TYPE__
@itemx __UINT8_TYPE__
@itemx __UINT16_TYPE__
@itemx __UINT32_TYPE__
@itemx __UINT64_TYPE__
@itemx __INT_LEAST8_TYPE__
@itemx __INT_LEAST16_TYPE__
@itemx __INT_LEAST32_TYPE__
@itemx __INT_LEAST64_TYPE__
@itemx __UINT_LEAST8_TYPE__
@itemx __UINT_LEAST16_TYPE__
@itemx __UINT_LEAST32_TYPE__
@itemx __UINT_LEAST64_TYPE__
@itemx __INT_FAST8_TYPE__
@itemx __INT_FAST16_TYPE__
@itemx __INT_FAST32_TYPE__
@itemx __INT_FAST64_TYPE__
@itemx __UINT_FAST8_TYPE__
@itemx __UINT_FAST16_TYPE__
@itemx __UINT_FAST32_TYPE__
@itemx __UINT_FAST64_TYPE__
@itemx __INTPTR_TYPE__
@itemx __UINTPTR_TYPE__
These macros are defined to the correct underlying types for the
@code{size_t}, @code{ptrdiff_t}, @code{wchar_t}, @code{wint_t},
@code{intmax_t}, and @code{uintmax_t}
typedefs, respectively. They exist to make the standard header files
@file{stddef.h} and @file{wchar.h} work correctly. You should not use
these macros directly; instead, include the appropriate headers and use
the typedefs.
@code{intmax_t}, @code{uintmax_t}, @code{sig_atomic_t}, @code{int8_t},
@code{int16_t}, @code{int32_t}, @code{int64_t}, @code{uint8_t},
@code{uint16_t}, @code{uint32_t}, @code{uint64_t},
@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t} typedefs,
respectively. They exist to make the standard header files
@file{stddef.h}, @file{stdint.h}, and @file{wchar.h} work correctly.
You should not use these macros directly; instead, include the
appropriate headers and use the typedefs. Some of these macros may
not be defined on particular systems if GCC does not provide a
@file{stdint.h} header on those systems.
@item __CHAR_BIT__
Defined to the number of bits used in the representation of the
@ -2137,14 +2175,77 @@ this macro directly; instead, include the appropriate headers.
@itemx __INT_MAX__
@itemx __LONG_MAX__
@itemx __LONG_LONG_MAX__
@itemx __WINT_MAX__
@itemx __SIZE_MAX__
@itemx __PTRDIFF_MAX__
@itemx __INTMAX_MAX__
@itemx __UINTMAX_MAX__
@itemx __SIG_ATOMIC_MAX__
@itemx __INT8_MAX__
@itemx __INT16_MAX__
@itemx __INT32_MAX__
@itemx __INT64_MAX__
@itemx __UINT8_MAX__
@itemx __UINT16_MAX__
@itemx __UINT32_MAX__
@itemx __UINT64_MAX__
@itemx __INT_LEAST8_MAX__
@itemx __INT_LEAST16_MAX__
@itemx __INT_LEAST32_MAX__
@itemx __INT_LEAST64_MAX__
@itemx __UINT_LEAST8_MAX__
@itemx __UINT_LEAST16_MAX__
@itemx __UINT_LEAST32_MAX__
@itemx __UINT_LEAST64_MAX__
@itemx __INT_FAST8_MAX__
@itemx __INT_FAST16_MAX__
@itemx __INT_FAST32_MAX__
@itemx __INT_FAST64_MAX__
@itemx __UINT_FAST8_MAX__
@itemx __UINT_FAST16_MAX__
@itemx __UINT_FAST32_MAX__
@itemx __UINT_FAST64_MAX__
@itemx __INTPTR_MAX__
@itemx __UINTPTR_MAX__
@itemx __WCHAR_MIN__
@itemx __WINT_MIN__
@itemx __SIG_ATOMIC_MIN__
Defined to the maximum value of the @code{signed char}, @code{wchar_t},
@code{signed short},
@code{signed int}, @code{signed long}, @code{signed long long}, and
@code{intmax_t} types
respectively. They exist to make the standard header given numerical limits
work correctly. You should not use these macros directly; instead, include
the appropriate headers.
@code{signed int}, @code{signed long}, @code{signed long long},
@code{wint_t}, @code{size_t}, @code{ptrdiff_t},
@code{intmax_t}, @code{uintmax_t}, @code{sig_atomic_t}, @code{int8_t},
@code{int16_t}, @code{int32_t}, @code{int64_t}, @code{uint8_t},
@code{uint16_t}, @code{uint32_t}, @code{uint64_t},
@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t} types and
to the minimum value of the @code{wchar_t}, @code{wint_t}, and
@code{sig_atomic_t} types respectively. They exist to make the
standard header given numerical limits work correctly. You should not
use these macros directly; instead, include the appropriate headers.
Some of these macros may not be defined on particular systems if GCC
does not provide a @file{stdint.h} header on those systems.
@item __INT8_C
@itemx __INT16_C
@itemx __INT32_C
@itemx __INT64_C
@itemx __UINT8_C
@itemx __UINT16_C
@itemx __UINT32_C
@itemx __UINT64_C
@itemx __INTMAX_C
@itemx __UINTMAX_C
Defined to implementations of the standard @file{stdint.h} macros with
the same names without the leading @code{__}. They exist the make the
implementation of that header work correctly. You should not use
these macros directly; instead, include the appropriate headers. Some
of these macros may not be defined on particular systems if GCC does
not provide a @file{stdint.h} header on those systems.
@item __SIZEOF_INT__
@itemx __SIZEOF_LONG__

View File

@ -1782,6 +1782,51 @@ unsigned int"} that has as much precision as @code{long long unsigned
int}.
@end defmac
@defmac SIG_ATOMIC_TYPE
@defmacx INT8_TYPE
@defmacx INT16_TYPE
@defmacx INT32_TYPE
@defmacx INT64_TYPE
@defmacx UINT8_TYPE
@defmacx UINT16_TYPE
@defmacx UINT32_TYPE
@defmacx UINT64_TYPE
@defmacx INT_LEAST8_TYPE
@defmacx INT_LEAST16_TYPE
@defmacx INT_LEAST32_TYPE
@defmacx INT_LEAST64_TYPE
@defmacx UINT_LEAST8_TYPE
@defmacx UINT_LEAST16_TYPE
@defmacx UINT_LEAST32_TYPE
@defmacx UINT_LEAST64_TYPE
@defmacx INT_FAST8_TYPE
@defmacx INT_FAST16_TYPE
@defmacx INT_FAST32_TYPE
@defmacx INT_FAST64_TYPE
@defmacx UINT_FAST8_TYPE
@defmacx UINT_FAST16_TYPE
@defmacx UINT_FAST32_TYPE
@defmacx UINT_FAST64_TYPE
@defmacx INTPTR_TYPE
@defmacx UINTPTR_TYPE
C expressions for the standard types @code{sig_atomic_t},
@code{int8_t}, @code{int16_t}, @code{int32_t}, @code{int64_t},
@code{uint8_t}, @code{uint16_t}, @code{uint32_t}, @code{uint64_t},
@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t}. See
@code{SIZE_TYPE} above for more information.
If any of these macros evaluates to a null pointer, the corresponding
type is not supported; if GCC is configured to provide
@code{<stdint.h>} in such a case, the header provided may not conform
to C99, depending on the type in question. The defaults for all of
these macros are null pointers.
@end defmac
@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION
The C++ compiler represents a pointer-to-member-function with a struct
that looks like:

262
gcc/ginclude/stdint-gcc.h Normal file
View File

@ -0,0 +1,262 @@
/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
/* As a special exception, if you include this header file into source
files compiled by GCC, this header file does not by itself cause
the resulting executable to be covered by the GNU General Public
License. This exception does not however invalidate any other
reasons why the executable file might be covered by the GNU General
Public License. */
/*
* ISO C Standard: 7.18 Integer types <stdint.h>
*/
#ifndef _GCC_STDINT_H
#define _GCC_STDINT_H
/* 7.8.1.1 Exact-width integer types */
#ifdef __INT8_TYPE__
typedef __INT8_TYPE__ int8_t;
#endif
#ifdef __INT16_TYPE__
typedef __INT16_TYPE__ int16_t;
#endif
#ifdef __INT32_TYPE__
typedef __INT32_TYPE__ int32_t;
#endif
#ifdef __INT64_TYPE__
typedef __INT64_TYPE__ int64_t;
#endif
#ifdef __UINT8_TYPE__
typedef __UINT8_TYPE__ uint8_t;
#endif
#ifdef __UINT16_TYPE__
typedef __UINT16_TYPE__ uint16_t;
#endif
#ifdef __UINT32_TYPE__
typedef __UINT32_TYPE__ uint32_t;
#endif
#ifdef __UINT64_TYPE__
typedef __UINT64_TYPE__ uint64_t;
#endif
/* 7.8.1.2 Minimum-width integer types */
typedef __INT_LEAST8_TYPE__ int_least8_t;
typedef __INT_LEAST16_TYPE__ int_least16_t;
typedef __INT_LEAST32_TYPE__ int_least32_t;
typedef __INT_LEAST64_TYPE__ int_least64_t;
typedef __UINT_LEAST8_TYPE__ uint_least8_t;
typedef __UINT_LEAST16_TYPE__ uint_least16_t;
typedef __UINT_LEAST32_TYPE__ uint_least32_t;
typedef __UINT_LEAST64_TYPE__ uint_least64_t;
/* 7.8.1.3 Fastest minimum-width integer types */
typedef __INT_FAST8_TYPE__ int_fast8_t;
typedef __INT_FAST16_TYPE__ int_fast16_t;
typedef __INT_FAST32_TYPE__ int_fast32_t;
typedef __INT_FAST64_TYPE__ int_fast64_t;
typedef __UINT_FAST8_TYPE__ uint_fast8_t;
typedef __UINT_FAST16_TYPE__ uint_fast16_t;
typedef __UINT_FAST32_TYPE__ uint_fast32_t;
typedef __UINT_FAST64_TYPE__ uint_fast64_t;
/* 7.8.1.4 Integer types capable of holding object pointers */
#ifdef __INTPTR_TYPE__
typedef __INTPTR_TYPE__ intptr_t;
#endif
#ifdef __UINTPTR_TYPE__
typedef __UINTPTR_TYPE__ uintptr_t;
#endif
/* 7.8.1.5 Greatest-width integer types */
typedef __INTMAX_TYPE__ intmax_t;
typedef __UINTMAX_TYPE__ uintmax_t;
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
/* 7.18.2 Limits of specified-width integer types */
#ifdef __INT8_MAX__
# undef INT8_MAX
# define INT8_MAX __INT8_MAX__
# undef INT8_MIN
# define INT8_MIN (-INT8_MAX - 1)
#endif
#ifdef __UINT8_MAX__
# undef UINT8_MAX
# define UINT8_MAX __UINT8_MAX__
#endif
#ifdef __INT16_MAX__
# undef INT16_MAX
# define INT16_MAX __INT16_MAX__
# undef INT16_MIN
# define INT16_MIN (-INT16_MAX - 1)
#endif
#ifdef __UINT16_MAX__
# undef UINT16_MAX
# define UINT16_MAX __UINT16_MAX__
#endif
#ifdef __INT32_MAX__
# undef INT32_MAX
# define INT32_MAX __INT32_MAX__
# undef INT32_MIN
# define INT32_MIN (-INT32_MAX - 1)
#endif
#ifdef __UINT32_MAX__
# undef UINT32_MAX
# define UINT32_MAX __UINT32_MAX__
#endif
#ifdef __INT64_MAX__
# undef INT64_MAX
# define INT64_MAX __INT64_MAX__
# undef INT64_MIN
# define INT64_MIN (-INT64_MAX - 1)
#endif
#ifdef __UINT64_MAX__
# undef UINT64_MAX
# define UINT64_MAX __UINT64_MAX__
#endif
#undef INT_LEAST8_MAX
#define INT_LEAST8_MAX __INT_LEAST8_MAX__
#undef INT_LEAST8_MIN
#define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
#undef UINT_LEAST8_MAX
#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
#undef INT_LEAST16_MAX
#define INT_LEAST16_MAX __INT_LEAST16_MAX__
#undef INT_LEAST16_MIN
#define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
#undef UINT_LEAST16_MAX
#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
#undef INT_LEAST32_MAX
#define INT_LEAST32_MAX __INT_LEAST32_MAX__
#undef INT_LEAST32_MIN
#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
#undef UINT_LEAST32_MAX
#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
#undef INT_LEAST64_MAX
#define INT_LEAST64_MAX __INT_LEAST64_MAX__
#undef INT_LEAST64_MIN
#define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
#undef UINT_LEAST64_MAX
#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
#undef INT_FAST8_MAX
#define INT_FAST8_MAX __INT_FAST8_MAX__
#undef INT_FAST8_MIN
#define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
#undef UINT_FAST8_MAX
#define UINT_FAST8_MAX __UINT_FAST8_MAX__
#undef INT_FAST16_MAX
#define INT_FAST16_MAX __INT_FAST16_MAX__
#undef INT_FAST16_MIN
#define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
#undef UINT_FAST16_MAX
#define UINT_FAST16_MAX __UINT_FAST16_MAX__
#undef INT_FAST32_MAX
#define INT_FAST32_MAX __INT_FAST32_MAX__
#undef INT_FAST32_MIN
#define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
#undef UINT_FAST32_MAX
#define UINT_FAST32_MAX __UINT_FAST32_MAX__
#undef INT_FAST64_MAX
#define INT_FAST64_MAX __INT_FAST64_MAX__
#undef INT_FAST64_MIN
#define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
#undef UINT_FAST64_MAX
#define UINT_FAST64_MAX __UINT_FAST64_MAX__
#ifdef __INTPTR_MAX__
# undef INTPTR_MAX
# define INTPTR_MAX __INTPTR_MAX__
# undef INTPTR_MIN
# define INTPTR_MIN (-INTPTR_MAX - 1)
#endif
#ifdef __UINTPTR_MAX__
# undef UINTPTR_MAX
# define UINTPTR_MAX __UINTPTR_MAX__
#endif
#undef INTMAX_MAX
#define INTMAX_MAX __INTMAX_MAX__
#undef INTMAX_MIN
#define INTMAX_MIN (-INTMAX_MAX - 1)
#undef UINTMAX_MAX
#define UINTMAX_MAX __UINTMAX_MAX__
/* 7.18.3 Limits of other integer types */
#undef PTRDIFF_MAX
#define PTRDIFF_MAX __PTRDIFF_MAX__
#undef PTRDIFF_MIN
#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
#undef SIG_ATOMIC_MAX
#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
#undef SIG_ATOMIC_MIN
#define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
#undef SIZE_MAX
#define SIZE_MAX __SIZE_MAX__
#undef WCHAR_MAX
#define WCHAR_MAX __WCHAR_MAX__
#undef WCHAR_MIN
#define WCHAR_MIN __WCHAR_MIN__
#undef WINT_MAX
#define WINT_MAX __WINT_MAX__
#undef WINT_MIN
#define WINT_MIN __WINT_MIN__
#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
#undef INT8_C
#define INT8_C(c) __INT8_C(c)
#undef INT16_C
#define INT16_C(c) __INT16_C(c)
#undef INT32_C
#define INT32_C(c) __INT32_C(c)
#undef INT64_C
#define INT64_C(c) __INT64_C(c)
#undef UINT8_C
#define UINT8_C(c) __UINT8_C(c)
#undef UINT16_C
#define UINT16_C(c) __UINT16_C(c)
#undef UINT32_C
#define UINT32_C(c) __UINT32_C(c)
#undef UINT64_C
#define UINT64_C(c) __UINT64_C(c)
#undef INTMAX_C
#define INTMAX_C(c) __INTMAX_C(c)
#undef UINTMAX_C
#define UINTMAX_C(c) __UINTMAX_C(c)
#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
#endif /* _GCC_STDINT_H */

View File

@ -0,0 +1,8 @@
#ifndef _GCC_WRAP_STDINT_H
#if __STDC_HOSTED__
# include_next <stdint.h>
#else
# include "stdint-gcc.h"
#endif
#define _GCC_WRAP_STDINT_H
#endif

View File

@ -1,3 +1,13 @@
2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR c/448
* lib/target-supports.exp (check_effective_target_stdint_types):
Update comment.
(check_effective_target_inttypes_types): New.
* gcc.dg/c99-stdint-1.c, gcc.dg/c99-stdint-2.c,
gcc.dg/c99-stdint-3.c, gcc.dg/c99-stdint-4.c,
gcc.dg/c99-stdint-5.c, gcc.dg/c99-stdint-6.c: New tests.
2009-03-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38917

View File

@ -0,0 +1,265 @@
/* Verify that <stdint.h> is present and follows the C99 requirements.
If this test fails because of the header being missing on a
particular target, this indicates GCC has not been correctly
configured regarding what version of <stdint.h> to install or what
the <stdint.h> types are on that target. If GCC is wrapping a
system copy of the header and some tests fail because of bugs in
that copy, they should be fixed with fixincludes (and the bugs
reported to maintainer of that copy if still present in the latest
version). */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors -fhosted" } */
#include <limits.h>
#include <stdint.h>
/* This and the later SIG_ATOMIC_* tests should be appropriately
conditioned for any freestanding targets with no <signal.h>. */
#include <signal.h>
/* Note that some of these conditions assume two's complement and no
padding bits; GCC only supports two's complement, and no supported
target has padding bits in any integer type of the standard
widths. */
#define CHECK_SIGNED(TYPE) \
do { TYPE a; int b[(TYPE)-1 < 0 ? 1 : -1]; } while (0)
#define CHECK_UNSIGNED(TYPE) \
do { TYPE a; int b[(TYPE)-1 < 0 ? -1 : 1]; } while (0)
#define CHECK_WIDTH_EQUALS(TYPE, WIDTH) \
do { int a[sizeof(TYPE) * CHAR_BIT == (WIDTH) ? 1 : -1]; } while (0)
#define CHECK_WIDTH_AT_LEAST(TYPE, WIDTH) \
do { int a[sizeof(TYPE) * CHAR_BIT >= (WIDTH) ? 1 : -1]; } while (0)
#define CHECK_WIDTH_ORDER(TYPE1, TYPE2) \
do { int a[sizeof(TYPE2) >= sizeof(TYPE1) ? 1 : -1]; } while (0)
#define CHECK_EXPR_TYPE(TYPE, EXPR) \
do { __typeof__(EXPR) a; __typeof__((TYPE)0 + 0) *b = &a; } while (0)
#define UNSIGNED_MAX_COND(TYPE, EXPR) \
((EXPR) == (TYPE)-1)
#define SIGNED_MIN_MAX_COND(TYPE, MIN, MAX) \
((MIN) == -(MAX)-1 \
&& ((MAX) & 1) \
&& ((((MAX) >> 1) + 1) >> (sizeof(TYPE) * CHAR_BIT - 2)) == 1)
#define MIN_MAX_COND(TYPE, MIN, MAX) \
((TYPE)-1 < 0 \
? SIGNED_MIN_MAX_COND(TYPE, (MIN), (MAX)) \
: ((MIN) == 0 && UNSIGNED_MAX_COND(TYPE, (MAX))))
#define CHECK_SIGNED_LIMITS(TYPE, MIN, MAX) \
CHECK_SIGNED(TYPE); \
CHECK_EXPR_TYPE(TYPE, (MIN)); \
CHECK_EXPR_TYPE(TYPE, (MAX)); \
do { int a[SIGNED_MIN_MAX_COND(TYPE, (MIN), (MAX)) ? 1 : -1]; } while (0)
#define CHECK_SIGNED_LIMITS_2(TYPE, MIN, MAX, MINBD, MAXBD) \
CHECK_SIGNED(TYPE); \
CHECK_EXPR_TYPE(TYPE, (MIN)); \
CHECK_EXPR_TYPE(TYPE, (MAX)); \
do { int a[(SIGNED_MIN_MAX_COND(TYPE, (MIN), (MAX)) \
&& (MIN) <= (MINBD) \
&& (MAX) >= (MAXBD)) ? 1 : -1]; } while (0)
#define CHECK_UNSIGNED_LIMITS(TYPE, MAX) \
CHECK_UNSIGNED(TYPE); \
CHECK_EXPR_TYPE(TYPE, (MAX)); \
do { int a[UNSIGNED_MAX_COND(TYPE, (MAX)) ? 1 : -1]; } while (0)
#define CHECK_UNSIGNED_LIMITS_2(TYPE, MAX, MAXBD) \
CHECK_UNSIGNED(TYPE); \
CHECK_EXPR_TYPE(TYPE, (MAX)); \
do { int a[(UNSIGNED_MAX_COND(TYPE, (MAX)) \
&& (MAX) >= (MAXBD)) ? 1 : -1]; } while (0)
#define CHECK_LIMITS_2(TYPE, MIN, MAX, SMINBD, SMAXBD, UMAXBD) \
do { int a[(MIN_MAX_COND(TYPE, (MIN), (MAX)) \
&& ((TYPE)-1 < 0 \
? ((MIN) <= (SMINBD) && (MAX) >= (SMAXBD)) \
: (MAX) >= (UMAXBD))) ? 1 : -1]; } while (0)
#define CHECK_CONSTS(TYPE, MACRO) \
CHECK_EXPR_TYPE(TYPE, MACRO(01)); \
CHECK_EXPR_TYPE(TYPE, MACRO(2)); \
CHECK_EXPR_TYPE(TYPE, MACRO(0x3)); \
do { int a[(MACRO(12) == 12 \
&& MACRO(012) == 012 \
&& MACRO(0x12) == 0x12) ? 1 : -1]; } while (0);
void
test_exact (void)
{
#ifdef INT8_MIN
CHECK_WIDTH_EQUALS(int8_t, 8);
CHECK_SIGNED_LIMITS(int8_t, INT8_MIN, INT8_MAX);
#else
CHECK_WIDTH_AT_LEAST(int_least8_t, 9);
#endif
#ifdef INT16_MIN
CHECK_WIDTH_EQUALS(int16_t, 16);
CHECK_SIGNED_LIMITS(int16_t, INT16_MIN, INT16_MAX);
#else
CHECK_WIDTH_AT_LEAST(int_least8_t, 17);
#endif
#ifdef INT32_MIN
CHECK_WIDTH_EQUALS(int32_t, 32);
CHECK_SIGNED_LIMITS(int32_t, INT32_MIN, INT32_MAX);
#else
CHECK_WIDTH_AT_LEAST(int_least8_t, 33);
#endif
#ifdef INT64_MIN
CHECK_WIDTH_EQUALS(int64_t, 64);
CHECK_SIGNED_LIMITS(int64_t, INT64_MIN, INT64_MAX);
#else
CHECK_WIDTH_AT_LEAST(int_least8_t, 65);
#endif
#ifdef UINT8_MAX
CHECK_WIDTH_EQUALS(uint8_t, 8);
CHECK_UNSIGNED_LIMITS(uint8_t, UINT8_MAX);
#else
CHECK_WIDTH_AT_LEAST(uint_least8_t, 9);
#endif
#ifdef UINT16_MAX
CHECK_WIDTH_EQUALS(uint16_t, 16);
CHECK_UNSIGNED_LIMITS(uint16_t, UINT16_MAX);
#else
CHECK_WIDTH_AT_LEAST(uint_least8_t, 17);
#endif
#ifdef UINT32_MAX
CHECK_WIDTH_EQUALS(uint32_t, 32);
CHECK_UNSIGNED_LIMITS(uint32_t, UINT32_MAX);
#else
CHECK_WIDTH_AT_LEAST(uint_least8_t, 33);
#endif
#ifdef UINT64_MAX
CHECK_WIDTH_EQUALS(uint64_t, 64);
CHECK_UNSIGNED_LIMITS(uint64_t, UINT64_MAX);
#else
CHECK_WIDTH_AT_LEAST(uint_least8_t, 65);
#endif
}
void
test_least (void)
{
CHECK_WIDTH_AT_LEAST(int_least8_t, 8);
CHECK_WIDTH_ORDER(int_least8_t, int_fast8_t);
CHECK_SIGNED_LIMITS(int_least8_t, INT_LEAST8_MIN, INT_LEAST8_MAX);
CHECK_WIDTH_AT_LEAST(int_least16_t, 16);
CHECK_WIDTH_ORDER(int_least16_t, int_fast16_t);
CHECK_SIGNED_LIMITS(int_least16_t, INT_LEAST16_MIN, INT_LEAST16_MAX);
CHECK_WIDTH_AT_LEAST(int_least32_t, 32);
CHECK_WIDTH_ORDER(int_least32_t, int_fast32_t);
CHECK_SIGNED_LIMITS(int_least32_t, INT_LEAST32_MIN, INT_LEAST32_MAX);
CHECK_WIDTH_AT_LEAST(int_least64_t, 64);
CHECK_WIDTH_ORDER(int_least64_t, int_fast64_t);
CHECK_SIGNED_LIMITS(int_least64_t, INT_LEAST64_MIN, INT_LEAST64_MAX);
CHECK_WIDTH_AT_LEAST(uint_least8_t, 8);
CHECK_WIDTH_ORDER(uint_least8_t, uint_fast8_t);
CHECK_UNSIGNED_LIMITS(uint_least8_t, UINT_LEAST8_MAX);
CHECK_WIDTH_AT_LEAST(uint_least16_t, 16);
CHECK_WIDTH_ORDER(uint_least16_t, uint_fast16_t);
CHECK_UNSIGNED_LIMITS(uint_least16_t, UINT_LEAST16_MAX);
CHECK_WIDTH_AT_LEAST(uint_least32_t, 32);
CHECK_WIDTH_ORDER(uint_least32_t, uint_fast32_t);
CHECK_UNSIGNED_LIMITS(uint_least32_t, UINT_LEAST32_MAX);
CHECK_WIDTH_AT_LEAST(uint_least64_t, 64);
CHECK_WIDTH_ORDER(uint_least64_t, uint_fast64_t);
CHECK_UNSIGNED_LIMITS(uint_least64_t, UINT_LEAST64_MAX);
}
void
test_fast (void)
{
CHECK_WIDTH_AT_LEAST(int_fast8_t, 8);
CHECK_SIGNED_LIMITS(int_fast8_t, INT_FAST8_MIN, INT_FAST8_MAX);
CHECK_WIDTH_AT_LEAST(int_fast16_t, 16);
CHECK_SIGNED_LIMITS(int_fast16_t, INT_FAST16_MIN, INT_FAST16_MAX);
CHECK_WIDTH_AT_LEAST(int_fast32_t, 32);
CHECK_SIGNED_LIMITS(int_fast32_t, INT_FAST32_MIN, INT_FAST32_MAX);
CHECK_WIDTH_AT_LEAST(int_fast64_t, 64);
CHECK_SIGNED_LIMITS(int_fast64_t, INT_FAST64_MIN, INT_FAST64_MAX);
CHECK_WIDTH_AT_LEAST(uint_fast8_t, 8);
CHECK_UNSIGNED_LIMITS(uint_fast8_t, UINT_FAST8_MAX);
CHECK_WIDTH_AT_LEAST(uint_fast16_t, 16);
CHECK_UNSIGNED_LIMITS(uint_fast16_t, UINT_FAST16_MAX);
CHECK_WIDTH_AT_LEAST(uint_fast32_t, 32);
CHECK_UNSIGNED_LIMITS(uint_fast32_t, UINT_FAST32_MAX);
CHECK_WIDTH_AT_LEAST(uint_fast64_t, 64);
CHECK_UNSIGNED_LIMITS(uint_fast64_t, UINT_FAST64_MAX);
}
void
test_ptr (void)
{
#ifdef INTPTR_MIN
CHECK_SIGNED_LIMITS_2(intptr_t, INTPTR_MIN, INTPTR_MAX, -0x7fff, 0x7fff);
#endif
#ifdef UINTPTR_MAX
CHECK_UNSIGNED_LIMITS_2(uintptr_t, UINTPTR_MAX, 0xffffU);
#endif
}
void
test_max (void)
{
CHECK_WIDTH_AT_LEAST(intmax_t, 64);
CHECK_WIDTH_ORDER(long long, intmax_t);
CHECK_WIDTH_ORDER(int_fast8_t, intmax_t);
CHECK_WIDTH_ORDER(int_fast16_t, intmax_t);
CHECK_WIDTH_ORDER(int_fast32_t, intmax_t);
CHECK_WIDTH_ORDER(int_fast64_t, intmax_t);
CHECK_SIGNED_LIMITS(intmax_t, INTMAX_MIN, INTMAX_MAX);
CHECK_WIDTH_AT_LEAST(uintmax_t, 64);
CHECK_WIDTH_ORDER(unsigned long long, uintmax_t);
CHECK_WIDTH_ORDER(uint_fast8_t, uintmax_t);
CHECK_WIDTH_ORDER(uint_fast16_t, uintmax_t);
CHECK_WIDTH_ORDER(uint_fast32_t, uintmax_t);
CHECK_WIDTH_ORDER(uint_fast64_t, uintmax_t);
CHECK_UNSIGNED_LIMITS(uintmax_t, UINTMAX_MAX);
}
void
test_misc_limits (void)
{
CHECK_SIGNED_LIMITS_2(__PTRDIFF_TYPE__, PTRDIFF_MIN, PTRDIFF_MAX, -65535L, 65535L);
CHECK_LIMITS_2(sig_atomic_t, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX, -127, 127, 255);
CHECK_UNSIGNED_LIMITS_2(__SIZE_TYPE__, SIZE_MAX, 65535U);
CHECK_LIMITS_2(__WCHAR_TYPE__, WCHAR_MIN, WCHAR_MAX, -127, 127, 255);
CHECK_LIMITS_2(__WINT_TYPE__, WINT_MIN, WINT_MAX, -32767, 32767, 65535);
}
void
test_constants (void)
{
CHECK_CONSTS(int_least8_t, INT8_C);
CHECK_CONSTS(int_least16_t, INT16_C);
CHECK_CONSTS(int_least32_t, INT32_C);
CHECK_CONSTS(int_least64_t, INT64_C);
CHECK_CONSTS(intmax_t, INTMAX_C);
CHECK_CONSTS(uint_least8_t, UINT8_C);
CHECK_CONSTS(uint_least16_t, UINT16_C);
CHECK_CONSTS(uint_least32_t, UINT32_C);
CHECK_CONSTS(uint_least64_t, UINT64_C);
CHECK_CONSTS(uintmax_t, UINTMAX_C);
#if INT8_C(12) != 12
#error "INT8_C not usable in #if"
#endif
#if INT16_C(12) != 12
#error "INT16_C not usable in #if"
#endif
#if INT32_C(12) != 12
#error "INT32_C not usable in #if"
#endif
#if INT64_C(12) != 12
#error "INT64_C not usable in #if"
#endif
#if INTMAX_C(12) != 12
#error "INTMAX_C not usable in #if"
#endif
#if UINT8_C(12) != 12
#error "UINT8_C not usable in #if"
#endif
#if UINT16_C(12) != 12
#error "UINT16_C not usable in #if"
#endif
#if UINT32_C(12) != 12
#error "UINT32_C not usable in #if"
#endif
#if UINT64_C(12) != 12
#error "UINT64_C not usable in #if"
#endif
#if UINTMAX_C(12) != 12
#error "UINTMAX_C not usable in #if"
#endif
}

View File

@ -0,0 +1,8 @@
/* Verify that <stdint.h> is present and follows the C99 requirements.
Freestanding version. */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors -ffreestanding" } */
/* The test is that there are no diagnostics, so just include the
hosted version. */
#include "c99-stdint-1.c"

View File

@ -0,0 +1,39 @@
/* Verify that pairs of types in <stdint.h> are corresponding types
(requires no pointer sign warnings, so separate from
c99-stdint-1.c). */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -fhosted" } */
#include <stdint.h>
#define CHECK_CORRESPONDING(TYPE1, TYPE2) \
do { TYPE1 a; TYPE2 *b = &a; TYPE2 c; TYPE1 *d = &c; } while (0)
void
check_corresponding (void)
{
#if defined(INT8_MAX) && defined(UINT8_MAX)
CHECK_CORRESPONDING(int8_t, uint8_t);
#endif
#if defined(INT16_MAX) && defined(UINT16_MAX)
CHECK_CORRESPONDING(int16_t, uint16_t);
#endif
#if defined(INT32_MAX) && defined(UINT32_MAX)
CHECK_CORRESPONDING(int32_t, uint32_t);
#endif
#if defined(INT64_MAX) && defined(UINT64_MAX)
CHECK_CORRESPONDING(int64_t, uint64_t);
#endif
CHECK_CORRESPONDING(int_least8_t, uint_least8_t);
CHECK_CORRESPONDING(int_least16_t, uint_least16_t);
CHECK_CORRESPONDING(int_least32_t, uint_least32_t);
CHECK_CORRESPONDING(int_least64_t, uint_least64_t);
CHECK_CORRESPONDING(int_fast8_t, uint_fast8_t);
CHECK_CORRESPONDING(int_fast16_t, uint_fast16_t);
CHECK_CORRESPONDING(int_fast32_t, uint_fast32_t);
CHECK_CORRESPONDING(int_fast64_t, uint_fast64_t);
#if defined(INTPTR_MAX) && defined(UINTPTR_MAX)
CHECK_CORRESPONDING(intptr_t, uintptr_t);
#endif
CHECK_CORRESPONDING(intmax_t, uintmax_t);
}

View File

@ -0,0 +1,8 @@
/* Verify that pairs of types in <stdint.h> are corresponding types.
Freestanding version. */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -ffreestanding" } */
/* The test is that there are no diagnostics, so just include the
hosted version. */
#include "c99-stdint-3.c"

View File

@ -0,0 +1,65 @@
/* Verify that GCC's internal notions of types in <stdint.h> agree
with any system header (which GCC will use by default for hosted
compilations). */
/* { dg-do compile } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
#include <stdint.h>
#include <signal.h>
#define CHECK_TYPES(TYPE1, TYPE2) \
do { TYPE1 a; TYPE2 *b = &a; TYPE2 c; TYPE1 *d = &c; } while (0)
void
check_types (void)
{
#ifdef __INT8_TYPE__
CHECK_TYPES(__INT8_TYPE__, int8_t);
#endif
#ifdef __INT16_TYPE__
CHECK_TYPES(__INT16_TYPE__, int16_t);
#endif
#ifdef __INT32_TYPE__
CHECK_TYPES(__INT32_TYPE__, int32_t);
#endif
#ifdef __INT64_TYPE__
CHECK_TYPES(__INT64_TYPE__, int64_t);
#endif
#ifdef __UINT8_TYPE__
CHECK_TYPES(__UINT8_TYPE__, uint8_t);
#endif
#ifdef __UINT16_TYPE__
CHECK_TYPES(__UINT16_TYPE__, uint16_t);
#endif
#ifdef __UINT32_TYPE__
CHECK_TYPES(__UINT32_TYPE__, uint32_t);
#endif
#ifdef __UINT64_TYPE__
CHECK_TYPES(__UINT64_TYPE__, uint64_t);
#endif
CHECK_TYPES(__INT_LEAST8_TYPE__, int_least8_t);
CHECK_TYPES(__INT_LEAST16_TYPE__, int_least16_t);
CHECK_TYPES(__INT_LEAST32_TYPE__, int_least32_t);
CHECK_TYPES(__INT_LEAST64_TYPE__, int_least64_t);
CHECK_TYPES(__UINT_LEAST8_TYPE__, uint_least8_t);
CHECK_TYPES(__UINT_LEAST16_TYPE__, uint_least16_t);
CHECK_TYPES(__UINT_LEAST32_TYPE__, uint_least32_t);
CHECK_TYPES(__UINT_LEAST64_TYPE__, uint_least64_t);
CHECK_TYPES(__INT_FAST8_TYPE__, int_fast8_t);
CHECK_TYPES(__INT_FAST16_TYPE__, int_fast16_t);
CHECK_TYPES(__INT_FAST32_TYPE__, int_fast32_t);
CHECK_TYPES(__INT_FAST64_TYPE__, int_fast64_t);
CHECK_TYPES(__UINT_FAST8_TYPE__, uint_fast8_t);
CHECK_TYPES(__UINT_FAST16_TYPE__, uint_fast16_t);
CHECK_TYPES(__UINT_FAST32_TYPE__, uint_fast32_t);
CHECK_TYPES(__UINT_FAST64_TYPE__, uint_fast64_t);
#ifdef __INTPTR_TYPE__
CHECK_TYPES(__INTPTR_TYPE__, intptr_t);
#endif
#ifdef __UINTPTR_TYPE__
CHECK_TYPES(__UINTPTR_TYPE__, uintptr_t);
#endif
CHECK_TYPES(__INTMAX_TYPE__, intmax_t);
CHECK_TYPES(__UINTMAX_TYPE__, uintmax_t);
CHECK_TYPES(__SIG_ATOMIC_TYPE__, sig_atomic_t);
}

View File

@ -0,0 +1,67 @@
/* Verify that GCC's internal notions of types in <stdint.h> agree
with any system <inttypes.h> header. */
/* { dg-do compile { target inttypes_types } } */
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
/* { dg-options "-std=gnu99 -pedantic-errors -DNO_FAST_TYPES" { target *-*-solaris2.[789]* } } */
#include <inttypes.h>
#include <signal.h>
#define CHECK_TYPES(TYPE1, TYPE2) \
do { TYPE1 a; TYPE2 *b = &a; TYPE2 c; TYPE1 *d = &c; } while (0)
void
check_types (void)
{
#ifdef __INT8_TYPE__
CHECK_TYPES(__INT8_TYPE__, int8_t);
#endif
#ifdef __INT16_TYPE__
CHECK_TYPES(__INT16_TYPE__, int16_t);
#endif
#ifdef __INT32_TYPE__
CHECK_TYPES(__INT32_TYPE__, int32_t);
#endif
#ifdef __INT64_TYPE__
CHECK_TYPES(__INT64_TYPE__, int64_t);
#endif
#ifdef __UINT8_TYPE__
CHECK_TYPES(__UINT8_TYPE__, uint8_t);
#endif
#ifdef __UINT16_TYPE__
CHECK_TYPES(__UINT16_TYPE__, uint16_t);
#endif
#ifdef __UINT32_TYPE__
CHECK_TYPES(__UINT32_TYPE__, uint32_t);
#endif
#ifdef __UINT64_TYPE__
CHECK_TYPES(__UINT64_TYPE__, uint64_t);
#endif
CHECK_TYPES(__INT_LEAST8_TYPE__, int_least8_t);
CHECK_TYPES(__INT_LEAST16_TYPE__, int_least16_t);
CHECK_TYPES(__INT_LEAST32_TYPE__, int_least32_t);
CHECK_TYPES(__INT_LEAST64_TYPE__, int_least64_t);
CHECK_TYPES(__UINT_LEAST8_TYPE__, uint_least8_t);
CHECK_TYPES(__UINT_LEAST16_TYPE__, uint_least16_t);
CHECK_TYPES(__UINT_LEAST32_TYPE__, uint_least32_t);
CHECK_TYPES(__UINT_LEAST64_TYPE__, uint_least64_t);
#ifndef NO_FAST_TYPES
CHECK_TYPES(__INT_FAST8_TYPE__, int_fast8_t);
CHECK_TYPES(__INT_FAST16_TYPE__, int_fast16_t);
CHECK_TYPES(__INT_FAST32_TYPE__, int_fast32_t);
CHECK_TYPES(__INT_FAST64_TYPE__, int_fast64_t);
CHECK_TYPES(__UINT_FAST8_TYPE__, uint_fast8_t);
CHECK_TYPES(__UINT_FAST16_TYPE__, uint_fast16_t);
CHECK_TYPES(__UINT_FAST32_TYPE__, uint_fast32_t);
CHECK_TYPES(__UINT_FAST64_TYPE__, uint_fast64_t);
#endif
#ifdef __INTPTR_TYPE__
CHECK_TYPES(__INTPTR_TYPE__, intptr_t);
#endif
#ifdef __UINTPTR_TYPE__
CHECK_TYPES(__UINTPTR_TYPE__, uintptr_t);
#endif
CHECK_TYPES(__INTMAX_TYPE__, intmax_t);
CHECK_TYPES(__UINTMAX_TYPE__, uintmax_t);
CHECK_TYPES(__SIG_ATOMIC_TYPE__, sig_atomic_t);
}

View File

@ -2620,7 +2620,8 @@ proc check_effective_target_string_merging { } {
}
# Return 1 if target has the basic signed and unsigned types in
# <stdint.h>, 0 otherwise.
# <stdint.h>, 0 otherwise. This will be obsolete when GCC ensures a
# working <stdint.h> for all targets.
proc check_effective_target_stdint_types { } {
return [check_no_compiler_messages stdint_types assembly {
@ -2630,6 +2631,19 @@ proc check_effective_target_stdint_types { } {
}]
}
# Return 1 if target has the basic signed and unsigned types in
# <inttypes.h>, 0 otherwise. This is for tests that GCC's notions of
# these types agree with those in the header, as some systems have
# only <inttypes.h>.
proc check_effective_target_inttypes_types { } {
return [check_no_compiler_messages inttypes_types assembly {
#include <inttypes.h>
int8_t a; int16_t b; int32_t c; int64_t d;
uint8_t e; uint16_t f; uint32_t g; uint64_t h;
}]
}
# Return 1 if programs are intended to be run on a simulator
# (i.e. slowly) rather than hardware (i.e. fast).