1999-03-03 07:41:52 +00:00
|
|
|
/* -*- Mode: C -*- */
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-09 16:21:08 +00:00
|
|
|
autogen definitions fixincl;
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-04-30 23:59:45 +00:00
|
|
|
/* Define all the fixes we know about for repairing damaged headers.
|
|
|
|
Please see the README before adding or changing entries in this file.
|
1999-10-12 14:44:18 +00:00
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
This is the sort command:
|
|
|
|
|
2002-10-27 17:02:29 +00:00
|
|
|
blocksort output=inclhack.sorted \
|
2001-05-27 18:21:04 +00:00
|
|
|
pattern='^/\*$' \
|
|
|
|
trailer='^/\*EOF\*[/]' \
|
|
|
|
input=inclhack.def \
|
2013-12-08 21:55:46 +00:00
|
|
|
key=$'hackname[ \t]*=[ \t]*(.*);'
|
2001-05-27 18:21:04 +00:00
|
|
|
|
2000-04-30 23:59:45 +00:00
|
|
|
Set up a debug test so we can make the templates emit special
|
|
|
|
code while debugging these fixes: */
|
1999-10-12 14:44:18 +00:00
|
|
|
|
1999-12-29 22:59:16 +00:00
|
|
|
#ifdef DEBUG
|
|
|
|
FIXINC_DEBUG = yes;
|
|
|
|
#endif
|
1999-10-12 14:44:18 +00:00
|
|
|
|
2008-03-07 06:53:59 +00:00
|
|
|
/* On AIX when _LARGE_FILES is defined stdio.h defines fopen to
|
|
|
|
* fopen64 etc. and this causes problems when building with g++
|
|
|
|
* because cstdio udefs everything from stdio.h, leaving us with
|
|
|
|
* ::fopen has not been declared errors. This fixes stdio.h to
|
|
|
|
* undef those defines and use __asm__ to alias the symbols if
|
|
|
|
* building with g++ and -D_LARGE_FILES
|
|
|
|
*/
|
|
|
|
fix = {
|
2008-06-07 22:19:45 +00:00
|
|
|
hackname = AAB_aix_stdio;
|
|
|
|
files = stdio.h;
|
|
|
|
select = "define fopen fopen64";
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
test-text = ''; /* no way to test */
|
|
|
|
|
|
|
|
c_fix = wrap;
|
|
|
|
|
|
|
|
c_fix_arg = "";
|
|
|
|
|
|
|
|
c_fix_arg = <<- _EOArg_
|
|
|
|
|
|
|
|
#if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus
|
|
|
|
#define __need__aix_stdio_h_fix
|
|
|
|
#ifdef __need__aix_stdio_h_fix
|
|
|
|
#undef fseeko
|
|
|
|
#undef ftello
|
|
|
|
#undef fgetpos
|
|
|
|
#undef fsetpos
|
|
|
|
#undef fopen
|
|
|
|
#undef freopen
|
|
|
|
/* Alias the symbols using asm */
|
|
|
|
extern "C" {
|
|
|
|
extern int fgetpos(FILE *, fpos64_t *) __asm__("fgetpos64");
|
|
|
|
extern FILE *fopen(const char *, const char *) __asm__("fopen64");
|
|
|
|
extern FILE *freopen(const char *, const char *, FILE *) __asm__("freopen64");
|
|
|
|
extern int fseeko(FILE *, off64_t, int) __asm__("fseeko64");
|
|
|
|
extern int fsetpos(FILE *, const fpos64_t *) __asm__("fsetpos64");
|
|
|
|
extern off64_t ftello(FILE *) __asm__("ftello64");
|
|
|
|
}
|
|
|
|
#endif
|
2012-09-29 21:02:42 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
_EOArg_;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* On AIX when _LARGE_FILES is defined fcntl.h defines open to
|
|
|
|
* open64 and creat to creat64. This fixes fcntl.h to
|
|
|
|
* undef those defines and use __asm__ to alias the symbols if
|
|
|
|
* building with g++ and -D_LARGE_FILES
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_aix_fcntl;
|
|
|
|
files = fcntl.h;
|
|
|
|
select = "define open[ \t]open64";
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
test-text = ''; /* no way to test */
|
|
|
|
|
|
|
|
c_fix = wrap;
|
|
|
|
|
|
|
|
c_fix_arg = "";
|
|
|
|
|
|
|
|
c_fix_arg = <<- _EOArg_
|
|
|
|
|
|
|
|
#if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus
|
|
|
|
#define __need__aix_fcntl_h_fix
|
|
|
|
#ifdef __need__aix_fcntl_h_fix
|
|
|
|
#undef open
|
|
|
|
#undef creat
|
|
|
|
#undef openat
|
|
|
|
/* Alias the symbols using asm */
|
|
|
|
extern "C" {
|
|
|
|
extern int open(const char *, int, ...) __asm__("open64");
|
|
|
|
extern int creat(const char *, mode_t) __asm__("creat64");
|
|
|
|
#if (_XOPEN_SOURCE >= 700)
|
|
|
|
extern int openat(int, const char *, int, ...) __asm__("open64at");
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
#endif
|
2008-06-07 22:19:45 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
_EOArg_;
|
2008-03-07 06:53:59 +00:00
|
|
|
};
|
|
|
|
|
2005-06-24 23:43:15 +00:00
|
|
|
/*
|
|
|
|
* On Mac OS 10.3.9, the 'long double' functions are available in
|
|
|
|
* libSystem, but are not prototyped in math.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_darwin7_9_long_double_funcs;
|
|
|
|
mach = "*-*-darwin7.9*";
|
|
|
|
files = architecture/ppc/math.h;
|
|
|
|
bypass = "powl";
|
|
|
|
replace = <<- _EndOfHeader_
|
2008-06-08 16:07:17 +00:00
|
|
|
/* This file prototypes the long double functions available on Mac OS
|
|
|
|
10.3.9. */
|
|
|
|
#ifndef __MATH__
|
|
|
|
# undef __APPLE_CC__
|
|
|
|
# define __APPLE_CC__ 1345
|
|
|
|
# include_next <architecture/ppc/math.h>
|
|
|
|
# undef __APPLE_CC__
|
|
|
|
# define __APPLE_CC__ 1
|
|
|
|
# ifndef __LIBMLDBL_COMPAT
|
|
|
|
# ifdef __LONG_DOUBLE_128__
|
|
|
|
# define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128")
|
|
|
|
# else
|
|
|
|
# define __LIBMLDBL_COMPAT(sym)
|
|
|
|
# endif /* __LONG_DOUBLE_128__ */
|
|
|
|
# endif /* __LIBMLDBL_COMPAT */
|
|
|
|
# ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
# endif
|
|
|
|
extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);
|
|
|
|
extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);
|
|
|
|
extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);
|
|
|
|
extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);
|
|
|
|
extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);
|
|
|
|
extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);
|
|
|
|
extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);
|
|
|
|
extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);
|
|
|
|
extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);
|
|
|
|
extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);
|
|
|
|
extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);
|
|
|
|
extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);
|
|
|
|
extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);
|
|
|
|
extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);
|
|
|
|
extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);
|
|
|
|
extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);
|
|
|
|
extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);
|
|
|
|
extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);
|
|
|
|
extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);
|
|
|
|
extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);
|
|
|
|
extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);
|
|
|
|
extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);
|
|
|
|
extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);
|
|
|
|
extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);
|
|
|
|
extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);
|
|
|
|
extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);
|
|
|
|
extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);
|
|
|
|
extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);
|
|
|
|
extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);
|
|
|
|
extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl);
|
|
|
|
extern long double powl( long double, long double ) __LIBMLDBL_COMPAT(powl);
|
|
|
|
extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);
|
|
|
|
extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);
|
|
|
|
extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);
|
|
|
|
extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);
|
|
|
|
extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);
|
|
|
|
extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);
|
|
|
|
extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);
|
|
|
|
extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);
|
|
|
|
extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);
|
|
|
|
extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);
|
|
|
|
extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);
|
|
|
|
extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);
|
|
|
|
extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);
|
|
|
|
extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);
|
|
|
|
extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);
|
|
|
|
extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl);
|
|
|
|
extern long double remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl);
|
|
|
|
extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol);
|
|
|
|
extern long double copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl);
|
|
|
|
extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);
|
|
|
|
extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl);
|
|
|
|
extern long double nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl);
|
|
|
|
extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml);
|
|
|
|
extern long double fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl);
|
|
|
|
extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);
|
|
|
|
extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);
|
|
|
|
# ifdef __cplusplus
|
|
|
|
}
|
|
|
|
# endif
|
|
|
|
#endif /* __MATH__ */
|
|
|
|
_EndOfHeader_;
|
2005-06-24 23:43:15 +00:00
|
|
|
};
|
|
|
|
|
2019-08-18 18:54:13 +00:00
|
|
|
/*
|
|
|
|
* SDKs for 10.13 and 10.14 omit the definitions for API_AVAILABLE where
|
|
|
|
* __attribute__((availability)) is not supported.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_api_availability;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = os/availability.h;
|
|
|
|
bypass = "__IPHONE_OS_VERSION_MIN_REQUIRED";
|
|
|
|
select =
|
|
|
|
" *#define __API_AVAILABLE.*\n"
|
|
|
|
" *#define __API_DEPRECATED.*\n"
|
|
|
|
" *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n"
|
|
|
|
" *#define __API_UNAVAILABLE.*\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg =
|
|
|
|
" #define API_AVAILABLE(...)\n"
|
|
|
|
" #define API_DEPRECATED(...)\n"
|
|
|
|
" #define API_DEPRECATED_WITH_REPLACEMENT(...)\n"
|
|
|
|
" #define API_UNAVAILABLE(...)\n";
|
|
|
|
test_text =
|
|
|
|
"#define __API_AVAILABLE(...)\n"
|
|
|
|
"#define __API_DEPRECATED(...)\n"
|
|
|
|
"#define __API_DEPRECATED_WITH_REPLACEMENT(...)\n"
|
|
|
|
"#define __API_UNAVAILABLE(...)\n";
|
|
|
|
};
|
|
|
|
|
1999-11-22 15:05:48 +00:00
|
|
|
/*
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
* This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
|
1999-11-22 15:05:48 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
hackname = AAB_fd_zero_asm_posix_types_h;
|
1999-11-22 15:05:48 +00:00
|
|
|
files = asm/posix_types.h;
|
2000-08-14 18:08:46 +00:00
|
|
|
mach = 'i[34567]86-*-linux*';
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
bypass = '} while';
|
2006-10-29 16:35:50 +00:00
|
|
|
bypass = 'x86_64';
|
2008-05-14 16:13:40 +01:00
|
|
|
bypass = 'posix_types_64';
|
1999-11-22 15:05:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
|
|
|
|
* the start, so that if #include_next gets another instance of
|
|
|
|
* the wrapper, this will follow the #include_next chain until
|
|
|
|
* we arrive at the real <asm/posix_types.h>.
|
|
|
|
*/
|
2003-01-04 18:44:04 +00:00
|
|
|
replace = <<- _EndOfHeader_
|
2001-12-20 04:09:40 +00:00
|
|
|
/* This file fixes a bug in the __FD_ZERO macro
|
|
|
|
for older versions of the Linux kernel. */
|
|
|
|
#ifndef _POSIX_TYPES_H_WRAPPER
|
|
|
|
#include <features.h>
|
|
|
|
#include_next <asm/posix_types.h>
|
|
|
|
|
|
|
|
#if defined(__FD_ZERO) && !defined(__GLIBC__)
|
|
|
|
#undef __FD_ZERO
|
|
|
|
#define __FD_ZERO(fdsetp) \
|
|
|
|
do { \
|
|
|
|
int __d0, __d1; \
|
2008-06-07 22:19:45 +00:00
|
|
|
__asm__ __volatile__("cld ; rep ; stosl" \
|
|
|
|
: "=&c" (__d0), "=&D" (__d1) \
|
|
|
|
: "a" (0), "0" (__FDSET_LONGS), \
|
|
|
|
"1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
|
2001-12-20 04:09:40 +00:00
|
|
|
} while (0)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define _POSIX_TYPES_H_WRAPPER
|
|
|
|
#endif /* _POSIX_TYPES_H_WRAPPER */
|
2003-01-04 18:44:04 +00:00
|
|
|
_EndOfHeader_;
|
1999-11-22 15:05:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This fixes __FD_ZERO bug for glibc-1.x
|
|
|
|
*/
|
|
|
|
fix = {
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
hackname = AAB_fd_zero_gnu_types_h;
|
1999-11-22 15:05:48 +00:00
|
|
|
files = gnu/types.h;
|
2000-08-14 18:08:46 +00:00
|
|
|
mach = 'i[34567]86-*-linux*';
|
1999-11-22 15:05:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Define _TYPES_H_WRAPPER at the end of the wrapper, not
|
|
|
|
* the start, so that if #include_next gets another instance of
|
|
|
|
* the wrapper, this will follow the #include_next chain until
|
|
|
|
* we arrive at the real <gnu/types.h>.
|
|
|
|
*/
|
2003-01-04 18:44:04 +00:00
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
/* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */
|
|
|
|
#ifndef _TYPES_H_WRAPPER
|
|
|
|
#include <features.h>
|
|
|
|
#include_next <gnu/types.h>
|
|
|
|
|
|
|
|
#if defined(__FD_ZERO) && !defined(__GLIBC__)
|
|
|
|
#undef __FD_ZERO
|
2005-05-06 16:33:18 +00:00
|
|
|
# define __FD_ZERO(fdsetp) \
|
|
|
|
do { \
|
|
|
|
int __d0, __d1; \
|
|
|
|
__asm__ __volatile__("cld ; rep ; stosl" \
|
|
|
|
: "=&c" (__d0), "=&D" (__d1) \
|
|
|
|
: "a" (0), "0" (__FDSET_LONGS), \
|
|
|
|
"1" ((__fd_set *) (fdsetp)) :"memory"); \
|
2003-01-04 18:44:04 +00:00
|
|
|
} while (0)
|
|
|
|
#endif
|
1999-11-22 15:05:48 +00:00
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
#define _TYPES_H_WRAPPER
|
|
|
|
#endif /* _TYPES_H_WRAPPER */
|
|
|
|
_EndOfHeader_;
|
1999-11-22 15:05:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This fixes __FD_ZERO bug for glibc-2.0.x
|
|
|
|
*/
|
|
|
|
fix = {
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
hackname = AAB_fd_zero_selectbits_h;
|
1999-11-22 15:05:48 +00:00
|
|
|
files = selectbits.h;
|
2000-08-14 18:08:46 +00:00
|
|
|
mach = 'i[34567]86-*-linux*';
|
1999-11-22 15:05:48 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
|
|
|
|
* the start, so that if #include_next gets another instance of
|
|
|
|
* the wrapper, this will follow the #include_next chain until
|
|
|
|
* we arrive at the real <selectbits.h>.
|
|
|
|
*/
|
2003-01-04 18:44:04 +00:00
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
/* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */
|
|
|
|
#ifndef _SELECTBITS_H_WRAPPER
|
|
|
|
#include <features.h>
|
|
|
|
#include_next <selectbits.h>
|
|
|
|
|
|
|
|
#if defined(__FD_ZERO) && defined(__GLIBC__) \\
|
|
|
|
&& defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\
|
|
|
|
&& __GLIBC_MINOR__ == 0
|
|
|
|
#undef __FD_ZERO
|
|
|
|
#define __FD_ZERO(fdsetp) \\
|
|
|
|
do { \\
|
|
|
|
int __d0, __d1; \\
|
|
|
|
__asm__ __volatile__ ("cld; rep; stosl" \\
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
: "=&c" (__d0), "=&D" (__d1) \\
|
|
|
|
: "a" (0), "0" (sizeof (__fd_set) \\
|
|
|
|
/ sizeof (__fd_mask)), \\
|
|
|
|
"1" ((__fd_mask *) (fdsetp)) \\
|
|
|
|
: "memory"); \\
|
2003-01-04 18:44:04 +00:00
|
|
|
} while (0)
|
|
|
|
#endif
|
1999-11-22 15:05:48 +00:00
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
#define _SELECTBITS_H_WRAPPER
|
|
|
|
#endif /* _SELECTBITS_H_WRAPPER */
|
|
|
|
_EndOfHeader_;
|
1999-11-22 15:05:48 +00:00
|
|
|
};
|
|
|
|
|
2002-08-31 03:33:09 +00:00
|
|
|
/*
|
|
|
|
* Solaris <sys/varargs.h> is a DDK (aka kernel-land) header providing
|
|
|
|
* the same interface as <stdarg.h>. No idea why they couldn't have just
|
|
|
|
* used the standard header.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_solaris_sys_varargs_h;
|
|
|
|
files = "sys/varargs.h";
|
|
|
|
mach = '*-*-solaris*';
|
2003-01-04 18:44:04 +00:00
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
#ifdef __STDC__
|
|
|
|
#include <stdarg.h>
|
|
|
|
#else
|
|
|
|
#include <varargs.h>
|
|
|
|
#endif
|
|
|
|
_EndOfHeader_;
|
2002-08-31 03:33:09 +00:00
|
|
|
};
|
|
|
|
|
2000-01-17 21:45:29 +00:00
|
|
|
/*
|
|
|
|
* Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
|
|
|
|
* declaration on Sun OS 4.x. We must only fix this on Sun OS 4.x, because
|
|
|
|
* many other systems have similar text but correct versions of the file.
|
|
|
|
* To ensure only Sun's is fixed, we grep for a likely unique string.
|
|
|
|
* Fix also on sysV68 R3V7.1 (head/memory.h\t50.1\t )
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_sun_memcpy;
|
|
|
|
files = memory.h;
|
2003-01-04 18:44:04 +00:00
|
|
|
select = "/\\*\t@\\(#\\)"
|
2000-01-17 21:45:29 +00:00
|
|
|
"(head/memory.h\t50.1\t "
|
|
|
|
"|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
|
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
/* This file was generated by fixincludes */
|
|
|
|
#ifndef __memory_h__
|
|
|
|
#define __memory_h__
|
2000-01-17 21:45:29 +00:00
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
#ifdef __STDC__
|
|
|
|
extern void *memccpy();
|
|
|
|
extern void *memchr();
|
|
|
|
extern void *memcpy();
|
|
|
|
extern void *memset();
|
|
|
|
#else
|
|
|
|
extern char *memccpy();
|
|
|
|
extern char *memchr();
|
|
|
|
extern char *memcpy();
|
|
|
|
extern char *memset();
|
|
|
|
#endif /* __STDC__ */
|
2000-01-17 21:45:29 +00:00
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
extern int memcmp();
|
2000-01-17 21:45:29 +00:00
|
|
|
|
2003-01-04 18:44:04 +00:00
|
|
|
#endif /* __memory_h__ */
|
2008-06-07 22:19:45 +00:00
|
|
|
_EndOfHeader_;
|
2000-01-17 21:45:29 +00:00
|
|
|
};
|
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
/*
|
|
|
|
* Fix assert.h on VxWorks:
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_vxworks_assert;
|
|
|
|
files = assert.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
replace = <<- _EndOfHeader_
|
2018-06-12 16:58:24 +02:00
|
|
|
#ifdef _ASSERT_H
|
|
|
|
#undef _ASSERT_H
|
|
|
|
#undef assert
|
|
|
|
#endif
|
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
#define _ASSERT_H
|
|
|
|
|
2018-06-12 16:58:24 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
2012-10-28 21:42:48 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__STDC__) || defined(__cplusplus)
|
|
|
|
extern void __assert (const char*);
|
|
|
|
#else
|
|
|
|
extern void __assert ();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef NDEBUG
|
|
|
|
#define assert(ign) ((void)0)
|
|
|
|
#else
|
|
|
|
|
|
|
|
#define ASSERT_STRINGIFY(str) ASSERT_STRINGIFY_HELPER(str)
|
|
|
|
#define ASSERT_STRINGIFY_HELPER(str) #str
|
|
|
|
|
|
|
|
#define assert(test) ((void) \
|
|
|
|
((test) ? ((void)0) : \
|
2018-06-12 16:58:24 +02:00
|
|
|
__assert("Assertion failed: " #test ", file " \
|
2012-10-28 21:42:48 +00:00
|
|
|
__FILE__ ", line " ASSERT_STRINGIFY(__LINE__) "\n")))
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2018-06-12 16:58:24 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
2012-10-28 21:42:48 +00:00
|
|
|
#endif
|
|
|
|
_EndOfHeader_;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Add needed include to regs.h (NOT the gcc header) on VxWorks
|
|
|
|
*/
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_vxworks_regs_vxtypes;
|
|
|
|
files = regs.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
#ifndef _REGS_H
|
|
|
|
#define _REGS_H
|
2018-10-16 11:40:27 +02:00
|
|
|
/* regs.h depends on CPU_FAMILY being properly defined, which
|
|
|
|
is done by vxCpu.h. */
|
|
|
|
#include <types/vxCpu.h>
|
|
|
|
/* regs.h includes a CPU_FAMILY-specific header that requires
|
|
|
|
vxTypesOld.h to already have been included. Those headers
|
|
|
|
contain proper _ASMLANGUAGE guards around their typedefs,
|
|
|
|
but vxTypesOld.h itself does not. So we avoid including
|
|
|
|
vxTypesOld.h from assembly. */
|
|
|
|
#ifndef _ASMLANGUAGE
|
2012-10-28 21:42:48 +00:00
|
|
|
#include <types/vxTypesOld.h>
|
2018-10-16 11:40:27 +02:00
|
|
|
#endif
|
2012-10-28 21:42:48 +00:00
|
|
|
#include_next <arch/../regs.h>
|
|
|
|
#endif
|
|
|
|
_EndOfHeader_;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This hack makes makes unistd.h more POSIX-compliant on VxWorks
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = AAB_vxworks_unistd;
|
|
|
|
files = unistd.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
replace = <<- _EndOfHeader_
|
|
|
|
#ifndef _UNISTD_H
|
|
|
|
#define _UNISTD_H
|
|
|
|
#include_next <unistd.h>
|
|
|
|
#include <ioLib.h>
|
|
|
|
#ifndef STDIN_FILENO
|
|
|
|
#define STDIN_FILENO 0
|
|
|
|
#endif
|
|
|
|
#ifndef STDOUT_FILENO
|
|
|
|
#define STDOUT_FILENO 1
|
|
|
|
#endif
|
|
|
|
#ifndef STDERR_FILENO
|
|
|
|
#define STDERR_FILENO 2
|
|
|
|
#endif
|
|
|
|
#endif /* _UNISTD_H */
|
|
|
|
_EndOfHeader_;
|
|
|
|
};
|
|
|
|
|
2013-09-02 23:01:49 +00:00
|
|
|
/*
|
|
|
|
* assert.h on AIX 7 redefines static_assert as _Static_assert without
|
|
|
|
* protecting C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_assert;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = assert.h;
|
|
|
|
select = "#define[ \t]static_assert[ \t]_Static_assert";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
|
|
|
test_text = "#define static_assert _Static_assert";
|
|
|
|
};
|
|
|
|
|
2009-08-12 17:33:41 +00:00
|
|
|
/*
|
|
|
|
* complex.h on AIX 5 and AIX 6 define _Complex_I and I in terms of __I,
|
|
|
|
* which only is provided by AIX xlc C99.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_complex;
|
2009-08-17 15:22:04 +00:00
|
|
|
mach = "*-*-aix*";
|
2009-08-12 17:33:41 +00:00
|
|
|
files = complex.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]_Complex_I[ \t]__I";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
|
|
|
|
test_text = "#define _Complex_I __I\n";
|
2009-08-12 17:33:41 +00:00
|
|
|
};
|
|
|
|
|
2015-05-21 17:25:00 +00:00
|
|
|
/*
|
|
|
|
* On AIX some headers are not properly guarded by 'extern "C"'.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_externc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = ctype.h;
|
|
|
|
files = fcntl.h;
|
|
|
|
files = langinfo.h;
|
|
|
|
files = ldfcn.h;
|
|
|
|
files = sys/localedef.h;
|
|
|
|
files = sys/times.h;
|
|
|
|
bypass = "extern \"C\"";
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"#endif\n";
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"}\n"
|
|
|
|
"#endif\n";
|
|
|
|
test_text = "extern int __n_pthreads;\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* On AIX sys/socket.h assumes C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_externcpp1;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "sys/socket.h";
|
2020-09-16 18:56:00 +00:00
|
|
|
select = "#ifndef _KERNEL\n"
|
2021-07-05 11:19:44 -04:00
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" int naccept\\(int, struct sockaddr \\*, socklen_t \\*\\);";
|
2015-05-21 17:25:00 +00:00
|
|
|
c_fix = format;
|
2020-09-16 18:56:00 +00:00
|
|
|
c_fix_arg = "#ifndef _KERNEL\n"
|
|
|
|
"#ifdef __cplusplus\n"
|
2021-07-05 11:19:44 -04:00
|
|
|
"extern \"C++\" {\n"
|
|
|
|
"extern \"C\" int naccept(int, struct sockaddr *, socklen_t *);";
|
2020-09-16 18:56:00 +00:00
|
|
|
test_text = "#ifndef _KERNEL\n"
|
2021-07-05 11:19:44 -04:00
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" int naccept(int, struct sockaddr *, socklen_t *);";
|
2015-05-21 17:25:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_externcpp2;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "sys/socket.h";
|
2020-09-16 18:56:00 +00:00
|
|
|
select = "#endif /\\* COMPAT_43 \\*/\n"
|
|
|
|
"#else /\\* __cplusplus \\*/";
|
2015-05-21 17:25:00 +00:00
|
|
|
c_fix = format;
|
2020-09-16 18:56:00 +00:00
|
|
|
c_fix_arg = "#endif /* COMPAT_43 */\n"
|
|
|
|
"} /* extern \"C++\" */\n"
|
2015-05-21 17:25:00 +00:00
|
|
|
"#else /* __cplusplus */";
|
2020-09-16 18:56:00 +00:00
|
|
|
test_text = "#endif /* COMPAT_43 */\n"
|
|
|
|
"#else /* __cplusplus */";
|
2015-05-21 17:25:00 +00:00
|
|
|
};
|
|
|
|
|
2020-09-17 15:18:48 +00:00
|
|
|
/*
|
|
|
|
* inttypes.h STDC_FORMAT_MACROS
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_inttypes;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "sys/inttypes.h";
|
|
|
|
select = "#if !defined\\(__cplusplus\\) \\|\\| defined\\(__STDC_FORMAT_MACROS\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if 1";
|
|
|
|
test_text = "#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)";
|
|
|
|
};
|
|
|
|
|
2012-03-23 23:55:01 +00:00
|
|
|
/*
|
|
|
|
* malloc.h on AIX6 uses XLC++ specific builtin syntax
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_malloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "malloc.h";
|
2020-09-25 09:48:22 +02:00
|
|
|
select = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" \\{\n"
|
|
|
|
"[ \t]extern \"builtin\" char \\*__alloca \\(size_t\\);";
|
2012-03-23 23:55:01 +00:00
|
|
|
c_fix = format;
|
2020-09-25 09:48:22 +02:00
|
|
|
c_fix_arg = "#if (defined(__cplusplus) && defined(__IBMCPP__))\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"\textern \"builtin\" char *__alloca (size_t);";
|
|
|
|
test_text = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"\textern \"builtin\" char *__alloca (size_t);";
|
2012-03-23 23:55:01 +00:00
|
|
|
};
|
|
|
|
|
2011-06-06 16:14:57 +00:00
|
|
|
/*
|
|
|
|
* net/if_arp.h defines a variable fc_softc instead of adding a
|
|
|
|
* typedef for the struct on AIX 5.2, 5.3, 6.1 and 7.1
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_net_if_arp;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "net/if_arp.h";
|
|
|
|
select = "^struct fc_softc \\{";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "typedef struct _fc_softc {";
|
|
|
|
test_text = "struct fc_softc {\n int a;\n};";
|
|
|
|
};
|
2009-08-12 17:33:41 +00:00
|
|
|
|
2013-05-04 10:49:59 -04:00
|
|
|
/*
|
|
|
|
* Fix AIX definition of NULL for G++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_null;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = curses.h, dbm.h, locale.h, stdio.h, stdlib.h, string.h,
|
|
|
|
time.h, unistd.h, wchar.h, sys/dir.h, sys/param.h, sys/types.h;
|
|
|
|
bypass = __null;
|
|
|
|
select = "#define[ \t]+NULL[ \t]+\\(*0L*\\)*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOFix_
|
|
|
|
#ifndef NULL
|
|
|
|
#ifdef __cplusplus
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#define NULL __null
|
|
|
|
#else /* ! __GNUG__ */
|
|
|
|
#define NULL 0L
|
|
|
|
#endif /* __GNUG__ */
|
|
|
|
#else /* ! __cplusplus */
|
|
|
|
#define NULL ((void *)0)
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* !NULL */
|
|
|
|
_EOFix_;
|
|
|
|
test_text = "# define\tNULL \t(0L) /* typed NULL */";
|
|
|
|
};
|
|
|
|
|
2011-11-17 02:28:07 +00:00
|
|
|
/*
|
2012-06-19 17:55:14 +00:00
|
|
|
* pthread.h on AIX defines PTHREAD_ONCE_INIT, PTHREAD_MUTEX_INITIALIZER,
|
|
|
|
* PTHREAD_COND_INITIALIZER and PTHREAD_RWLOCK_INITIALIZER without enough
|
|
|
|
* braces.
|
2011-11-17 02:28:07 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_once_init_1;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "pthread.h";
|
|
|
|
select = "#define[ \t]PTHREAD_ONCE_INIT \\\\\n"
|
|
|
|
"\\{ \\\\\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define PTHREAD_ONCE_INIT \\\n"
|
|
|
|
"{{ \\\n";
|
|
|
|
test_text = "#define PTHREAD_ONCE_INIT \\\\\n"
|
|
|
|
"{ \\\\\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_once_init_2;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "pthread.h";
|
|
|
|
select = "[ \t]0 \\\\\n"
|
|
|
|
"\\}\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = " 0 \\\n"
|
|
|
|
"}}\n";
|
|
|
|
test_text = " 0 \\\\\n"
|
|
|
|
"}\n";
|
|
|
|
};
|
|
|
|
|
2012-06-19 17:55:14 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_mutex_initializer_1;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "pthread.h";
|
|
|
|
select = "#define[ \t]PTHREAD_MUTEX_INITIALIZER \\\\\n"
|
|
|
|
"\\{ \\\\\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define PTHREAD_MUTEX_INITIALIZER \\\n"
|
|
|
|
"{{ \\\n";
|
|
|
|
test_text = "#define PTHREAD_MUTEX_INITIALIZER \\\\\n"
|
|
|
|
"{ \\\\\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_cond_initializer_1;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "pthread.h";
|
|
|
|
select = "#define[ \t]PTHREAD_COND_INITIALIZER \\\\\n"
|
|
|
|
"\\{ \\\\\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define PTHREAD_COND_INITIALIZER \\\n"
|
|
|
|
"{{ \\\n";
|
|
|
|
test_text = "#define PTHREAD_COND_INITIALIZER \\\\\n"
|
|
|
|
"{ \\\\\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_rwlock_initializer_1;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = "pthread.h";
|
|
|
|
select = "#define[ \t]PTHREAD_RWLOCK_INITIALIZER \\\\\n"
|
|
|
|
"\\{ \\\\\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define PTHREAD_RWLOCK_INITIALIZER \\\n"
|
|
|
|
"{{ \\\n";
|
|
|
|
test_text = "#define PTHREAD_RWLOCK_INITIALIZER \\\\\n"
|
|
|
|
"{ \\\\\n";
|
|
|
|
};
|
|
|
|
|
2020-11-18 10:33:30 -08:00
|
|
|
|
|
|
|
/* On AIX 'typedef struct {<stuff>} * physadr_t;' needs to give the struct a
|
|
|
|
name for linkage purposes. Fortunately it is on exactly one
|
|
|
|
line. */
|
|
|
|
fix = {
|
|
|
|
hackname = aix_physadr_t;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = sys/types.h;
|
|
|
|
select = "typedef[ \t]*struct[ \t]*([{][^}]*[}][ \t]*\\*[ \t]*physadr_t;)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "typedef struct __physadr_s %1";
|
2020-12-11 00:54:49 +01:00
|
|
|
test_text = "typedef struct { random stuff } * physadr_t;";
|
2020-11-18 10:33:30 -08:00
|
|
|
};
|
|
|
|
|
2000-08-13 18:00:34 +00:00
|
|
|
/*
|
|
|
|
* pthread.h on AIX 4.3.3 tries to define a macro without whitspace
|
|
|
|
* which violates a requirement of ISO C.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_pthread;
|
|
|
|
files = "pthread.h";
|
2015-02-07 02:55:03 +00:00
|
|
|
select = "(#define[\t ][A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])";
|
2000-08-13 18:00:34 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 %2";
|
2000-08-23 14:08:57 +00:00
|
|
|
test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n"
|
|
|
|
"{...init stuff...}";
|
2000-08-13 18:00:34 +00:00
|
|
|
};
|
|
|
|
|
2009-08-17 15:22:04 +00:00
|
|
|
/*
|
|
|
|
* AIX stdint.h fixes.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdint_1;
|
|
|
|
mach = "*-*-aix*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-aix.h, stdint.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]UINT8_MAX[ \t]\\(255U\\)\n"
|
|
|
|
"#define[ \t]UINT16_MAX[ \t]\\(65535U\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define UINT8_MAX (255)\n"
|
|
|
|
"#define UINT16_MAX (65535)";
|
|
|
|
test_text = "#define UINT8_MAX (255U)\n"
|
|
|
|
"#define UINT16_MAX (65535U)";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* aix_stdint_2
|
|
|
|
*/
|
2009-08-17 15:22:04 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_stdint_2;
|
|
|
|
mach = "*-*-aix*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-aix.h, stdint.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]INTPTR_MIN[ \t]INT64_MIN\n"
|
|
|
|
"#define[ \t]INTPTR_MAX[ \t]INT64_MAX\n"
|
|
|
|
"#define[ \t]UINTPTR_MAX[ \t]UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define[ \t]INTPTR_MIN[ \t]INT32_MIN\n"
|
|
|
|
"#define[ \t]INTPTR_MAX[ \t]INT32_MAX\n"
|
|
|
|
"#define[ \t]UINTPTR_MAX[ \t]UINT32_MAX";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define INTPTR_MIN (-INTPTR_MAX-1)\n"
|
|
|
|
"#define INTPTR_MAX 9223372036854775807L\n"
|
|
|
|
"#define UINTPTR_MAX 18446744073709551615UL\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTPTR_MIN (-INTPTR_MAX-1)\n"
|
|
|
|
"#define INTPTR_MAX 2147483647L\n"
|
|
|
|
"#define UINTPTR_MAX 4294967295UL";
|
|
|
|
test_text = "#define INTPTR_MIN INT64_MIN\n"
|
|
|
|
"#define INTPTR_MAX INT64_MAX\n"
|
|
|
|
"#define UINTPTR_MAX UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTPTR_MIN INT32_MIN\n"
|
|
|
|
"#define INTPTR_MAX INT32_MAX\n"
|
|
|
|
"#define UINTPTR_MAX UINT32_MAX";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* aix_stdint_3
|
|
|
|
*/
|
2009-08-17 15:22:04 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_stdint_3;
|
|
|
|
mach = "*-*-aix*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-aix.h, stdint.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]PTRDIFF_MIN[ \t]INT64_MIN\n"
|
|
|
|
"#define[ \t]PTRDIFF_MAX[ \t]INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define[ \t]PTRDIFF_MIN[ \t]*INT32_MIN\n"
|
|
|
|
"#define[ \t]PTRDIFF_MAX[ \t]*INT32_MAX";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define PTRDIFF_MIN (-9223372036854775807L - 1)\n"
|
|
|
|
"#define PTRDIFF_MAX 9223372036854775807L\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PTRDIFF_MIN (-2147483647L - 1)\n"
|
|
|
|
"#define PTRDIFF_MAX 2147483647L";
|
|
|
|
test_text = "#define PTRDIFF_MIN INT64_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PTRDIFF_MIN INT32_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX INT32_MAX";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* aix_stdint_4
|
|
|
|
*/
|
2009-08-17 15:22:04 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_stdint_4;
|
|
|
|
mach = "*-*-aix*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-aix.h, stdint.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]SIZE_MAX[ \t]UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define[ \t]SIZE_MAX[ \t]*UINT32_MAX";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define SIZE_MAX 18446744073709551615UL\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define SIZE_MAX 4294967295UL";
|
|
|
|
test_text = "#define SIZE_MAX UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define SIZE_MAX UINT32_MAX";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* aix_stdint_5
|
|
|
|
*/
|
2009-08-17 15:22:04 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_stdint_5;
|
|
|
|
mach = "*-*-aix*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-aix.h, stdint.h;
|
2009-08-17 15:22:04 +00:00
|
|
|
select = "#define[ \t]UINT8_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)\n"
|
|
|
|
"#define[ \t]UINT16_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define UINT8_C(c) c\n"
|
|
|
|
"#define UINT16_C(c) c";
|
|
|
|
test_text = "#define UINT8_C(c) __CONCAT__(c,U)\n"
|
|
|
|
"#define UINT16_C(c) __CONCAT__(c,U)";
|
|
|
|
};
|
|
|
|
|
2015-08-14 11:17:29 +00:00
|
|
|
/*
|
|
|
|
* stdio.h on AIX defines ferror, clearerr and feof as C++ inline, which
|
|
|
|
produces wrong code with G++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdio_inline;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdio.h;
|
|
|
|
select = "#ifdef __cplusplus\\\n"
|
|
|
|
"}\\\n\\\n"
|
|
|
|
"#ifdef ferror\\\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"}\n"
|
|
|
|
"#endif\n\n"
|
|
|
|
"#if (defined(__cplusplus) && defined(__IBMCPP__))\n"
|
|
|
|
"#ifdef ferror\n";
|
|
|
|
test_text = "#ifdef __cplusplus\n}\n\n#ifdef ferror";
|
|
|
|
};
|
|
|
|
|
2016-06-13 18:59:43 +00:00
|
|
|
/*
|
|
|
|
* stdlib.h on AIX uses #define on malloc and friends.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_malloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+malloc[ \t]+__linux_malloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *malloc(size_t) __asm__(\"__linux_malloc\");";
|
|
|
|
test_text = "#define malloc __linux_malloc";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_realloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+realloc[ \t]+__linux_realloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *realloc(void *, size_t) __asm__(\"__linux_realloc\");";
|
|
|
|
test_text = "#define realloc __linux_realloc";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_calloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+calloc[ \t]+__linux_calloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *calloc(size_t, size_t) __asm__(\"__linux_calloc\");";
|
|
|
|
test_text = "#define calloc __linux_calloc";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_valloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+valloc[ \t]+__linux_valloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *valloc(size_t) __asm__(\"__linux_valloc\");";
|
|
|
|
test_text = "#define valloc __linux_valloc";
|
|
|
|
};
|
2015-08-14 11:17:29 +00:00
|
|
|
|
2018-02-22 16:12:26 +00:00
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_vec_malloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+malloc[ \t]+vec_malloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *malloc(size_t) __asm__(\"vec_malloc\");";
|
|
|
|
test_text = "#define malloc vec_malloc";
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = aix_stdlib_vec_calloc;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "#define[ \t]+calloc[ \t]+vec_calloc";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void *calloc(size_t, size_t) __asm__(\"vec_calloc\");";
|
|
|
|
test_text = "#define calloc vec_calloc";
|
|
|
|
};
|
|
|
|
|
2015-02-16 15:19:20 +00:00
|
|
|
/*
|
|
|
|
* stdlib.h on AIX 4.3 declares strtof() with a non-const first argument.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_strtof_const;
|
2015-08-14 11:17:29 +00:00
|
|
|
mach = "*-*-aix*";
|
2015-02-16 15:19:20 +00:00
|
|
|
files = stdlib.h;
|
|
|
|
select = "((extern[ \t]+)?float[ \t]+strtof)\\(char \\*, char \\*\\*\\);";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(const char *, char **);";
|
|
|
|
test_text = "extern float strtof(char *, char **);";
|
|
|
|
};
|
|
|
|
|
2000-08-13 18:00:34 +00:00
|
|
|
/*
|
|
|
|
* sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline
|
|
|
|
* in an otherwise harmless (and #ifed out) macro definition
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_sysmachine;
|
2015-08-14 11:17:29 +00:00
|
|
|
mach = "*-*-aix*";
|
2000-08-13 18:00:34 +00:00
|
|
|
files = sys/machine.h;
|
|
|
|
select = "\\\\ +\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "\\\n";
|
|
|
|
test_text = "#define FOO \\\n"
|
|
|
|
" bar \\ \n baz \\ \n bat";
|
|
|
|
};
|
|
|
|
|
2004-04-24 22:42:29 +00:00
|
|
|
/*
|
|
|
|
* sys/wait.h on AIX 5.2 defines macros that have both signed and
|
|
|
|
* unsigned types in conditional expressions.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_syswait_2;
|
2015-08-14 11:17:29 +00:00
|
|
|
mach = "*-*-aix*";
|
2004-04-24 22:42:29 +00:00
|
|
|
files = sys/wait.h;
|
|
|
|
select = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "? (int)%1";
|
2013-07-06 17:43:46 +00:00
|
|
|
test_text = "#define WSTOPSIG(__x) "
|
|
|
|
"(int)(WIFSTOPPED(__x) ? ((((unsigned int)__x) >> 8) & 0xff) : -1)";
|
2004-04-24 22:42:29 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* sys/signal.h on some versions of AIX uses volatile in the typedef of
|
|
|
|
* sig_atomic_t, which causes gcc to generate a warning about duplicate
|
|
|
|
* volatile when a sig_atomic_t variable is declared volatile, as
|
|
|
|
* required by ANSI C.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-09 16:21:08 +00:00
|
|
|
hackname = aix_volatile;
|
2015-08-14 11:17:29 +00:00
|
|
|
mach = "*-*-aix*";
|
2000-05-09 16:21:08 +00:00
|
|
|
files = sys/signal.h;
|
|
|
|
select = "typedef volatile int sig_atomic_t";
|
2000-05-14 21:20:33 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "typedef int sig_atomic_t";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "typedef volatile int sig_atomic_t;";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2018-07-23 20:51:50 +00:00
|
|
|
/*
|
|
|
|
* AIX unistd.h defines a static function with an empty parameter list.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = aix_unistd;
|
|
|
|
mach = "*-*-aix*";
|
|
|
|
files = unistd.h;
|
|
|
|
|
|
|
|
select = "[ \t]+static[ \t]+int[ \t]+getdtablesize\\(\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "\tstatic int\t\tgetdtablesize(void)";
|
|
|
|
test_text = " static int getdtablesize()";
|
|
|
|
};
|
|
|
|
|
2001-05-25 21:08:53 +00:00
|
|
|
/*
|
|
|
|
* Fix __assert declaration in assert.h on Alpha OSF/1.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = alpha___assert;
|
|
|
|
files = "assert.h";
|
|
|
|
select = '__assert\(char \*, char \*, int\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "__assert(const char *, const char *, int)";
|
|
|
|
test_text = 'extern void __assert(char *, char *, int);';
|
|
|
|
};
|
|
|
|
|
2002-03-21 01:11:48 +00:00
|
|
|
/*
|
|
|
|
* Fix assert macro in assert.h on Alpha OSF/1.
|
|
|
|
* The superfluous int cast breaks C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = alpha_assert;
|
|
|
|
files = "assert.h";
|
2010-03-31 09:26:05 +00:00
|
|
|
select = "(#[ \t]*" 'define assert\(EX\).*)\(\(int\) \(EX\)\)';
|
2002-03-21 01:11:48 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(EX)";
|
2007-02-04 15:10:08 +00:00
|
|
|
test_text = '#define assert(EX) (((int) (EX)) ? (void)0 '
|
|
|
|
': __assert(#EX, __FILE__, __LINE__))';
|
2002-03-21 01:11:48 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-09 16:21:08 +00:00
|
|
|
hackname = alpha_getopt;
|
|
|
|
files = "stdio.h";
|
|
|
|
files = "stdlib.h";
|
|
|
|
select = 'getopt\(int, char \*\[\], *char \*\)';
|
2000-05-14 21:20:33 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "getopt(int, char *const[], const char *)";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = 'extern int getopt(int, char *[], char *);';
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2009-02-28 18:13:31 +00:00
|
|
|
/*
|
|
|
|
* Fix missing semicolon on Alpha OSF/4 in <net/if.h>
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = alpha_if_semicolon;
|
|
|
|
files = net/if.h;
|
|
|
|
select = "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "struct sockaddr vmif_paddr;\t/*";
|
|
|
|
test_text = ' struct sockaddr vmif_paddr /* protocol address */';
|
|
|
|
};
|
|
|
|
|
2000-07-11 22:20:38 +00:00
|
|
|
/*
|
1999-03-31 12:02:19 +00:00
|
|
|
* Remove erroneous parentheses in sym.h on Alpha OSF/1.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-09 16:21:08 +00:00
|
|
|
hackname = alpha_parens;
|
|
|
|
files = sym.h;
|
|
|
|
select = '#ifndef\(__mips64\)';
|
2000-05-14 21:20:33 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __mips64";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
|
2003-07-12 20:12:52 +00:00
|
|
|
* And OpenBSD.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = alpha_sbrk;
|
|
|
|
files = unistd.h;
|
|
|
|
select = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
|
2000-05-14 21:20:33 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "void *sbrk(";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "extern char* sbrk(ptrdiff_t increment);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* For C++, avoid any typedef or macro definition of bool,
|
|
|
|
* and use the built in type instead.
|
1999-03-31 12:02:19 +00:00
|
|
|
* HP/UX 10.20 also has it in curses_colr/curses.h.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 18:54:45 +00:00
|
|
|
hackname = avoid_bool_define;
|
|
|
|
files = curses.h;
|
|
|
|
files = curses_colr/curses.h;
|
|
|
|
files = term.h;
|
|
|
|
files = tinfo.h;
|
Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
(fix_char_macro_defines, fix_char_macro_uses): New functions.
* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
Recognize Emacs mode markers also.
* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
C++ comments in C++ headers. Call is_cxx_header only if
necessary.
* fixinc/inclhack.def (avoid_bool): Add select for the problem and
bypass for ncurses.
(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
... these, which use the new C fixes.
(math_exception): Escape literal '+' in bypass expression.
* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
Regenerate.
From-SVN: r31512
2000-01-19 21:41:04 +00:00
|
|
|
|
2000-05-20 18:54:45 +00:00
|
|
|
select = "#[ \t]*define[ \t]+bool[ \t]";
|
2003-07-15 00:43:24 +00:00
|
|
|
bypass = "__cplusplus";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 18:54:45 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
|
|
|
c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*";
|
1999-04-26 22:57:01 +00:00
|
|
|
|
2000-05-20 18:54:45 +00:00
|
|
|
test_text = "# define bool\t char \n";
|
|
|
|
};
|
1999-06-08 00:10:51 +00:00
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* avoid_bool_type
|
|
|
|
*/
|
2000-05-20 18:54:45 +00:00
|
|
|
fix = {
|
|
|
|
hackname = avoid_bool_type;
|
|
|
|
files = curses.h;
|
|
|
|
files = curses_colr/curses.h;
|
|
|
|
files = term.h;
|
|
|
|
files = tinfo.h;
|
1999-06-08 00:10:51 +00:00
|
|
|
|
2000-05-20 18:54:45 +00:00
|
|
|
select = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;";
|
2003-07-15 00:43:24 +00:00
|
|
|
bypass = "__cplusplus";
|
1999-06-08 00:10:51 +00:00
|
|
|
|
2000-05-20 18:54:45 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
1999-06-08 00:10:51 +00:00
|
|
|
|
2000-11-12 03:37:33 +00:00
|
|
|
test_text = "typedef unsigned int\tbool \t; /* bool\n type */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2000-11-11 21:40:27 +00:00
|
|
|
/*
|
|
|
|
* For C++, avoid any typedef definition of wchar_t,
|
|
|
|
* and use the built in type instead.
|
2003-05-22 17:03:57 +00:00
|
|
|
* Don't do this for headers that are smart enough to do the right
|
|
|
|
* thing (recent [n]curses.h and Xlib.h).
|
|
|
|
* Don't do it for <linux/nls.h> which is never used from C++ anyway,
|
|
|
|
* and will be broken by the edit.
|
2000-11-11 21:40:27 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = avoid_wchar_t_type;
|
|
|
|
|
|
|
|
select = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;";
|
2003-07-13 06:52:25 +00:00
|
|
|
bypass = "__cplusplus";
|
2003-05-22 17:03:57 +00:00
|
|
|
bypass = "_LINUX_NLS_H";
|
|
|
|
bypass = "XFree86: xc/lib/X11/Xlib\\.h";
|
2000-11-11 21:40:27 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
|
|
|
|
2000-11-12 03:37:33 +00:00
|
|
|
test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */";
|
2000-11-11 21:40:27 +00:00
|
|
|
};
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
/*
|
|
|
|
* Fix `typedef struct term;' on hppa1.1-hp-hpux9.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 18:54:45 +00:00
|
|
|
hackname = bad_struct_term;
|
|
|
|
files = curses.h;
|
|
|
|
select = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "struct term;";
|
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
test_text = 'typedef struct term;';
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix one other error in this file:
|
|
|
|
* a mismatched quote not inside a C comment.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 18:54:45 +00:00
|
|
|
hackname = badquote;
|
|
|
|
files = sundev/vuid_event.h;
|
|
|
|
select = "doesn't";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "does not";
|
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
test_text = "/* doesn't have matched single quotes */";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* check for broken assert.h that needs stdio.h
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-14 19:29:02 +00:00
|
|
|
hackname = broken_assert_stdio;
|
|
|
|
files = assert.h;
|
|
|
|
select = stderr;
|
|
|
|
bypass = "include.*stdio\\.h";
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#include <stdio.h>\n";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "extern FILE* stderr;";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* check for broken assert.h that needs stdlib.h
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-14 19:29:02 +00:00
|
|
|
hackname = broken_assert_stdlib;
|
|
|
|
files = assert.h;
|
|
|
|
select = 'exit *\(|abort *\(';
|
|
|
|
bypass = "include.*stdlib\\.h";
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"#include <stdlib.h>\n"
|
|
|
|
"#endif\n";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "extern void exit ( int );";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2000-05-04 14:50:14 +00:00
|
|
|
/*
|
|
|
|
* Remove `extern double cabs' declarations from math.h.
|
2000-10-29 19:34:53 +00:00
|
|
|
* This conflicts with C99. Discovered on AIX.
|
2003-08-01 22:48:24 +00:00
|
|
|
* Darwin hides its broken cabs in architecture-specific subdirs.
|
2000-05-04 14:50:14 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = broken_cabs;
|
2007-01-06 18:03:50 +00:00
|
|
|
files = math.h, "architecture/*/math.h";
|
2005-06-14 23:59:48 +00:00
|
|
|
select = "^extern[ \t]+double[ \t]+cabs";
|
2000-05-20 18:54:45 +00:00
|
|
|
|
2007-01-25 14:25:01 -05:00
|
|
|
sed = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//";
|
|
|
|
sed = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//";
|
2000-05-20 18:54:45 +00:00
|
|
|
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "#ifdef __STDC__\n"
|
2000-09-29 17:47:32 +00:00
|
|
|
"extern double cabs(struct dbl_hypot);\n"
|
2000-05-09 16:21:08 +00:00
|
|
|
"#else\n"
|
2000-09-29 17:47:32 +00:00
|
|
|
"extern double cabs();\n"
|
2000-05-18 15:47:31 +00:00
|
|
|
"#endif\n"
|
Remove obsolete IRIX 6.5 support
libstdc++-v3:
* configure.host (irix6.5*): Remove.
* config/os/irix: Remove.
* config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc())
[_GLIBCXX_FIONREAD_TAKES_OFF_T]: Remove.
* doc/xml/faq.xml: Remove IRIX reference.
* doc/xml/manual/using.xml (Finding Dynamic or Shared Libraries):
Remove IRIX example.
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
Remove mips-sgi-irix6* handling.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/21_strings/basic_string/pthread18185.cc: Likewise.
* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
* testsuite/23_containers/list/pthread1.cc: Likewise.
* testsuite/23_containers/list/pthread5.cc: Likewise.
* testsuite/23_containers/map/pthread6.cc: Likewise.
* testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise.
* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
* testsuite/30_threads/async/42819.cc: Likewise.
* testsuite/30_threads/async/49668.cc: Likewise.
* testsuite/30_threads/async/any.cc: Likewise.
* testsuite/30_threads/async/async.cc: Likewise.
* testsuite/30_threads/async/launch.cc: Likewise.
* testsuite/30_threads/async/sync.cc: Likewise.
* testsuite/30_threads/call_once/39909.cc: Likewise.
* testsuite/30_threads/call_once/49668.cc: Likewise.
* testsuite/30_threads/call_once/call_once1.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
* testsuite/30_threads/future/cons/move.cc: Likewise.
* testsuite/30_threads/future/members/45133.cc: Likewise.
* testsuite/30_threads/future/members/get.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/future/members/share.cc: Likewise.
* testsuite/30_threads/future/members/valid.cc: Likewise.
* testsuite/30_threads/future/members/wait.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/lock/1.cc: Likewise.
* testsuite/30_threads/lock/2.cc: Likewise.
* testsuite/30_threads/lock/3.cc: Likewise.
* testsuite/30_threads/lock/4.cc: Likewise.
* testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/mutex/lock/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/packaged_task/49668.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
* testsuite/30_threads/promise/cons/1.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
* testsuite/30_threads/promise/cons/move.cc: Likewise.
* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
* testsuite/30_threads/promise/members/get_future.cc: Likewise.
* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/this_thread/1.cc: Likewise.
* testsuite/30_threads/this_thread/2.cc: Likewise.
* testsuite/30_threads/this_thread/3.cc: Likewise.
* testsuite/30_threads/this_thread/4.cc: Likewise.
* testsuite/30_threads/thread/cons/1.cc: Likewise.
* testsuite/30_threads/thread/cons/2.cc: Likewise.
* testsuite/30_threads/thread/cons/3.cc: Likewise.
* testsuite/30_threads/thread/cons/4.cc: Likewise.
* testsuite/30_threads/thread/cons/49668.cc: Likewise.
* testsuite/30_threads/thread/cons/5.cc: Likewise.
* testsuite/30_threads/thread/cons/6.cc: Likewise.
* testsuite/30_threads/thread/cons/7.cc: Likewise.
* testsuite/30_threads/thread/cons/8.cc: Likewise.
* testsuite/30_threads/thread/cons/9.cc: Likewise.
* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
* testsuite/30_threads/thread/members/1.cc: Likewise.
* testsuite/30_threads/thread/members/2.cc: Likewise.
* testsuite/30_threads/thread/members/3.cc: Likewise.
* testsuite/30_threads/thread/members/4.cc: Likewise.
* testsuite/30_threads/thread/members/5.cc: Likewise.
* testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise.
* testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/thread/swap/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/try_lock/1.cc: Likewise.
* testsuite/30_threads/try_lock/2.cc: Likewise.
* testsuite/30_threads/try_lock/3.cc: Likewise.
* testsuite/30_threads/try_lock/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise.
* testsuite/ext/rope/pthread7-rope.cc: Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc:
Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc:
Likewise.
* testsuite/23_containers/vector/capacity/resize/1.cc: Remove
dg-options for mips*-*-irix6*.
* testsuite/27_io/ios_base/storage/1.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/storage/3.cc: Likewise.
* testsuite/lib/libstdc++.exp (v3-build_support): Remove IRIX 6
workaround.
libjava:
* configure.ac (libgcj_cv_exidx): Remove IRIX 6 ld workaround.
(mips-sgi-irix6*): Remove.
(mips-sgi-irix*): Remove.
(AC_CHECK_HEADERS): Remove bstring.h.
* configure: Regenerate.
* include/config.h.in: Regenerate.
* configure.host (mips-sgi-irix6*): Remove.
* include/posix-signal.h [__sgi__]: Remove.
* gnu/java/net/natPlainDatagramSocketImplPosix.cc
[HAVE_BSTRING_H]: Remove.
* gnu/java/net/natPlainDatagramSocketImplWin32.cc: Likewise.
* gnu/java/net/natPlainSocketImplPosix.cc: Likewise.
libitm:
* configure.tgt (*-*-irix6*): Remove.
libgomp:
* configure.tgt (mips-sgi-irix6*): Remove.
libgfortran:
* intrinsics/c99_functions.c [__sgi__ && !HAVE_COMPLEX_H]: Remove.
libgcc:
* config.host (mips-sgi-irix6.5*): Remove.
* config/mips/irix-crti.S: Remove.
* config/mips/irix-crtn.S: Remove.
* config/mips/irix6-unwind.h: Remove.
* config/mips/t-irix6: Remove.
* config/mips/t-slibgcc-irix: Remove.
gnattools:
* configure.ac (mips-sgi-irix*): Remove.
* configure: Regenerate.
gcc/testsuite:
* g++.dg/other/anon5.C: Don't skip on mips-sgi-irix*.
* g++.dg/tree-prof/partition1.C: Likewise.
* g++.dg/tree-prof/partition2.C: Likewise.
* g++.old-deja/g++.other/init19.C: Remove mips-sgi-irix*
handling.
* gcc.c-torture/compile/labels-3.c: Remove dg-options.
* gcc.c-torture/execute/20010724-1.c: Remove.
* gcc.c-torture/execute/20010724-1.x: Remove.
* gcc.c-torture/execute/20040208-2.c: Remove.
* gcc.c-torture/execute/20040208-2.x: Remove.
* gcc.c-torture/execute/ieee/20000320-1.c [__mips__ && __sgi__]:
Remove.
(main) [__mips__ && __sgi__]: Remove.
* gcc.c-torture/execute/ieee/copysign1.c: Remove IRIX reference.
* gcc.c-torture/execute/ieee/copysign2.c: Likewise.
* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: Remove
mips-sgi-irix6* handling.
* gcc.dg/cpp/assert4.c [__mips__]: Remove __sgi__, sgi.
* gcc.dg/torture/20090618-1.c: Don't skip on mips-sgi-irix*.
* gcc.dg/torture/builtin-frexp-1.c: Remove mips*-*-irix6*
handling.
* gcc.dg/torture/builtin-logb-1.c: Likewise.
* gcc.dg/torture/pr47917.c: Remove mips-sgi-irix6.5 handling.
* gcc.dg/tree-ssa/ssa-store-ccp-3.c: Don't skip on mips*-*-irix*.
* gcc.misc-tests/linkage.exp: Remove mips-sgi-irix6* handling.
* gcc.target/mips/args-1.c [!__sgi__]: Remove.
* gcc.target/mips/interrupt_handler-2.c: Don't skip on
mips-sgi-irix6*.
* gcc.target/mips/interrupt_handler-3.c: Likewise.
* gcc.target/mips/save-restore-1.c: Don't skip on mips-sgi-irix6*.
* gcc.target/mips/save-restore-3.c: Likewise.
* gcc.target/mips/save-restore-4.c: Likewise.
* gcc.target/mips/save-restore-5.c: Likewise.
* gfortran.dg/g77/cabs.f: Don't xfail on mips-sgi-irix6*.
* lib/prune.exp (prune_gcc_output): Remove pruning of IRIX 6 ld
messages.
* lib/target-libpath.exp (set_ld_library_path_env_vars): Remove
IRIX 6 handling.
(restore_ld_library_path_env_vars): Likewise.
* lib/target-supports.exp (check_profiling_available): Remove
mips*-*-irix* handling.
(check_ascii_locale_available): Remove mips-sgi-irix* handling.
(add_options_for_c99_runtime): Remove mips-sgi-irix6.5* handling.
* objc.dg/stabs-1.m: Don't xfail on mips-sgi-irix6.5.
gcc/ada:
* gcc-interface/Makefile.in (mips-sgi-irix6*): Remove.
* a-intnam-irix.ads, mlib-tgt-specific-irix.adb,
s-intman-irix.adb, s-mastop-irix.adb, s-osinte-irix.adb,
s-osinte-irix.ads, s-proinf-irix-athread.adb,
s-proinf-irix-athread.ads, s-taprop-irix.adb, s-tasinf-irix.ads,
system-irix-n32.ads, system-irix-n64.ads, system-irix-o32.ads:
Remove.
* adaint.c [__mips && __sgi]: Remove.
(__gnat_number_of_cpus) [__mips && __sgi]: Remove.
[IS_CROSS && !(__mips && __sgi)]: Remove.
* adaint.h [sgi && _LFAPI]: Remove.
* cstreams.c (__gnat_full_name) [sgi]: Remove.
* env.c (__gnat_unsetenv) [__mips && __sgi]: Remove.
(__gnat_clearenv) [__mips && __sgi]: Remove.
* errno.c (_SGI_MP_SOURCE): Remove.
* gsocket.h [sgi]: Remove.
* init.c: Remove IRIX reference.
[sgi]: Remove.
* link.c [sgi]: Remove.
* s-oscons-tmplt.c [__mips && __sgi] (IOV_MAX): Don't define.
(main) [__mips && __sgi] (MAX_tv_sec): Don't define.
(CLOCK_SGI_FAST, CLOCK_SGI_CYCLE): Remove.
* sysdep.c [sgi]: Remove.
(getc_immediate_common) [sgi]: Remove.
(__gnat_localtime_tzoff) [sgi]: Remove.
* terminals.c [__mips && __sgi] (IRIX): Don't define.
[IRIX] (USE_GETPTY): Don't define.
(allocate_pty_desc) [USE_GETPTY]: Remove.
* g-traceb.ads: Remove IRIX reference.
* g-trasym.ads: Likewise.
* memtrack.adb: Likewise.
* s-interr-sigaction.adb: Likewise.
* gnat_rm.texi (Implementation Advice): Remove SGI info.
(Implementation Defined Characteristics): Likewise.
* gnat_ugn.texi (Summary of Run-Time Configurations, mips-irix):
Remove.
(Irix-Specific Considerations): Remove.
gcc/cp:
* Make-lang.in (doc/g++.1): Remove IRIX 6.5 reference.
gcc:
* config.gcc (enable_obsolete): Remove mips-sgi-irix6.5.
(mips-sgi-irix6.5*): Remove.
* config.host (mips-sgi-irix*): Remove.
* configure.ac (enable_fixed_point): Remove mips*-sgi-irix*.
(set_have_as_tls): Remove *-*-irix6*.
(gcc_cv_ld_static_dynamic): Remove mips-sgi-irix6*.
* configure: Regenerate.
* config/mips/iris6.h: Remove.
* config/mips/iris6.opt: Remove.
* config/mips/t-irix6: Remove.
* config/mips/mips.h (TARGET_GPWORD): Remove IRIX 6 N64 handling.
(TARGET_IRIX6): Remove.
(TARGET_CPU_CPP_BUILTINS): Remove IRIX 6 handling.
Don't define LANGUAGE_C, _LANGUAGE_C for Objective-C.
* config/mips/mips.c (mips_build_builtin_va_list): Remove IRIX 6
handling.
(mips_file_start): Likewise.
* config/mips/mips-protos.h (irix_asm_output_align): Remove.
* config/mips/driver-native.c [__sgi__]: Remove.
(host_detect_local_cpu) [__sgi__]: Remove.
* config/mips/gnu-user.h: Remove iris5.h reference.
* config/mips/mips-modes.def: Remove IRIX 6 reference.
* config/mips/gnu-user64.h (MIPS_TFMODE_FORMAT): Remove.
* config/mips/mips.c (mips_option_override) [MIPS_TFMODE_FORMAT]:
Remove.
* gcc.c (main): Move asm_debug initialization ...
(asm_debug): ... here.
* ginclude/stddef.h (__STDDEF_H__): Don't define.
* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Remove.
* system.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Poison.
* collect2.c [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
(main) [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
[LINK_ELIMINATE_DUPLICATE_LDIRECTORIES] (is_in_args): Remove.
* doc/tm.texi.in (Driver, LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
Remove.
* doc/tm.texi: Regenerate.
* doc/invoke.texi (Debugging Options, -gdwarf-<version>): Remove
IRIX 6 reference.
(MIPS Options, -march): Remove IRIX reference.
* doc/install.texi (Binaries, SGI IRIX): Remove.
(Specific, mips-sgi-irix6): Document IRIX 6.5 removal, remove rest
of section.
* doc/trouble.texi (Interoperation): Remove -lgl_s handling.
fixincludes:
* inclhack.def (broken_cabs): Remove IRIX and SunOS 4 support.
(irix___restrict): Remove.
(irix___generic1): Remove.
(irix___generic2): Remove.
(irix_asm_apostrophe): Remove.
(irix_complex): Remove.
(irix_pthread_init): Remove.
(irix_socklen_t): Remove.
(irix_stdint_c99_mode): Remove.
(irix_stdint_c99_types): Remove.
(irix_stdint_c99_macros): Remove.
(irix_stdio_va_list): Remove IRIX 6.5 support.
(irix_wcsftime): Remove.
(stdio_va_list): Remove IRIX 6.5 support.
(svr4_profil): Remove IRIX bypass.
* fixincl.x: Regenerate.
* tests/base/complex.h [IRIX_COMPLEX_CHECK]: Remove.
* tests/base/internal/math_core.h: Remove.
* tests/base/internal/sgimacros.h: Remove.
* tests/base/internal/wchar_core.h: Remove.
* tests/base/math.h [BROKEN_CABS_CHECK]: Remove IRIX and SunOS 4
support.
* tests/base/pthread.h [IRIX_PTHREAD_INIT_CHECK]: Remove.
* tests/base/stdint-irix65.h: Remove.
* tests/base/stdint.h [IRIX_STDINT_C99_MODE_CHECK]: Remove.
* tests/base/sys/asm.h: Remove.
* tests/base/sys/socket.h [IRIX_SOCKLEN_T_CHECK]: Remove.
contrib:
* config-list.mk (LIST): Remove mips-sgi-irix6.5.
toplevel:
* MAINTAINERS (OS Port Maintainers): Remove irix.
* configure.ac (enable_libgomp): Remove *-*-irix6*.
(unsupported_languages): Remove mips-sgi-irix6.*.
(noconfigdirs): Don't add ${libgcj} for mips*-*-irix6*.
(with_stabs): Remove.
* configure: Regenerate.
From-SVN: r185390
2012-03-14 16:33:37 +00:00
|
|
|
"extern double cabs ( _Complex z );";
|
2000-05-04 14:50:14 +00:00
|
|
|
};
|
|
|
|
|
2006-01-19 17:18:29 +00:00
|
|
|
/*
|
|
|
|
* Fixup Darwin's broken check for __builtin_nanf.
|
2008-09-06 19:57:26 +00:00
|
|
|
*/
|
2006-01-19 17:18:29 +00:00
|
|
|
fix = {
|
|
|
|
hackname = broken_nan;
|
2007-01-06 18:03:50 +00:00
|
|
|
/*
|
|
|
|
* It is tempting to omit the first "files" entry. Do not.
|
|
|
|
* The testing machinery will take the first "files" entry as the name
|
|
|
|
* of a test file to play with. It would be a nuisance to have a directory
|
|
|
|
* with the name "*".
|
|
|
|
*/
|
2006-01-19 17:18:29 +00:00
|
|
|
files = "architecture/ppc/math.h";
|
2007-01-06 18:03:50 +00:00
|
|
|
files = "architecture/*/math.h";
|
2012-10-29 16:44:34 +00:00
|
|
|
select = '#if defined\(__APPLE_CC__\) && \(__APPLE_CC__ >= 1345\)';
|
2006-01-19 17:18:29 +00:00
|
|
|
bypass = "powl";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if 1";
|
|
|
|
test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
|
2008-09-06 19:57:26 +00:00
|
|
|
};
|
2006-01-19 17:18:29 +00:00
|
|
|
|
2003-05-03 22:48:59 +00:00
|
|
|
/*
|
|
|
|
* Various systems derived from BSD4.4 contain a macro definition
|
|
|
|
* for vfscanf that interacts badly with requirements of builtin-attrs.def.
|
|
|
|
* Known to be fixed in FreeBSD 5 system headers.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = bsd_stdio_attrs_conflict;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-*bsd*";
|
|
|
|
mach = "*-*-*darwin*";
|
2003-05-03 22:48:59 +00:00
|
|
|
files = stdio.h;
|
|
|
|
select = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n"
|
|
|
|
'#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n"
|
|
|
|
'int vfscanf(FILE *, const char *, __builtin_va_list) '
|
|
|
|
'__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");';
|
|
|
|
test_text = '#define vfscanf __svfscanf';
|
|
|
|
};
|
|
|
|
|
2023-01-18 19:58:33 +00:00
|
|
|
fix = {
|
|
|
|
hackname = apple_local_stdio_fn_deprecation;
|
|
|
|
mach = "*-*-*darwin2*";
|
|
|
|
files = stdio.h;
|
|
|
|
select = "__deprecated_msg([^\n]*)$";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if defined(__APPLE_LOCAL_DEPRECATIONS)\n"
|
|
|
|
"%0\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = '__deprecated_msg("This function is provided for compat...")';
|
|
|
|
};
|
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
/*
|
|
|
|
* Fix various macros used to define ioctl numbers.
|
|
|
|
* The traditional syntax was:
|
|
|
|
*
|
|
|
|
* #define _CTRL(n, x) (('n'<<8)+x)
|
|
|
|
* #define TCTRLCFOO _CTRL(T, 1)
|
|
|
|
*
|
|
|
|
* but this does not work with the C standard, which disallows macro
|
|
|
|
* expansion inside strings. We have to rewrite it thus:
|
|
|
|
*
|
|
|
|
* #define _CTRL(n, x) ((n<<8)+x)
|
|
|
|
* #define TCTRLCFOO _CTRL('T', 1)
|
|
|
|
*
|
|
|
|
* The select expressions match too much, but the c_fix code is cautious.
|
|
|
|
*
|
|
|
|
* CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ...
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = ctrl_quotes_def;
|
2000-06-16 20:38:42 +00:00
|
|
|
select = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = char_macro_def;
|
|
|
|
c_fix_arg = "CTRL";
|
2000-06-17 17:50:12 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* This is two tests in order to ensure that the "CTRL(c)" can
|
|
|
|
* be selected in isolation from the multi-arg format
|
|
|
|
*/
|
|
|
|
test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n";
|
|
|
|
test_text = "#define _CTRL(c) ('c'&037)";
|
2000-05-16 14:01:34 +00:00
|
|
|
};
|
|
|
|
|
2012-10-29 16:44:34 +00:00
|
|
|
/*
|
|
|
|
* Fix various macros used to define ioctl numbers.
|
|
|
|
*/
|
2000-05-16 14:01:34 +00:00
|
|
|
fix = {
|
|
|
|
hackname = ctrl_quotes_use;
|
|
|
|
select = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
|
|
|
|
c_fix = char_macro_use;
|
|
|
|
c_fix_arg = "CTRL";
|
2000-05-30 20:24:44 +00:00
|
|
|
test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)";
|
2000-05-16 14:01:34 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* sys/mman.h on HP/UX is not C++ ready,
|
|
|
|
* even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
|
|
|
|
*
|
2000-05-20 18:54:45 +00:00
|
|
|
* rpc/types.h on OSF1/2.0 is not C++ ready,
|
|
|
|
* even though NO_IMPLICIT_EXTERN_C is defined for the alpha.
|
|
|
|
*
|
|
|
|
* The problem is the declaration of malloc.
|
2000-05-16 14:01:34 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = cxx_unready;
|
|
|
|
files = sys/mman.h;
|
|
|
|
files = rpc/types.h;
|
|
|
|
select = '[^#]+malloc.*;'; /* Catch any form of declaration
|
|
|
|
not within a macro. */
|
|
|
|
bypass = '"C"|__BEGIN_DECLS';
|
|
|
|
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"#endif\n";
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"}\n"
|
|
|
|
"#endif\n";
|
|
|
|
test_text = "extern void* malloc( size_t );";
|
|
|
|
};
|
|
|
|
|
2016-11-20 10:49:47 +00:00
|
|
|
/*
|
|
|
|
* macOS 10.12 <AvailabilityInternal.h> uses __attribute__((availability))
|
|
|
|
* unconditionally.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_availabilityinternal;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = AvailabilityInternal.h;
|
|
|
|
select = "#define[ \t]+(__API_[ADU]\\([^)]*\\)).*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOFix_
|
|
|
|
#if defined(__has_attribute)
|
|
|
|
#if __has_attribute(availability)
|
|
|
|
%0
|
|
|
|
#else
|
|
|
|
#define %1
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#define %1
|
|
|
|
#endif
|
|
|
|
_EOFix_;
|
|
|
|
|
|
|
|
test_text = "#define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))\n"
|
|
|
|
"#define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))";
|
|
|
|
};
|
|
|
|
|
2012-10-29 16:44:34 +00:00
|
|
|
/*
|
2019-06-21 19:18:18 +00:00
|
|
|
* For the AAB_darwin7_9_long_double_funcs fix (and later fixes for long long)
|
|
|
|
* to be useful, the main math.h must use <> and not "" includes.
|
2012-10-29 16:44:34 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_9_long_double_funcs_2;
|
2019-06-21 19:18:18 +00:00
|
|
|
mach = "*-*-darwin*";
|
2012-10-29 16:44:34 +00:00
|
|
|
files = math.h;
|
|
|
|
select = '#include[ \t]+\"';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1<%2.h>";
|
|
|
|
|
|
|
|
c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
|
|
|
|
|
2019-06-21 19:18:18 +00:00
|
|
|
test_text = '#include <architecture/ppc/math.h>';
|
2012-10-29 16:44:34 +00:00
|
|
|
};
|
|
|
|
|
2007-10-09 23:22:02 +00:00
|
|
|
/*
|
|
|
|
* On darwin8 and earlier, mach-o/swap.h isn't properly guarded
|
|
|
|
* by 'extern "C"'. On darwin7 some mach/ headers aren't properly guarded.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_externc;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = mach-o/swap.h;
|
|
|
|
files = mach/mach_time.h;
|
|
|
|
files = mach/mach_traps.h;
|
|
|
|
files = mach/message.h;
|
|
|
|
files = mach/mig.h;
|
|
|
|
files = mach/semaphore.h;
|
|
|
|
bypass = "extern \"C\"";
|
|
|
|
bypass = "__BEGIN_DECLS";
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"#endif\n";
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"}\n"
|
|
|
|
"#endif\n";
|
|
|
|
test_text = "extern void swap_fat_header();\n";
|
|
|
|
};
|
|
|
|
|
2004-10-27 23:02:39 +00:00
|
|
|
/*
|
|
|
|
* AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
|
|
|
|
* bad __GNUC__ tests.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_gcc4_breakage;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = AvailabilityMacros.h;
|
|
|
|
select = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
|
|
|
|
test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
|
|
|
|
"(__GNUC_MINOR__ >= 1)\n";
|
|
|
|
};
|
|
|
|
|
2019-06-21 19:18:18 +00:00
|
|
|
/*
|
|
|
|
* math.h hides the long long functions that are available on the system for
|
|
|
|
* 10.5 and 10.6 SDKs, we expect to use them in G++ without specifying a value
|
|
|
|
* for __STDC_VERSION__, or switching __STRICT_ANSI__ off.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_ll_funcs_avail;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = architecture/ppc/math.h, architecture/i386/math.h;
|
|
|
|
select = "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*"
|
|
|
|
"__STRICT_ANSI__[^_]*__GNUC__[^\)]*";
|
|
|
|
sed = "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*"
|
|
|
|
"__STRICT_ANSI__[^_]*__GNUC__[^\\)]*\)/#if\ !\(__DARWIN_NO_LONG_LONG\)/";
|
|
|
|
test_text = "#if\ !(__DARWIN_NO_LONG_LONG)";
|
|
|
|
};
|
|
|
|
|
2016-08-09 17:58:00 +00:00
|
|
|
/*
|
|
|
|
* Before Mac OS X 10.8 <i386/setjmp.h> doesn't mark longjump noreturn.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_longjmp_noreturn;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = "i386/setjmp.h";
|
|
|
|
bypass = "__dead2";
|
|
|
|
select = "(.*longjmp\\(.*jmp_buf.*[^)]+\\));";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 __attribute__ ((__noreturn__));";
|
|
|
|
|
|
|
|
test_text = "void siglongjmp(sigjmp_buf, int);";
|
|
|
|
};
|
|
|
|
|
2016-11-20 10:49:47 +00:00
|
|
|
/*
|
|
|
|
* Mac OS X 10.11 <os/trace.h> uses attribute on function definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_os_trace_1;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = os/trace.h;
|
|
|
|
select = "^(_os_trace_verify_printf.*) (__attribute__.*)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1";
|
|
|
|
test_text = "_os_trace_verify_printf(const char *msg, ...) __attribute__((format(printf, 1, 2)))";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Mac OS X 10.1[012] <os/trace.h> os_trace_payload_t typedef uses Blocks
|
|
|
|
* extension without guard.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_os_trace_2;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = os/trace.h;
|
|
|
|
select = "typedef.*\\^os_trace_payload_t.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
|
|
|
|
test_text = "typedef void (^os_trace_payload_t)(xpc_object_t xdict);";
|
|
|
|
};
|
|
|
|
|
2023-01-18 23:25:36 +00:00
|
|
|
/*
|
|
|
|
* macOSX 13.0 SDK objc/runtime.h uses Apple Blocks extension without a guard.
|
|
|
|
*/
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_objc_runtime_1;
|
|
|
|
mach = "*-*-darwin2*";
|
|
|
|
files = objc/runtime.h;
|
|
|
|
select = <<- _EOSelect_
|
|
|
|
OBJC_EXPORT void.*
|
|
|
|
objc_enumerateClasses.*
|
|
|
|
.*
|
|
|
|
.*
|
|
|
|
.*
|
|
|
|
.*void \(\^ _Nonnull block.*
|
|
|
|
.*
|
|
|
|
.*
|
|
|
|
.*OBJC_REFINED_FOR_SWIFT.*
|
|
|
|
_EOSelect_;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
|
|
|
|
test_text = <<- _OBJC_RUNTIME_1
|
|
|
|
OBJC_EXPORT void
|
|
|
|
objc_enumerateClasses(const void * _Nullable image,
|
|
|
|
const char * _Nullable namePrefix,
|
|
|
|
Protocol * _Nullable conformingTo,
|
|
|
|
Class _Nullable subclassing,
|
|
|
|
void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop)
|
|
|
|
OBJC_NOESCAPE)
|
|
|
|
OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0)
|
|
|
|
OBJC_REFINED_FOR_SWIFT;
|
|
|
|
_OBJC_RUNTIME_1;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-11-20 10:49:47 +00:00
|
|
|
/*
|
|
|
|
* In Mac OS X 10.1[012] <os/trace.h>, need to guard users of
|
|
|
|
* os_trace_payload_t typedef, too.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_os_trace_3;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = os/trace.h;
|
|
|
|
select = <<- _EOSelect_
|
|
|
|
__(API|OSX)_.*
|
|
|
|
OS_EXPORT.*
|
|
|
|
.*
|
|
|
|
_os_trace.*os_trace_payload_t payload);
|
|
|
|
_EOSelect_;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
|
|
|
|
test_text = <<- _EOText_
|
|
|
|
__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(8.0))
|
|
|
|
OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED
|
|
|
|
void
|
|
|
|
_os_trace_with_buffer(void *dso, const char *message, uint8_t type, const void *buffer, size_t buffer_size, os_trace_payload_t payload);
|
|
|
|
|
|
|
|
__OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0)
|
|
|
|
OS_EXPORT OS_NOTHROW
|
|
|
|
void
|
|
|
|
_os_trace_internal(void *dso, uint8_t type, const char *format, const uint8_t *buf, size_t buf_size, os_trace_payload_t payload);
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
2019-06-21 19:03:45 +00:00
|
|
|
/*
|
|
|
|
* In macOS 10.10 <os/base.h>, doesn't have __has_extension guarded.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_os_base_1;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = os/base.h;
|
|
|
|
select = <<- OS_BASE_1_SEL
|
|
|
|
#define __has_attribute.*
|
|
|
|
#endif
|
|
|
|
OS_BASE_1_SEL;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- OS_BASE_1_FIX
|
|
|
|
%0
|
|
|
|
#ifndef __has_extension
|
|
|
|
#define __has_extension(x) 0
|
|
|
|
#endif
|
|
|
|
OS_BASE_1_FIX;
|
|
|
|
test_text = <<- OS_BASE_1_TEST
|
|
|
|
#define __has_attribute(x) 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if __GNUC__
|
|
|
|
OS_BASE_1_TEST;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* In macOS 10.10 <dispatch/object.h>, has unguarded block syntax.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_dispatch_object_1;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = dispatch/object.h;
|
|
|
|
select = "typedef void.*\\^dispatch_block_t.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
|
|
|
|
test_text = <<- DISPATCH_OBJECT_1_TEST
|
|
|
|
typedef void (^dispatch_block_t)(void);
|
|
|
|
|
|
|
|
__BEGIN_DECLS
|
|
|
|
DISPATCH_OBJECT_1_TEST;
|
|
|
|
};
|
|
|
|
|
2003-12-20 15:49:22 +00:00
|
|
|
/*
|
|
|
|
* __private_extern__ doesn't exist in FSF GCC. Even if it did,
|
|
|
|
* why would you ever put it in a system header file?
|
|
|
|
*/
|
2003-12-19 06:19:26 +00:00
|
|
|
fix = {
|
|
|
|
hackname = darwin_private_extern;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = mach-o/dyld.h;
|
|
|
|
select = "__private_extern__ [a-z_]+ _dyld_";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern";
|
|
|
|
c_fix_arg = "__private_extern__";
|
|
|
|
test_text = "__private_extern__ int _dyld_func_lookup(\n"
|
|
|
|
"const char *dyld_func_name,\n"
|
|
|
|
"unsigned long *address);\n";
|
|
|
|
};
|
|
|
|
|
2009-06-09 22:09:58 +00:00
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines UINT8_C and UINT16_C to
|
|
|
|
* unsigned constants.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_1;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-06-09 22:09:58 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define UINT8_C(v)\tv\n#define UINT16_C(v)\tv";
|
|
|
|
select = "#define UINT8_C\\(v\\)[ \t]+\\(v ## U\\)\n"
|
|
|
|
"#define UINT16_C\\(v\\)[ \t]+\\(v ## U\\)";
|
|
|
|
test_text = "#define UINT8_C(v) (v ## U)\n"
|
|
|
|
"#define UINT16_C(v) (v ## U)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines INTPTR_MIN and INTPTR_MAX
|
|
|
|
* with wrong types.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_2;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-06-09 22:09:58 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define INTPTR_MAX 9223372036854775807L\n"
|
|
|
|
"#define INTPTR_MIN (-INTPTR_MAX-1)\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTPTR_MAX 2147483647L\n"
|
|
|
|
"#define INTPTR_MIN (-INTPTR_MAX-1)\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define INTPTR_MIN[ \t]+INT64_MIN\n"
|
|
|
|
"#define INTPTR_MAX[ \t]+INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTPTR_MIN[ \t]+INT32_MIN\n"
|
|
|
|
"#define INTPTR_MAX[ \t]+INT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define INTPTR_MIN INT64_MIN\n"
|
|
|
|
"#define INTPTR_MAX INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTPTR_MIN INT32_MIN\n"
|
|
|
|
"#define INTPTR_MAX INT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines UINTPTR_MAX with a wrong type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_3;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-06-09 22:09:58 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define UINTPTR_MAX 18446744073709551615UL\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define UINTPTR_MAX 4294967295UL\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define UINTPTR_MAX[ \t]+UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define UINTPTR_MAX[ \t]+UINT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define UINTPTR_MAX UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define UINTPTR_MAX UINT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines SIZE_MAX with a wrong type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_4;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-06-09 22:09:58 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define SIZE_MAX 18446744073709551615UL\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define SIZE_MAX 4294967295UL\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define SIZE_MAX[ \t]+UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define SIZE_MAX[ \t]+UINT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define SIZE_MAX UINT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define SIZE_MAX UINT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
2009-07-04 21:31:17 +00:00
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines {U,}INTMAX_{MIN,MAX}
|
|
|
|
* with a wrong type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_5;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-07-04 21:31:17 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define INTMAX_MIN (-9223372036854775807L - 1)\n"
|
|
|
|
"#define INTMAX_MAX 9223372036854775807L\n"
|
|
|
|
"#define UINTMAX_MAX 18446744073709551615UL\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTMAX_MIN (-9223372036854775807LL - 1)\n"
|
|
|
|
"#define INTMAX_MAX 9223372036854775807LL\n"
|
|
|
|
"#define UINTMAX_MAX 18446744073709551615ULL\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#define INTMAX_MIN[ \t]+INT64_MIN\n"
|
|
|
|
"#define INTMAX_MAX[ \t]+INT64_MAX\n"
|
|
|
|
"\n"
|
|
|
|
"#define UINTMAX_MAX[ \t]+UINT64_MAX";
|
|
|
|
test_text = "#define INTMAX_MIN INT64_MIN\n"
|
|
|
|
"#define INTMAX_MAX INT64_MAX\n"
|
|
|
|
"\n"
|
|
|
|
"#define UINTMAX_MAX UINT64_MAX";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines {U,}INTMAX_C
|
|
|
|
* with a wrong type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_6;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-07-04 21:31:17 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define PTRDIFF_MIN (-9223372036854775807L - 1)\n"
|
|
|
|
"#define PTRDIFF_MAX 9223372036854775807L\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PTRDIFF_MIN (-2147483647 - 1)\n"
|
|
|
|
"#define PTRDIFF_MAX 2147483647\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define PTRDIFF_MIN[ \t]+INT64_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX[ \t]+INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PTRDIFF_MIN[ \t]+INT32_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX[ \t]+INT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define PTRDIFF_MIN INT64_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX INT64_MAX\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PTRDIFF_MIN INT32_MIN\n"
|
|
|
|
"#define PTRDIFF_MAX INT32_MAX\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Darwin headers have a stdint.h that defines {U,}INTMAX_C
|
|
|
|
* with a wrong type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_stdint_7;
|
|
|
|
mach = "*-*-darwin*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-darwin.h, stdint.h;
|
2009-07-04 21:31:17 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __WORDSIZE == 64\n"
|
|
|
|
"#define INTMAX_C(v) (v ## L)\n"
|
|
|
|
"#define UINTMAX_C(v) (v ## UL)\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define INTMAX_C(v) (v ## LL)\n"
|
|
|
|
"#define UINTMAX_C(v) (v ## ULL)\n"
|
|
|
|
"#endif";
|
|
|
|
select = "#define INTMAX_C\\(v\\)[ \t]+\\(v ## LL\\)\n"
|
|
|
|
"#define UINTMAX_C\\(v\\)[ \t]+\\(v ## ULL\\)";
|
|
|
|
test_text = "#define INTMAX_C(v) (v ## LL)\n"
|
|
|
|
"#define UINTMAX_C(v) (v ## ULL)";
|
|
|
|
};
|
|
|
|
|
2019-04-18 06:53:21 +00:00
|
|
|
/* The SDK included with XCode 10.2 has the file <sys/ucred.h> that uses the
|
|
|
|
C11 _Atomic keyword (exposing it to C++ code). The work-around here follows
|
|
|
|
the header in declaring the entity volatile when _Atomic is not available.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_ucred__Atomic;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = sys/ucred.h;
|
|
|
|
select = "_Atomic";
|
|
|
|
c_fix = wrap;
|
|
|
|
c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n"
|
|
|
|
"# define _Atomic volatile\n"
|
|
|
|
"#endif\n";
|
|
|
|
c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n"
|
|
|
|
"# undef _Atomic\n"
|
|
|
|
"#endif\n";
|
2019-05-11 20:19:31 +00:00
|
|
|
test_text = ""; /* Don't provide this for wrap fixes. */
|
2019-04-18 06:53:21 +00:00
|
|
|
};
|
|
|
|
|
2022-01-01 12:22:00 +01:00
|
|
|
/* The darwin headers don't accept __FLT_EVAL_METHOD__ == 16. */
|
|
|
|
fix = {
|
|
|
|
hackname = darwin_flt_eval_method;
|
|
|
|
mach = "*-*-darwin*";
|
|
|
|
files = math.h;
|
2023-08-17 10:16:57 +02:00
|
|
|
select = "^#if __FLT_EVAL_METHOD__ == 0( \\|\\| __FLT_EVAL_METHOD__ == -1)?$";
|
2022-01-01 12:22:00 +01:00
|
|
|
c_fix = format;
|
2023-08-17 10:16:57 +02:00
|
|
|
c_fix_arg = "%0 || __FLT_EVAL_METHOD__ == 16";
|
|
|
|
test_text = "#if __FLT_EVAL_METHOD__ == 0\n"
|
|
|
|
"#if __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == -1";
|
2022-01-01 12:22:00 +01:00
|
|
|
};
|
|
|
|
|
1999-03-31 12:02:19 +00:00
|
|
|
/*
|
|
|
|
* Fix <c_asm.h> on Digital UNIX V4.0:
|
|
|
|
* It contains a prototype for a DEC C internal asm() function,
|
|
|
|
* clashing with gcc's asm keyword. So protect this with __DECC.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = dec_intern_asm;
|
|
|
|
files = c_asm.h;
|
1999-04-01 00:15:14 +00:00
|
|
|
sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n";
|
|
|
|
sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
|
1999-03-31 12:02:19 +00:00
|
|
|
"#endif\n";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text =
|
|
|
|
"float fasm {\n"
|
|
|
|
" ... asm stuff ...\n"
|
|
|
|
"};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/";
|
1999-03-31 12:02:19 +00:00
|
|
|
};
|
|
|
|
|
2001-03-07 19:05:25 +00:00
|
|
|
/*
|
|
|
|
* Fix typo in <wchar.h> on DJGPP 2.03.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = djgpp_wchar_h;
|
|
|
|
file = wchar.h;
|
|
|
|
select = "__DJ_wint_t";
|
|
|
|
bypass = "sys/djtypes.h";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n#include <sys/djtypes.h>";
|
|
|
|
c_fix_arg = "#include <stddef.h>";
|
2001-05-26 18:26:29 +00:00
|
|
|
test_text = "#include <stddef.h>\n"
|
|
|
|
"extern __DJ_wint_t x;\n";
|
2001-03-07 19:05:25 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 18:54:45 +00:00
|
|
|
hackname = ecd_cursor;
|
|
|
|
files = "sunwindow/win_lock.h";
|
|
|
|
files = "sunwindow/win_cursor.h";
|
|
|
|
select = 'ecd\.cursor';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = 'ecd_cursor';
|
|
|
|
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
|
|
|
|
* that fails when compiling for SSE-less 32-bit x86.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = feraiseexcept_nosse_divbyzero;
|
|
|
|
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
|
|
|
|
files = bits/fenv.h, '*/bits/fenv.h';
|
|
|
|
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %1, %0 *\" : "
|
|
|
|
": \"x\" \\(__f\\), \"x\" \\(__g\\)\\);$";
|
|
|
|
bypass = "\"fdivp .*; fwait\"";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOText_
|
|
|
|
# ifdef __SSE_MATH__
|
|
|
|
%0
|
|
|
|
# else
|
|
|
|
%1__asm__ __volatile__ ("fdivp %%%%st, %%%%st(1); fwait"
|
|
|
|
%1 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
|
|
|
|
# endif
|
|
|
|
_EOText_;
|
|
|
|
|
|
|
|
test_text = <<- _EOText_
|
|
|
|
__asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
|
|
|
|
* that fails when compiling for SSE-less 32-bit x86.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = feraiseexcept_nosse_invalid;
|
|
|
|
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
|
|
|
|
files = bits/fenv.h, '*/bits/fenv.h';
|
|
|
|
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %0, %0 *\" : "
|
|
|
|
": \"x\" \\(__f\\)\\);$";
|
|
|
|
bypass = "\"fdiv .*; fwait\"";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOText_
|
|
|
|
# ifdef __SSE_MATH__
|
|
|
|
%0
|
|
|
|
# else
|
|
|
|
%1__asm__ __volatile__ ("fdiv %%%%st, %%%%st(0); fwait"
|
|
|
|
%1 : "=t" (__f) : "0" (__f));
|
|
|
|
# endif
|
|
|
|
_EOText_;
|
|
|
|
|
|
|
|
test_text = <<- _EOText_
|
|
|
|
__asm__ __volatile__ ("divss %0, %0" : : "x" (__f));
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
2001-02-21 20:01:24 +00:00
|
|
|
/*
|
|
|
|
* Between 8/24/1998 and 2/17/2001, FreeBSD system headers presume
|
|
|
|
* neither the existence of GCC 3 nor its exact feature set yet break
|
|
|
|
* (by design?) when __GNUC__ is set beyond 2.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = freebsd_gcc3_breakage;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-freebsd*";
|
2001-02-21 20:01:24 +00:00
|
|
|
files = sys/cdefs.h;
|
|
|
|
select = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$';
|
|
|
|
bypass = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = '%0 || __GNUC__ >= 3';
|
|
|
|
test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7';
|
|
|
|
};
|
|
|
|
|
2004-09-14 02:45:08 +00:00
|
|
|
/*
|
|
|
|
* Some releases of FreeBSD 4 and FreeBSD 5.0 and 5.1 system headers presume
|
|
|
|
* neither the existence of GCC 4 nor its exact feature set yet break
|
|
|
|
* (by design?) when __GNUC__ is set beyond 3.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = freebsd_gcc4_breakage;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-freebsd*";
|
2004-09-14 02:45:08 +00:00
|
|
|
files = sys/cdefs.h;
|
|
|
|
select = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3';
|
|
|
|
test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3';
|
|
|
|
};
|
|
|
|
|
2006-11-03 03:11:50 +00:00
|
|
|
/*
|
|
|
|
* Some versions of glibc don't expect the C99 inline semantics.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_c99_inline_1;
|
2007-01-06 18:03:50 +00:00
|
|
|
files = features.h, '*/features.h';
|
2006-11-03 03:11:50 +00:00
|
|
|
select = "^ *&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__$";
|
|
|
|
c_fix = format;
|
2007-03-26 15:25:26 +02:00
|
|
|
c_fix_arg = "%0 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)";
|
2006-11-03 03:11:50 +00:00
|
|
|
test_text = <<-EOT
|
2008-06-07 22:19:45 +00:00
|
|
|
#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
|
|
|
|
&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
|
|
|
|
# define __USE_EXTERN_INLINES 1
|
|
|
|
#endif
|
|
|
|
EOT;
|
2006-11-03 03:11:50 +00:00
|
|
|
};
|
|
|
|
|
2008-02-04 15:31:25 +00:00
|
|
|
/*
|
|
|
|
* Similar, but a version that didn't have __NO_INLINE__
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_c99_inline_1a;
|
|
|
|
files = features.h, '*/features.h';
|
|
|
|
select = "(\\) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__)\n"
|
|
|
|
"(#[ \t]*define[ \t]*__USE_EXTERN_INLINES[ \t]*1)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)\n%2";
|
|
|
|
test_text = <<-EOT
|
2008-06-07 22:19:45 +00:00
|
|
|
#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
|
|
|
|
# define __USE_EXTERN_INLINES 1
|
|
|
|
#endif
|
|
|
|
EOT;
|
2008-02-04 15:31:25 +00:00
|
|
|
};
|
|
|
|
|
2006-11-03 03:11:50 +00:00
|
|
|
/*
|
|
|
|
* The glibc_c99_inline_1 fix should have fixed everything. Unfortunately
|
|
|
|
* there are many glibc headers which do not respect __USE_EXTERN_INLINES.
|
|
|
|
* The remaining glibc_c99_inline_* fixes deal with some of those headers.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_c99_inline_2;
|
2007-01-06 18:03:50 +00:00
|
|
|
files = sys/stat.h, '*/sys/stat.h';
|
2006-11-03 03:11:50 +00:00
|
|
|
select = "extern __inline__ int";
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
sed = "s/extern int \\(stat\\)/"
|
2007-03-26 15:25:26 +02:00
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
2007-02-04 15:10:08 +00:00
|
|
|
"__inline__ int \\1/";
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
sed = "s/extern int \\([lf]stat\\)/"
|
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
|
|
|
"__inline__ int \\1/";
|
|
|
|
sed = "s/extern int \\(mknod\\)/"
|
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
|
|
|
"__inline__ int \\1/";
|
|
|
|
sed = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\(stat\\)/"
|
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
|
|
|
"__inline__ int __REDIRECT\\1 (\\2/";
|
|
|
|
sed = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\([lf]stat\\)/"
|
2007-03-26 15:25:26 +02:00
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
2007-02-04 15:10:08 +00:00
|
|
|
"__inline__ int __REDIRECT\\1 (\\2/";
|
|
|
|
sed = "s/^extern __inline__ int/"
|
2007-03-26 15:25:26 +02:00
|
|
|
"#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
|
2007-02-04 15:10:08 +00:00
|
|
|
"__inline__ int/";
|
2006-11-03 03:11:50 +00:00
|
|
|
test_text = <<-EOT
|
2007-02-04 15:10:08 +00:00
|
|
|
extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
|
|
|
|
extern __inline__ int
|
|
|
|
__NTH (fstat64 (int __fd, struct stat64 *__statbuf))
|
|
|
|
{}
|
|
|
|
EOT;
|
2006-11-03 03:11:50 +00:00
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* glibc_c99_inline_3
|
|
|
|
*/
|
2006-11-03 03:11:50 +00:00
|
|
|
fix = {
|
|
|
|
hackname = glibc_c99_inline_3;
|
2007-01-06 18:03:50 +00:00
|
|
|
files = bits/string2.h, '*/bits/string2.h';
|
2007-03-26 15:25:26 +02:00
|
|
|
select = "extern __inline";
|
2008-02-04 15:31:25 +00:00
|
|
|
bypass = "__extern_inline|__GNU_STDC_INLINE__";
|
2006-11-03 03:11:50 +00:00
|
|
|
c_fix = format;
|
2007-03-26 15:25:26 +02:00
|
|
|
c_fix_arg = "# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)";
|
2006-11-03 03:11:50 +00:00
|
|
|
c_fix_arg = "^# ifdef __cplusplus$";
|
|
|
|
test_text = <<-EOT
|
2007-02-04 15:10:08 +00:00
|
|
|
# ifdef __cplusplus
|
|
|
|
# define __STRING_INLINE inline
|
|
|
|
# else
|
|
|
|
# define __STRING_INLINE extern __inline
|
|
|
|
# endif
|
|
|
|
EOT;
|
2006-11-03 03:11:50 +00:00
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* glibc_c99_inline_4
|
|
|
|
*/
|
2006-11-03 03:11:50 +00:00
|
|
|
fix = {
|
|
|
|
hackname = glibc_c99_inline_4;
|
2014-10-21 12:58:26 +02:00
|
|
|
files = sys/sysmacros.h, '*/sys/sysmacros.h', wchar.h, '*/wchar.h',
|
|
|
|
pthread.h, '*/pthread.h';
|
2008-02-04 15:31:25 +00:00
|
|
|
bypass = "__extern_inline|__gnu_inline__";
|
|
|
|
select = "(^| )extern __inline";
|
2006-11-03 03:11:50 +00:00
|
|
|
c_fix = format;
|
2008-02-04 15:31:25 +00:00
|
|
|
c_fix_arg = "%0 __attribute__ ((__gnu_inline__))";
|
2006-11-03 03:11:50 +00:00
|
|
|
test_text = <<-EOT
|
2007-02-04 15:10:08 +00:00
|
|
|
__extension__ extern __inline unsigned int
|
2007-02-06 01:25:59 +00:00
|
|
|
extern __inline unsigned int
|
2007-02-04 15:10:08 +00:00
|
|
|
EOT;
|
2006-11-03 03:11:50 +00:00
|
|
|
};
|
|
|
|
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
/* glibc-2.27 to 2.36 assume GCC 7 or later supports some or all
|
|
|
|
* of _Float{16,32,64,128} and _Float{32,64,128}x keywords for C,
|
|
|
|
* but doesn't for C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_cxx_floatn_1;
|
fixincludes: FIx up for Debian/Ubuntu includes
As reported by Tobias, my C++ _Float{16,32,64,128,32x,64x,128x} support
patch broke Debian/Ubuntu bootstraps. The problem is that there
glibc bits/floatn.h and bits/floatn-common.h isn't in /usr/include/
directly, but in a subdirectory like /usr/include/x86_64-linux-gnu/
Seems other fixinclude rules for bits/* headers use
files = bits/whatever.h, "*/bits/whatever.h";
so this patch just follows the suit.
2022-06-27 Jakub Jelinek <jakub@redhat.com>
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): Add to files also "*/bits/floatn.h"
and "*/bits/floatn-common.h".
* fixincl.x: Regenerated.
2022-09-27 12:29:46 +02:00
|
|
|
files = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
select = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
|
|
|
|
"(([ \t]*/\\*[^\n]*\\*/\n)?"
|
|
|
|
"([ \t]*#[ \t]*if[^\n]*\n)?"
|
|
|
|
"[ \t]*#[ \t]*define __f(16|32|64|128)x?\\()";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
|
|
|
|
test_text = <<-EOT
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
/* The literal suffix f128 exists only since GCC 7.0. */
|
|
|
|
# define __f128(x) x##l
|
|
|
|
# else
|
|
|
|
# define __f128(x) x##f128
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
/* The literal suffix (f128) exist for powerpc only since GCC 7.0. */
|
|
|
|
# if __LDBL_MANT_DIG__ == 113
|
|
|
|
# define __f128(x) x##l
|
|
|
|
# else
|
|
|
|
# define __f128(x) x##q
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# define __f128(x) x##f128
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
# ifdef __NO_LONG_DOUBLE_MATH
|
|
|
|
# define __f64(x) x##l
|
|
|
|
# else
|
|
|
|
# define __f64(x) x
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# define __f64(x) x##f64
|
|
|
|
# endif
|
|
|
|
EOT;
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_cxx_floatn_2;
|
fixincludes: FIx up for Debian/Ubuntu includes
As reported by Tobias, my C++ _Float{16,32,64,128,32x,64x,128x} support
patch broke Debian/Ubuntu bootstraps. The problem is that there
glibc bits/floatn.h and bits/floatn-common.h isn't in /usr/include/
directly, but in a subdirectory like /usr/include/x86_64-linux-gnu/
Seems other fixinclude rules for bits/* headers use
files = bits/whatever.h, "*/bits/whatever.h";
so this patch just follows the suit.
2022-06-27 Jakub Jelinek <jakub@redhat.com>
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): Add to files also "*/bits/floatn.h"
and "*/bits/floatn-common.h".
* fixincl.x: Regenerated.
2022-09-27 12:29:46 +02:00
|
|
|
files = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
|
fixincludes: Fix up powerpc floatn.h tweaks [PR107059]
On Wed, Sep 28, 2022 at 12:23:31AM +0000, Joseph Myers wrote:
> In general the changes match those made by fixincludes, though I think
> the ones in sysdeps/powerpc/bits/floatn.h, where the header tests
> __LDBL_MANT_DIG__ == 113 or uses #elif, wouldn't match the existing
> fixincludes patterns.
You're right, missed that.
The header has:
/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
# if __HAVE_FLOAT128
# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
typedef long double _Float128;
# define __CFLOAT128 _Complex long double
# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* The type _Float128 exist for powerpc only since GCC 7.0. */
typedef __float128 _Float128;
/* Add a typedef for older GCC and C++ compilers which don't natively support
_Complex _Float128. */
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
# define __CFLOAT128 __cfloat128
# else
# define __CFLOAT128 _Complex _Float128
# endif
# endif
and my current rules don't do anything about that.
The following patch fixes that.
I've run additionally
MACRO_LIST=`pwd`/../gcc/macro_list TARGET_MACHINE=x86_64-pc-linux-gnu \
../fixincludes/fixinc.sh /tmp/include-fixed \
`echo /usr/src/libc | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
in the builddir/fixincludes directory where /usr/src/libc is latest glibc
trunk checkout and seems the remaining defined __cplusplus cases in the floatn.h
and floatn-common.h headers are ok or acceptable.
The remaining cases are:
#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
# define __HAVE_FLOATN_NOT_TYPEDEF 1
#else
# define __HAVE_FLOATN_NOT_TYPEDEF 0
#endif
which is IMHO ok because this is only used in tgmath.h or tgmath-like math.h
stuff which is C only, as C++ doesn't have _Generic.
Another case are the following 3 snippets:
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no constant suffix"
# else
# define __f128x(x) x##f128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no complex type"
# else
# define __CFLOAT128X _Complex _Float128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128x supported but no type"
# endif
but as no target has _Float128x right now and don't see it
coming soon, it isn't a big deal (on the glibc side it is of
course ok to adjust those).
OT, besides floatn.h and floatn-common.h headers, the only
one remaining in /tmp/include-fixed is sysdeps/arm/unwind.h, perhaps
-#if defined(linux) || defined(__NetBSD__)
+#if defined(__linux__) || defined(__NetBSD__)
should be done in that header (and libgcc/config/arm/unwind-arm.h
too).
2022-10-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/107059
* inclhack.def (glibc_cxx_floatn_2): Handle #elif the same as #if.
(glibc_cxx_floatn_4): New.
* fixincl.x: Regenerated.
* tests/base/bits/floatn.h: Regenerated.
2022-10-07 08:56:04 +02:00
|
|
|
select = "^([ \t]*#[ \t]*(el)?if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
"(([ \t]*/\\*[^\n]*\\*/\n)?"
|
|
|
|
"[ \t]*typedef[ \t]+[^\n]*[ \t]+_Float(16|32|64|128)x?([ \t]+__attribute__ \\(\\(__mode__ \\(__HF__\\)\\)\\))?;)";
|
|
|
|
c_fix = format;
|
fixincludes: Fix up powerpc floatn.h tweaks [PR107059]
On Wed, Sep 28, 2022 at 12:23:31AM +0000, Joseph Myers wrote:
> In general the changes match those made by fixincludes, though I think
> the ones in sysdeps/powerpc/bits/floatn.h, where the header tests
> __LDBL_MANT_DIG__ == 113 or uses #elif, wouldn't match the existing
> fixincludes patterns.
You're right, missed that.
The header has:
/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
# if __HAVE_FLOAT128
# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
typedef long double _Float128;
# define __CFLOAT128 _Complex long double
# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* The type _Float128 exist for powerpc only since GCC 7.0. */
typedef __float128 _Float128;
/* Add a typedef for older GCC and C++ compilers which don't natively support
_Complex _Float128. */
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
# define __CFLOAT128 __cfloat128
# else
# define __CFLOAT128 _Complex _Float128
# endif
# endif
and my current rules don't do anything about that.
The following patch fixes that.
I've run additionally
MACRO_LIST=`pwd`/../gcc/macro_list TARGET_MACHINE=x86_64-pc-linux-gnu \
../fixincludes/fixinc.sh /tmp/include-fixed \
`echo /usr/src/libc | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
in the builddir/fixincludes directory where /usr/src/libc is latest glibc
trunk checkout and seems the remaining defined __cplusplus cases in the floatn.h
and floatn-common.h headers are ok or acceptable.
The remaining cases are:
#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
# define __HAVE_FLOATN_NOT_TYPEDEF 1
#else
# define __HAVE_FLOATN_NOT_TYPEDEF 0
#endif
which is IMHO ok because this is only used in tgmath.h or tgmath-like math.h
stuff which is C only, as C++ doesn't have _Generic.
Another case are the following 3 snippets:
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no constant suffix"
# else
# define __f128x(x) x##f128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no complex type"
# else
# define __CFLOAT128X _Complex _Float128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128x supported but no type"
# endif
but as no target has _Float128x right now and don't see it
coming soon, it isn't a big deal (on the glibc side it is of
course ok to adjust those).
OT, besides floatn.h and floatn-common.h headers, the only
one remaining in /tmp/include-fixed is sysdeps/arm/unwind.h, perhaps
-#if defined(linux) || defined(__NetBSD__)
+#if defined(__linux__) || defined(__NetBSD__)
should be done in that header (and libgcc/config/arm/unwind-arm.h
too).
2022-10-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/107059
* inclhack.def (glibc_cxx_floatn_2): Handle #elif the same as #if.
(glibc_cxx_floatn_4): New.
* fixincl.x: Regenerated.
* tests/base/bits/floatn.h: Regenerated.
2022-10-07 08:56:04 +02:00
|
|
|
c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%3";
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
test_text = <<-EOT
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
typedef __float128 _Float128;
|
|
|
|
# endif
|
fixincludes: Fix up powerpc floatn.h tweaks [PR107059]
On Wed, Sep 28, 2022 at 12:23:31AM +0000, Joseph Myers wrote:
> In general the changes match those made by fixincludes, though I think
> the ones in sysdeps/powerpc/bits/floatn.h, where the header tests
> __LDBL_MANT_DIG__ == 113 or uses #elif, wouldn't match the existing
> fixincludes patterns.
You're right, missed that.
The header has:
/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
# if __HAVE_FLOAT128
# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
typedef long double _Float128;
# define __CFLOAT128 _Complex long double
# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* The type _Float128 exist for powerpc only since GCC 7.0. */
typedef __float128 _Float128;
/* Add a typedef for older GCC and C++ compilers which don't natively support
_Complex _Float128. */
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
# define __CFLOAT128 __cfloat128
# else
# define __CFLOAT128 _Complex _Float128
# endif
# endif
and my current rules don't do anything about that.
The following patch fixes that.
I've run additionally
MACRO_LIST=`pwd`/../gcc/macro_list TARGET_MACHINE=x86_64-pc-linux-gnu \
../fixincludes/fixinc.sh /tmp/include-fixed \
`echo /usr/src/libc | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
in the builddir/fixincludes directory where /usr/src/libc is latest glibc
trunk checkout and seems the remaining defined __cplusplus cases in the floatn.h
and floatn-common.h headers are ok or acceptable.
The remaining cases are:
#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
# define __HAVE_FLOATN_NOT_TYPEDEF 1
#else
# define __HAVE_FLOATN_NOT_TYPEDEF 0
#endif
which is IMHO ok because this is only used in tgmath.h or tgmath-like math.h
stuff which is C only, as C++ doesn't have _Generic.
Another case are the following 3 snippets:
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no constant suffix"
# else
# define __f128x(x) x##f128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no complex type"
# else
# define __CFLOAT128X _Complex _Float128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128x supported but no type"
# endif
but as no target has _Float128x right now and don't see it
coming soon, it isn't a big deal (on the glibc side it is of
course ok to adjust those).
OT, besides floatn.h and floatn-common.h headers, the only
one remaining in /tmp/include-fixed is sysdeps/arm/unwind.h, perhaps
-#if defined(linux) || defined(__NetBSD__)
+#if defined(__linux__) || defined(__NetBSD__)
should be done in that header (and libgcc/config/arm/unwind-arm.h
too).
2022-10-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/107059
* inclhack.def (glibc_cxx_floatn_2): Handle #elif the same as #if.
(glibc_cxx_floatn_4): New.
* fixincl.x: Regenerated.
* tests/base/bits/floatn.h: Regenerated.
2022-10-07 08:56:04 +02:00
|
|
|
# if 0
|
|
|
|
# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
typedef __float128 _Float128;
|
|
|
|
# endif
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
EOT;
|
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_cxx_floatn_3;
|
fixincludes: FIx up for Debian/Ubuntu includes
As reported by Tobias, my C++ _Float{16,32,64,128,32x,64x,128x} support
patch broke Debian/Ubuntu bootstraps. The problem is that there
glibc bits/floatn.h and bits/floatn-common.h isn't in /usr/include/
directly, but in a subdirectory like /usr/include/x86_64-linux-gnu/
Seems other fixinclude rules for bits/* headers use
files = bits/whatever.h, "*/bits/whatever.h";
so this patch just follows the suit.
2022-06-27 Jakub Jelinek <jakub@redhat.com>
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): Add to files also "*/bits/floatn.h"
and "*/bits/floatn-common.h".
* fixincl.x: Regenerated.
2022-09-27 12:29:46 +02:00
|
|
|
files = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
|
c++: Implement P1467R9 - Extended floating-point types and standard names compiler part except for bfloat16 [PR106652]
The following patch implements the compiler part of C++23
P1467R9 - Extended floating-point types and standard names compiler part
by introducing _Float{16,32,64,128} as keywords and builtin types
like they are implemented for C already since GCC 7, with DF{16,32,64,128}_
mangling.
It also introduces _Float{32,64,128}x for C++ with the
https://github.com/itanium-cxx-abi/cxx-abi/pull/147
proposed mangling of DF{32,64,128}x.
The patch doesn't add anything for bfloat16_t support, as right now
__bf16 type refuses all conversions and arithmetic operations.
The patch wants to keep backwards compatibility with how __float128 has
been handled in C++ before, both for mangling and behavior in binary
operations, overload resolution etc. So, there are some backend changes
where for C __float128 and _Float128 are the same type (float128_type_node
and float128t_type_node are the same pointer), but for C++ they are distinct
types which mangle differently and _Float128 is treated as extended
floating-point type while __float128 is treated as non-standard floating
point type. The various C++23 changes about how floating-point types
are changed are actually implemented as written in the spec only if at least
one of the types involved is _Float{16,32,64,128,32x,64x,128x} (_FloatNx are
also treated as extended floating-point types) and kept previous behavior
otherwise. For float/double/long double the rules are actually written that
they behave the same as before.
There is some backwards incompatibility at least on x86 regarding _Float16,
because that type was already used by that name and with the DF16_ mangling
(but only since GCC 12 and I think it isn't that widely used in the wild
yet). E.g. config/i386/avx512fp16intrin.h shows the issues, where
in C or in GCC 12 in C++ one could pass 0.0f to a builtin taking _Float16
argument, but with the changes that is not possible anymore, one needs
to either use 0.0f16 or (_Float16) 0.0f.
We have also a problem with glibc headers, where since glibc 2.27
math.h and complex.h aren't compilable with these changes. One gets
errors like:
In file included from /usr/include/math.h:43,
from abc.c:1:
/usr/include/bits/floatn.h:86:9: error: multiple types in one declaration
86 | typedef __float128 _Float128;
| ^~~~~~~~~~
/usr/include/bits/floatn.h:86:20: error: declaration does not declare anything [-fpermissive]
86 | typedef __float128 _Float128;
| ^~~~~~~~~
In file included from /usr/include/bits/floatn.h:119:
/usr/include/bits/floatn-common.h:214:9: error: multiple types in one declaration
214 | typedef float _Float32;
| ^~~~~
/usr/include/bits/floatn-common.h:214:15: error: declaration does not declare anything [-fpermissive]
214 | typedef float _Float32;
| ^~~~~~~~
/usr/include/bits/floatn-common.h:251:9: error: multiple types in one declaration
251 | typedef double _Float64;
| ^~~~~~
/usr/include/bits/floatn-common.h:251:16: error: declaration does not declare anything [-fpermissive]
251 | typedef double _Float64;
| ^~~~~~~~
This is from snippets like:
/* The remaining of this file provides support for older compilers. */
# if __HAVE_FLOAT128
/* The type _Float128 exists only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
where it hardcodes that C++ doesn't have _Float{16,32,64,128,32x,64x,128x} support nor
{f,F}{16,32,64,128}{,x} literal suffixes nor _Complex _Float{16,32,64,128,32x,64x,128x}.
The patch fixincludes this for now and hopefully if this is committed, then
glibc can change those. The patch changes those
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
conditions to
# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
Another thing is mangling, as said above, Itanium C++ ABI specifies
DF <number> _ as _Float{16,32,64,128} mangling, but GCC was implementing
a mangling incompatible with that starting with DF for fixed point types.
Fixed point was never supported in C++ though, I believe the reason why
the mangling has been added was that due to a bug it would leak into the
C++ FE through decltype (0.0r) etc. But that has been shortly after the
mangling was added fixed (I think in the same GCC release cycle), so we
now reject 0.0r etc. in C++. If we ever need the fixed point mangling,
I think it can be readded but better with a different prefix so that it
doesn't conflict with the published standard manglings. So, this patch
also kills the fixed point mangling and implements the DF <number> _
demangling.
The patch predefines __STDCPP_FLOAT{16,32,64,128}_T__ macros when
those types are available, but only for C++23, while the underlying types
are available in C++98 and later including the {f,F}{16,32,64,128} literal
suffixes (but those with a pedwarn for C++20 and earlier). My understanding
is that it needs to be predefined by the compiler, on the other side
predefining even for older modes when <stdfloat> is a new C++23 header
would be weird. One can find out if _Float{16,32,64,128,32x,64x,128x} is
supported in C++ by
__GNUC__ >= 13 && defined(__FLT{16,32,64,128,32X,64X,128X}_MANT_DIG__)
(but that doesn't work well with older G++ 13 snapshots).
As for std::bfloat16_t, three targets (aarch64, arm and x86) apparently
"support" __bf16 type which has the bfloat16 format, but isn't really
usable, e.g. {aarch64,arm,ix86}_invalid_conversion disallow any conversions
from or to type with BFmode, {aarch64,arm,ix86}_invalid_unary_op disallows
any unary operations on those except for ADDR_EXPR and
{aarch64,arm,ix86}_invalid_binary_op disallows any binary operation on
those. So, I think we satisfy:
"If the implementation supports an extended floating-point type with the
properties, as specified by ISO/IEC/IEEE 60559, of radix (b) of 2, storage
width in bits (k) of 16, precision in bits (p) of 8, maximum exponent (emax)
of 127, and exponent field width in bits (w) of 8, then the typedef-name
std::bfloat16_t is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and the floating-point literal
suffixes bf16 and BF16 are supported."
because we don't really support those right now.
2022-09-27 Jakub Jelinek <jakub@redhat.com>
PR c++/106652
PR c++/85518
gcc/
* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
enumerator.
* tree.h (float128t_type_node): Define.
* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
_Float<N> is supported in C++ too.
* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
float128t_type_node.
* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
0.0f.
* config/ia64/ia64.cc (ia64_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
for float128t_type_node if non-NULL.
* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
float128_type_node as "u9__ieee128".
* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
float128t_type_node for __float128 instead of float128_type_node
and create it if NULL.
gcc/c-family/
* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
_Float{32,64,128}x flags from D_CONLY to 0.
(shorten_binary_op): Punt if common_type returns error_mark_node.
(shorten_compare): Likewise.
(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
and _Float{32,64,128}x builtin types if available. For C++
clear float128t_type_node.
* c-cppbuiltin.cc (c_cpp_builtins): Predefine
__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
* c-lex.cc (interpret_float): For q/Q suffixes prefer
float128t_type_node over float128_type_node. Allow
{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
for C++20 and older. Allow {f,F}{32,64,128}x suffixes for C++
with pedwarn. Don't call excess_precision_type for C++.
gcc/cp/
* cp-tree.h (cp_compare_floating_point_conversion_ranks): Implement
P1467R9 - Extended floating-point types and standard names except
for std::bfloat16_t for now. Declare.
(extended_float_type_p): New inline function.
* mangle.cc (write_builtin_type): Mangle float{16,32,64,128}_type_node
as DF{16,32,64,128}_. Mangle float{32,64,128}x_type_node as
DF{32,64,128}x. Remove FIXED_POINT_TYPE mangling that conflicts
with that.
* typeck2.cc (check_narrowing): If one of ftype or type is extended
floating-point type, compare floating-point conversion ranks.
* parser.cc (cp_keyword_starts_decl_specifier_p): Handle
CASE_RID_FLOATN_NX.
(cp_parser_simple_type_specifier): Likewise and diagnose missing
_Float<N> or _Float<N>x support if not supported by target.
* typeck.cc (cp_compare_floating_point_conversion_ranks): New function.
(cp_common_type): If both types are REAL_TYPE and one or both are
extended floating-point types, select common type based on comparison
of floating-point conversion ranks and subranks.
(cp_build_binary_op): Diagnose operation with floating point arguments
with unordered conversion ranks.
* call.cc (standard_conversion): For floating-point conversion, if
either from or to are extended floating-point types, set conv->bad_p
for implicit conversion from larger to smaller conversion rank or
with unordered conversion ranks.
(convert_like_internal): Emit a pedwarn on such conversions.
(build_conditional_expr): Diagnose operation with floating point
arguments with unordered conversion ranks.
(convert_arg_to_ellipsis): Don't promote extended floating-point types
narrower than double to double.
(compare_ics): Implement P1467R9 [over.ics.rank]/4 changes.
gcc/testsuite/
* g++.dg/cpp23/ext-floating1.C: New test.
* g++.dg/cpp23/ext-floating2.C: New test.
* g++.dg/cpp23/ext-floating3.C: New test.
* g++.dg/cpp23/ext-floating4.C: New test.
* g++.dg/cpp23/ext-floating5.C: New test.
* g++.dg/cpp23/ext-floating6.C: New test.
* g++.dg/cpp23/ext-floating7.C: New test.
* g++.dg/cpp23/ext-floating8.C: New test.
* g++.dg/cpp23/ext-floating9.C: New test.
* g++.dg/cpp23/ext-floating10.C: New test.
* g++.dg/cpp23/ext-floating.h: New file.
* g++.target/i386/float16-1.C: Adjust expected diagnostics.
libcpp/
* expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and
{f,F}{32,64,128}x suffixes for C++.
include/
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
(struct demangle_component): Add u.s_extended_builtin member.
libiberty/
* cp-demangle.c (d_dump): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_make_extended_builtin_type): New function.
(cplus_demangle_builtin_types): Add _Float entry.
(cplus_demangle_type): For DF demangle it as _Float<N> or
_Float<N>x rather than fixed point which conflicts with it.
(d_count_templates_scopes): Handle
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
DEMANGLE_COMPONENT_FIXED_TYPE.
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
(d_print_comp_inner): Likewise.
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
fixincludes/
* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
glibc_cxx_floatn_3): New fixes.
* tests/base/bits/floatn.h: New file.
* fixincl.x: Regenerated.
2022-09-27 08:04:06 +02:00
|
|
|
select = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
|
|
|
|
"(([ \t]*/\\*[^\n]*\n?[^\n]*\\*/\n)?"
|
|
|
|
"([ \t]*#[ \t]*if[^\n]*\n)?"
|
|
|
|
"([ \t]*typedef[ \t]+[^\n]*;\n)?"
|
|
|
|
"[ \t]*#[ \t]*define __CFLOAT(16|32|64|128)X?[ \t]+)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
|
|
|
|
test_text = <<-EOT
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
# define __CFLOAT128 _Complex long double
|
|
|
|
# else
|
|
|
|
# define __CFLOAT128 _Complex _Float128
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
/* Add a typedef for older GCC compilers which don't natively support
|
|
|
|
_Complex _Float128. */
|
|
|
|
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
|
|
|
|
# define __CFLOAT128 __cfloat128
|
|
|
|
# else
|
|
|
|
# define __CFLOAT128 _Complex _Float128
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
# ifdef __NO_LONG_DOUBLE_MATH
|
|
|
|
# define __CFLOAT64 _Complex long double
|
|
|
|
# else
|
|
|
|
# define __CFLOAT64 _Complex double
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# define __CFLOAT64 _Complex _Float64
|
|
|
|
# endif
|
|
|
|
EOT;
|
|
|
|
};
|
|
|
|
|
fixincludes: Fix up powerpc floatn.h tweaks [PR107059]
On Wed, Sep 28, 2022 at 12:23:31AM +0000, Joseph Myers wrote:
> In general the changes match those made by fixincludes, though I think
> the ones in sysdeps/powerpc/bits/floatn.h, where the header tests
> __LDBL_MANT_DIG__ == 113 or uses #elif, wouldn't match the existing
> fixincludes patterns.
You're right, missed that.
The header has:
/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
# if __HAVE_FLOAT128
# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
typedef long double _Float128;
# define __CFLOAT128 _Complex long double
# elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* The type _Float128 exist for powerpc only since GCC 7.0. */
typedef __float128 _Float128;
/* Add a typedef for older GCC and C++ compilers which don't natively support
_Complex _Float128. */
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
# define __CFLOAT128 __cfloat128
# else
# define __CFLOAT128 _Complex _Float128
# endif
# endif
and my current rules don't do anything about that.
The following patch fixes that.
I've run additionally
MACRO_LIST=`pwd`/../gcc/macro_list TARGET_MACHINE=x86_64-pc-linux-gnu \
../fixincludes/fixinc.sh /tmp/include-fixed \
`echo /usr/src/libc | sed -e :a -e 's,[^/]*/\.\.\/,,' -e ta`
in the builddir/fixincludes directory where /usr/src/libc is latest glibc
trunk checkout and seems the remaining defined __cplusplus cases in the floatn.h
and floatn-common.h headers are ok or acceptable.
The remaining cases are:
#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
# define __HAVE_FLOATN_NOT_TYPEDEF 1
#else
# define __HAVE_FLOATN_NOT_TYPEDEF 0
#endif
which is IMHO ok because this is only used in tgmath.h or tgmath-like math.h
stuff which is C only, as C++ doesn't have _Generic.
Another case are the following 3 snippets:
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no constant suffix"
# else
# define __f128x(x) x##f128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128X supported but no complex type"
# else
# define __CFLOAT128X _Complex _Float128x
# endif
...
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
# error "_Float128x supported but no type"
# endif
but as no target has _Float128x right now and don't see it
coming soon, it isn't a big deal (on the glibc side it is of
course ok to adjust those).
OT, besides floatn.h and floatn-common.h headers, the only
one remaining in /tmp/include-fixed is sysdeps/arm/unwind.h, perhaps
-#if defined(linux) || defined(__NetBSD__)
+#if defined(__linux__) || defined(__NetBSD__)
should be done in that header (and libgcc/config/arm/unwind-arm.h
too).
2022-10-07 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/107059
* inclhack.def (glibc_cxx_floatn_2): Handle #elif the same as #if.
(glibc_cxx_floatn_4): New.
* fixincl.x: Regenerated.
* tests/base/bits/floatn.h: Regenerated.
2022-10-07 08:56:04 +02:00
|
|
|
fix = {
|
|
|
|
hackname = glibc_cxx_floatn_4;
|
|
|
|
files = bits/floatn.h, "*/bits/floatn.h";
|
|
|
|
select = "^([ \t]*#[ \t]*if __LDBL_MANT_DIG__ == 113 && )defined __cplusplus\n"
|
|
|
|
"(([ \t]*/\\*[^\n]*\\*/\n)?"
|
|
|
|
"[ \t]*typedef[ \t]+[^\n]*[ \t]+_Float128;)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1defined __cplusplus && !__GNUC_PREREQ (13, 0)\n%2";
|
|
|
|
test_text = <<-EOT
|
|
|
|
# if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
|
|
|
|
typedef long double _Float128;
|
|
|
|
# define __CFLOAT128 _Complex long double
|
|
|
|
# endif
|
|
|
|
EOT;
|
|
|
|
};
|
|
|
|
|
2022-10-07 08:59:05 +02:00
|
|
|
fix = {
|
|
|
|
hackname = glibc_cxx_floatn_5;
|
|
|
|
files = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
|
|
|
|
select = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
|
|
|
|
"([ \t]*#[ \t]+error \"_Float128[xX] supported but no )";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
|
|
|
|
test_text = <<-EOT
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
# error "_Float128X supported but no constant suffix"
|
|
|
|
# endif
|
|
|
|
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
|
|
|
# error "_Float128x supported but no type"
|
|
|
|
# endif
|
|
|
|
EOT;
|
|
|
|
};
|
|
|
|
|
2006-10-01 07:47:33 +02:00
|
|
|
/* glibc-2.3.5 defines pthread mutex initializers incorrectly,
|
|
|
|
* so we replace them with versions that correspond to the
|
|
|
|
* definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_mutex_init;
|
|
|
|
files = pthread.h;
|
|
|
|
select = '\{ *\{ *0, *\} *\}';
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
sed = "/define[ \t]\\{1,\\}PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/{\n"
|
2008-09-06 19:57:26 +00:00
|
|
|
"N\ns/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n}";
|
|
|
|
sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
"\\(RECURSIVE\\)_NP\\) }/{ \\1, 0 }/";
|
|
|
|
sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
|
|
|
|
"\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0 }/";
|
|
|
|
sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
|
|
|
|
"\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/";
|
|
|
|
sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
|
|
|
|
"\\(RECURSIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
|
|
|
|
sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
|
|
|
|
"\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0, 0 }/";
|
2008-09-06 19:57:26 +00:00
|
|
|
sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
"\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
|
|
|
|
sed = "/define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/"
|
2006-10-01 07:47:33 +02:00
|
|
|
"N;s/^[ \t]*#[ \t]*"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
"\\(define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n"
|
|
|
|
"[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\\n"
|
|
|
|
"# \\1\\\n"
|
|
|
|
" { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
|
|
|
|
"# else\\\n"
|
|
|
|
"# \\1\\\n"
|
|
|
|
" { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
|
2006-10-01 07:47:33 +02:00
|
|
|
"# endif/";
|
2008-09-06 19:57:26 +00:00
|
|
|
sed = "s/{ \\(0, 0, 0, 0, 0, 0, "
|
|
|
|
"PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/";
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
sed = "/define[ \t]\\{1,\\}PTHREAD_COND_INITIALIZER/"
|
2006-10-01 07:47:33 +02:00
|
|
|
"s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/";
|
|
|
|
|
2006-10-03 07:52:05 +02:00
|
|
|
test_text = <<- _EOText_
|
2008-06-07 22:19:45 +00:00
|
|
|
#define PTHREAD_MUTEX_INITIALIZER \\
|
|
|
|
{ { 0, } }
|
|
|
|
#ifdef __USE_GNU
|
|
|
|
# if __WORDSIZE == 64
|
|
|
|
# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
|
|
|
|
# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
|
|
|
|
# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
|
|
|
|
# else
|
|
|
|
# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
|
|
|
|
# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
|
|
|
|
# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
# define PTHREAD_RWLOCK_INITIALIZER \\
|
|
|
|
{ { 0, } }
|
|
|
|
# ifdef __USE_GNU
|
|
|
|
# if __WORDSIZE == 64
|
|
|
|
# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \\
|
|
|
|
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
|
|
|
|
# else
|
|
|
|
# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
|
|
|
|
{ { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#define PTHREAD_COND_INITIALIZER { { 0, } }
|
|
|
|
_EOText_;
|
2006-10-01 07:47:33 +02:00
|
|
|
};
|
|
|
|
|
2009-04-28 11:21:24 +01:00
|
|
|
/* glibc versions before 2.5 have a version of stdint.h that defines
|
|
|
|
UINT8_C and UINT16_C to produce unsigned constants, as do uClibc
|
|
|
|
versions with stdint.h based on those glibc versions. */
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_stdint;
|
|
|
|
files = stdint.h;
|
|
|
|
select = "GNU C Library";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "# define UINT8_C(c)\tc\n# define UINT16_C(c)\tc";
|
|
|
|
c_fix_arg = "# define UINT8_C\\(c\\)\tc ## U\n# define UINT16_C\\(c\\)\tc ## U";
|
2013-07-06 17:43:46 +00:00
|
|
|
test_text = "/* This file is part of the GNU C Library. */\n"
|
|
|
|
"# define UINT8_C(c)\tc ## U\n"
|
|
|
|
"# define UINT16_C(c)\tc ## U";
|
2009-04-28 11:21:24 +01:00
|
|
|
};
|
|
|
|
|
2010-03-24 23:20:15 +00:00
|
|
|
/* Some versions of glibc have a version of bits/string2.h that
|
|
|
|
produces "value computed is not used" warnings from strncpy; fix
|
|
|
|
this definition by using __builtin_strncpy instead as in newer
|
|
|
|
versions. */
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_strncpy;
|
2013-12-08 21:55:46 +00:00
|
|
|
files = bits/string2.h, '*/bits/string2.h';
|
2010-03-24 23:20:15 +00:00
|
|
|
bypass = "__builtin_strncpy";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)";
|
|
|
|
c_fix_arg = "# define strncpy([^\n]*\\\\\n)*[^\n]*";
|
|
|
|
test_text = <<-EOT
|
|
|
|
# define strncpy(dest, src, n) \
|
|
|
|
(__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \\
|
|
|
|
? (strlen (src) + 1 >= ((size_t) (n)) \\
|
|
|
|
? (char *) memcpy (dest, src, n) \\
|
|
|
|
: strncpy (dest, src, n)) \\
|
|
|
|
: strncpy (dest, src, n)))
|
|
|
|
EOT;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
re PR c/456 (constant expressions constraints (gcc.dg/c90-const-expr-1))
PR c/456
PR c/5675
PR c/19976
PR c/29116
PR c/31871
PR c/35198
fixincludes:
* inclhack.def (glibc_tgmath): New fix.
* fixincl.x: Regenerate.
* tests/base/tgmath.h: New.
gcc:
* builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
void_type_node.
(fold_call_expr): Return a NOP_EXPR from folding rather than the
contained expression.
* c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr):
New.
(c_common_truthvalue_conversion): Use c_save_expr. Do not fold
conditional expressions for C.
(decl_constant_value_for_optimization): Move from
decl_constant_value_for_broken_optimization in c-typeck.c. Check
whether optimizing and that the expression is a VAR_DECL not of
array type instead of doing such checks in the caller. Do not
check pedantic. Call gcc_unreachable for C++.
* c-common.def (C_MAYBE_CONST_EXPR): New.
* c-common.h (c_fully_fold, c_save_expr,
decl_constant_value_for_optimization): New prototypes.
(C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
EXPR_INT_CONST_OPERANDS): Define.
* c-convert.c (convert): Strip nops from expression.
* c-decl.c (groktypename): Take extra parameters expr and
expr_const_operands. Update call to grokdeclarator.
(start_decl): Update call to grokdeclarator. Add statement for
expressions used in type of decl.
(grokparm): Update call to grokdeclarator.
(push_parm_decl): Update call to grokdeclarator.
(build_compound_literal): Add parameter non_const and build a
C_MAYBE_COSNT_EXPR if applicable.
(grokdeclarator): Take extra parameters expr and
expr_const_operands. Track expressions used in declaration
specifiers and declarators. Fold array sizes and track whether
they are constant expressions and whether they are integer
constant expressions.
(parser_xref_tag): Set expr and expr_const_operands fields in
return value.
(grokfield): Update call to grokdeclarator.
(start_function): Update call to grokdeclarator.
(build_null_declspecs): Set expr and expr_const_operands fields in
return value.
(declspecs_add_type): Handle expressions in typeof specifiers.
* c-parser.c (c_parser_declspecs): Set expr and
expr_const_operands fields for declaration specifiers.
(c_parser_enum_specifier): Likewise.
(c_parser_struct_or_union_specifier): Likewise.
(c_parser_typeof_specifier): Likewise. Update call to
groktypename. Fold expression as needed. Return expressions with
type instead of adding statements.
(c_parser_attributes): Update calls to c_parser_expr_list.
(c_parser_statement_after_labels): Fold expression before passing
to objc_build_throw_stmt.
(c_parser_condition): Fold expression.
(c_parser_asm_operands): Fold expression.
(c_parser_conditional_expression): Use c_save_expr. Update call
to build_conditional_expr.
(c_parser_alignof_expression): Update call to groktypename.
(c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
original_code. Fold expression argument of va_arg. Create
C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
argument to va_arg. Update calls to groktypename. Fold array
index for offsetof. Verify that first argument to
__builtin_choose_expr has integer type.
(c_parser_postfix_expression_after_paren_type): Update calls to
groktypename and build_compound_literal. Handle expressions with
side effects in type name.
(c_parser_postfix_expression_after_primary): Update call to
c_parser_expr_list. Set original_code for calls to
__builtin_constant_p.
(c_parser_expr_list): Take extra parameter fold_p. Fold
expressions if requested.
(c_parser_objc_type_name): Update call to groktypename.
(c_parser_objc_synchronized_statement): Fold expression.
(c_parser_objc_receiver): Fold expression.
(c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
(c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
* c-tree.h (CONSTRUCTOR_NON_CONST): Define.
(struct c_typespec): Add elements expr and expr_const_operands.
(struct c_declspecs): Add elements expr and expr_const_operands.
(groktypename, build_conditional_expr, build_compound_literal):
Update prototypes.
(in_late_binary_op): Declare.
* c-typeck.c (note_integer_operands): New function.
(in_late_binary_op): New variable.
(decl_constant_value_for_broken_optimization): Move to c-common.c
and rename to decl_constant_value_for_optimization.
(default_function_array_conversion): Do not strip nops.
(default_conversion): Do not call
decl_constant_value_for_broken_optimization.
(build_array_ref): Do not fold result.
(c_expr_sizeof_expr): Fold operand. Use C_MAYBE_CONST_EXPR for
result when operand is a VLA.
(c_expr_sizeof_type): Update call to groktypename. Handle
expressions included in type name. Use C_MAYBE_CONST_EXPR for
result when operand names a VLA type.
(build_function_call): Update call to build_compound_literal.
Only fold result for calls to __builtin_* functions. Strip
NOP_EXPR from INTEGER_CST returned from such functions. Fold
the function designator.
(convert_arguments): Fold arguments. Update call to
convert_for_assignment.
(build_unary_op): Handle increment and decrement of
C_MAYBE_CONST_EXPR. Move lvalue checks for increment and
decrement earlier. Fold operand of increment and decrement.
Handle address of C_MAYBE_CONST_EXPR. Only fold expression being
built for integer operand. Wrap returns that are INTEGER_CSTs
without being integer constant expressions or that have integer
constant operands without being INTEGER_CSTs.
(lvalue_p): Handle C_MAYBE_CONST_EXPR.
(build_conditional_expr): Add operand ifexp_bcp. Track whether
result is an integer constant expression or can be used in
unevaluated parts of one and avoid folding and wrap as
appropriate. Fold operands before possibly doing -Wsign-compare
warnings.
(build_compound_expr): Wrap result for C99 if operands can be used
in integer constant expressions.
(build_c_cast): Update call to digest_init. Do not ignore
overflow from casting floating-point constants to integers. Wrap
results that could be confused with integer constant expressions,
null pointer constants or floating-point constants.
(c_cast_expr): Update call to groktypename. Handle expressions
included in type name.
(build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR. Fold
lhs inside possible SAVE_EXPR. Fold RHS before assignment.
Update calls to convert_for_assignment.
(convert_for_assignment): Take new parameter
null_pointer_constant. Do not strip nops or call
decl_constant_value_for_broken_optimization. Set
in_late_binary_op for conversions to boolean.
(store_init_value): Update call to digest_init.
(digest_init): Take new parameter null_pointer_constant. Do not
call decl_constant_value_for_broken_optimization. pedwarn for
initializers not constant expressions. Update calls to
convert_for_assignment.
(constructor_nonconst): New.
(struct constructor_stack): Add nonconst element.
(really_start_incremental_init, push_init_level, pop_init_level):
Handle constructor_nonconst and nonconst element.
(set_init_index): Call constant_expression_warning for array
designators.
(output_init_element): Fold value. Set constructor_nonconst as
applicable. pedwarn for initializers not constant expressions.
Update call to digest_init. Call constant_expression_warning
where constant initializers are required.
(process_init_element): Use c_save_expr.
(c_finish_goto_ptr): Fold expression.
(c_finish_return): Fold return value. Update call to
convert_for_assignment.
(c_start_case): Fold switch expression.
(c_process_expr_stmt): Fold expression.
(c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
ensure statement expression is not evaluated in constant
expression.
(build_binary_op): Track whether results are integer constant
expressions or may occur in such, disable folding and wrap results
as applicable. Fold operands for -Wsign-compare warnings unless
in_late_binary_op.
(c_objc_common_truthvalue_conversion): Handle results folded to
integer constants that are not integer constant expressions.
* doc/extend.texi: Document when typeof operands are evaluated,
that condition of __builtin_choose_expr is an integer constant
expression, and more about use of __builtin_constant_p in
initializers.
gcc/objc:
* objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
gcc/testsuite:
* gcc.c-torture/compile/20081108-1.c,
gcc.c-torture/compile/20081108-2.c,
gcc.c-torture/compile/20081108-3.c, gcc.dg/bconstp-2.c,
gcc.dg/bconstp-3.c, gcc.dg/bconstp-4.c, gcc.dg/c90-const-expr-6.c,
gcc.dg/c90-const-expr-7.c, gcc.dg/c90-const-expr-8.c,
gcc.dg/c90-const-expr-9.c, gcc.dg/c90-const-expr-10.c,
gcc.dg/c90-const-expr-11.c, gcc.dg/c99-const-expr-6.c,
gcc.dg/c99-const-expr-7.c, gcc.dg/c99-const-expr-8.c,
gcc.dg/c99-const-expr-9.c, gcc.dg/c99-const-expr-10.c,
gcc.dg/c99-const-expr-11.c, gcc.dg/c99-const-expr-12.c,
gcc.dg/c99-const-expr-13.c, gcc.dg/compare10.c,
gcc.dg/gnu89-const-expr-1.c, gcc.dg/gnu89-const-expr-2.c,
gcc.dg/gnu99-const-expr-1.c, gcc.dg/gnu99-const-expr-2.c,
gcc.dg/gnu99-const-expr-3.c, gcc.dg/vla-12.c, gcc.dg/vla-13.c,
gcc.dg/vla-14.c, gcc.dg/vla-15.c, gcc.dg/vla-16.c: New tests.
* gcc.dg/c90-const-expr-1.c, gcc.dg/c90-const-expr-2.c,
gcc.dg/c90-const-expr-3.c, gcc.dg/c99-const-expr-2.c,
gcc.dg/c99-const-expr-3.c, gcc.dg/c99-static-1.c: Remove XFAILs.
* gcc.dg/c90-const-expr-2.c: Use ZERO in place of 0 in another
case.
* gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c,
gcc.dg/overflow-warn-3.c, gcc.dg/overflow-warn-4.c: Remove
XFAILs. Update expected messages.
* gcc.dg/pr14649-1.c, gcc.dg/pr19984.c, gcc.dg/pr25682.c: Update
expected messages.
* gcc.dg/real-const-1.c: Replace with test from original PR.
* gcc.dg/vect/pr32230.c: Use intermediate cast to __PTRDIFF_TYPE__
when casting from non-constant integer to pointer.
From-SVN: r145254
2009-03-29 19:13:43 +01:00
|
|
|
/* glibc's tgmath.h relies on an expression that is not an integer
|
|
|
|
constant expression being treated as it was by GCC 4.4 and
|
|
|
|
earlier. */
|
|
|
|
fix = {
|
|
|
|
hackname = glibc_tgmath;
|
|
|
|
files = tgmath.h;
|
|
|
|
select = '\(\(\(type\) 0.25\) && \(\(type\) 0.25 - 1\)\)';
|
2009-05-15 15:28:42 +01:00
|
|
|
bypass = "__floating_type\\(type\\) \\\\\n.*__builtin_classify_type";
|
re PR c/456 (constant expressions constraints (gcc.dg/c90-const-expr-1))
PR c/456
PR c/5675
PR c/19976
PR c/29116
PR c/31871
PR c/35198
fixincludes:
* inclhack.def (glibc_tgmath): New fix.
* fixincl.x: Regenerate.
* tests/base/tgmath.h: New.
gcc:
* builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
void_type_node.
(fold_call_expr): Return a NOP_EXPR from folding rather than the
contained expression.
* c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr):
New.
(c_common_truthvalue_conversion): Use c_save_expr. Do not fold
conditional expressions for C.
(decl_constant_value_for_optimization): Move from
decl_constant_value_for_broken_optimization in c-typeck.c. Check
whether optimizing and that the expression is a VAR_DECL not of
array type instead of doing such checks in the caller. Do not
check pedantic. Call gcc_unreachable for C++.
* c-common.def (C_MAYBE_CONST_EXPR): New.
* c-common.h (c_fully_fold, c_save_expr,
decl_constant_value_for_optimization): New prototypes.
(C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
EXPR_INT_CONST_OPERANDS): Define.
* c-convert.c (convert): Strip nops from expression.
* c-decl.c (groktypename): Take extra parameters expr and
expr_const_operands. Update call to grokdeclarator.
(start_decl): Update call to grokdeclarator. Add statement for
expressions used in type of decl.
(grokparm): Update call to grokdeclarator.
(push_parm_decl): Update call to grokdeclarator.
(build_compound_literal): Add parameter non_const and build a
C_MAYBE_COSNT_EXPR if applicable.
(grokdeclarator): Take extra parameters expr and
expr_const_operands. Track expressions used in declaration
specifiers and declarators. Fold array sizes and track whether
they are constant expressions and whether they are integer
constant expressions.
(parser_xref_tag): Set expr and expr_const_operands fields in
return value.
(grokfield): Update call to grokdeclarator.
(start_function): Update call to grokdeclarator.
(build_null_declspecs): Set expr and expr_const_operands fields in
return value.
(declspecs_add_type): Handle expressions in typeof specifiers.
* c-parser.c (c_parser_declspecs): Set expr and
expr_const_operands fields for declaration specifiers.
(c_parser_enum_specifier): Likewise.
(c_parser_struct_or_union_specifier): Likewise.
(c_parser_typeof_specifier): Likewise. Update call to
groktypename. Fold expression as needed. Return expressions with
type instead of adding statements.
(c_parser_attributes): Update calls to c_parser_expr_list.
(c_parser_statement_after_labels): Fold expression before passing
to objc_build_throw_stmt.
(c_parser_condition): Fold expression.
(c_parser_asm_operands): Fold expression.
(c_parser_conditional_expression): Use c_save_expr. Update call
to build_conditional_expr.
(c_parser_alignof_expression): Update call to groktypename.
(c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
original_code. Fold expression argument of va_arg. Create
C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
argument to va_arg. Update calls to groktypename. Fold array
index for offsetof. Verify that first argument to
__builtin_choose_expr has integer type.
(c_parser_postfix_expression_after_paren_type): Update calls to
groktypename and build_compound_literal. Handle expressions with
side effects in type name.
(c_parser_postfix_expression_after_primary): Update call to
c_parser_expr_list. Set original_code for calls to
__builtin_constant_p.
(c_parser_expr_list): Take extra parameter fold_p. Fold
expressions if requested.
(c_parser_objc_type_name): Update call to groktypename.
(c_parser_objc_synchronized_statement): Fold expression.
(c_parser_objc_receiver): Fold expression.
(c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
(c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
* c-tree.h (CONSTRUCTOR_NON_CONST): Define.
(struct c_typespec): Add elements expr and expr_const_operands.
(struct c_declspecs): Add elements expr and expr_const_operands.
(groktypename, build_conditional_expr, build_compound_literal):
Update prototypes.
(in_late_binary_op): Declare.
* c-typeck.c (note_integer_operands): New function.
(in_late_binary_op): New variable.
(decl_constant_value_for_broken_optimization): Move to c-common.c
and rename to decl_constant_value_for_optimization.
(default_function_array_conversion): Do not strip nops.
(default_conversion): Do not call
decl_constant_value_for_broken_optimization.
(build_array_ref): Do not fold result.
(c_expr_sizeof_expr): Fold operand. Use C_MAYBE_CONST_EXPR for
result when operand is a VLA.
(c_expr_sizeof_type): Update call to groktypename. Handle
expressions included in type name. Use C_MAYBE_CONST_EXPR for
result when operand names a VLA type.
(build_function_call): Update call to build_compound_literal.
Only fold result for calls to __builtin_* functions. Strip
NOP_EXPR from INTEGER_CST returned from such functions. Fold
the function designator.
(convert_arguments): Fold arguments. Update call to
convert_for_assignment.
(build_unary_op): Handle increment and decrement of
C_MAYBE_CONST_EXPR. Move lvalue checks for increment and
decrement earlier. Fold operand of increment and decrement.
Handle address of C_MAYBE_CONST_EXPR. Only fold expression being
built for integer operand. Wrap returns that are INTEGER_CSTs
without being integer constant expressions or that have integer
constant operands without being INTEGER_CSTs.
(lvalue_p): Handle C_MAYBE_CONST_EXPR.
(build_conditional_expr): Add operand ifexp_bcp. Track whether
result is an integer constant expression or can be used in
unevaluated parts of one and avoid folding and wrap as
appropriate. Fold operands before possibly doing -Wsign-compare
warnings.
(build_compound_expr): Wrap result for C99 if operands can be used
in integer constant expressions.
(build_c_cast): Update call to digest_init. Do not ignore
overflow from casting floating-point constants to integers. Wrap
results that could be confused with integer constant expressions,
null pointer constants or floating-point constants.
(c_cast_expr): Update call to groktypename. Handle expressions
included in type name.
(build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR. Fold
lhs inside possible SAVE_EXPR. Fold RHS before assignment.
Update calls to convert_for_assignment.
(convert_for_assignment): Take new parameter
null_pointer_constant. Do not strip nops or call
decl_constant_value_for_broken_optimization. Set
in_late_binary_op for conversions to boolean.
(store_init_value): Update call to digest_init.
(digest_init): Take new parameter null_pointer_constant. Do not
call decl_constant_value_for_broken_optimization. pedwarn for
initializers not constant expressions. Update calls to
convert_for_assignment.
(constructor_nonconst): New.
(struct constructor_stack): Add nonconst element.
(really_start_incremental_init, push_init_level, pop_init_level):
Handle constructor_nonconst and nonconst element.
(set_init_index): Call constant_expression_warning for array
designators.
(output_init_element): Fold value. Set constructor_nonconst as
applicable. pedwarn for initializers not constant expressions.
Update call to digest_init. Call constant_expression_warning
where constant initializers are required.
(process_init_element): Use c_save_expr.
(c_finish_goto_ptr): Fold expression.
(c_finish_return): Fold return value. Update call to
convert_for_assignment.
(c_start_case): Fold switch expression.
(c_process_expr_stmt): Fold expression.
(c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
ensure statement expression is not evaluated in constant
expression.
(build_binary_op): Track whether results are integer constant
expressions or may occur in such, disable folding and wrap results
as applicable. Fold operands for -Wsign-compare warnings unless
in_late_binary_op.
(c_objc_common_truthvalue_conversion): Handle results folded to
integer constants that are not integer constant expressions.
* doc/extend.texi: Document when typeof operands are evaluated,
that condition of __builtin_choose_expr is an integer constant
expression, and more about use of __builtin_constant_p in
initializers.
gcc/objc:
* objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
gcc/testsuite:
* gcc.c-torture/compile/20081108-1.c,
gcc.c-torture/compile/20081108-2.c,
gcc.c-torture/compile/20081108-3.c, gcc.dg/bconstp-2.c,
gcc.dg/bconstp-3.c, gcc.dg/bconstp-4.c, gcc.dg/c90-const-expr-6.c,
gcc.dg/c90-const-expr-7.c, gcc.dg/c90-const-expr-8.c,
gcc.dg/c90-const-expr-9.c, gcc.dg/c90-const-expr-10.c,
gcc.dg/c90-const-expr-11.c, gcc.dg/c99-const-expr-6.c,
gcc.dg/c99-const-expr-7.c, gcc.dg/c99-const-expr-8.c,
gcc.dg/c99-const-expr-9.c, gcc.dg/c99-const-expr-10.c,
gcc.dg/c99-const-expr-11.c, gcc.dg/c99-const-expr-12.c,
gcc.dg/c99-const-expr-13.c, gcc.dg/compare10.c,
gcc.dg/gnu89-const-expr-1.c, gcc.dg/gnu89-const-expr-2.c,
gcc.dg/gnu99-const-expr-1.c, gcc.dg/gnu99-const-expr-2.c,
gcc.dg/gnu99-const-expr-3.c, gcc.dg/vla-12.c, gcc.dg/vla-13.c,
gcc.dg/vla-14.c, gcc.dg/vla-15.c, gcc.dg/vla-16.c: New tests.
* gcc.dg/c90-const-expr-1.c, gcc.dg/c90-const-expr-2.c,
gcc.dg/c90-const-expr-3.c, gcc.dg/c99-const-expr-2.c,
gcc.dg/c99-const-expr-3.c, gcc.dg/c99-static-1.c: Remove XFAILs.
* gcc.dg/c90-const-expr-2.c: Use ZERO in place of 0 in another
case.
* gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c,
gcc.dg/overflow-warn-3.c, gcc.dg/overflow-warn-4.c: Remove
XFAILs. Update expected messages.
* gcc.dg/pr14649-1.c, gcc.dg/pr19984.c, gcc.dg/pr25682.c: Update
expected messages.
* gcc.dg/real-const-1.c: Replace with test from original PR.
* gcc.dg/vect/pr32230.c: Use intermediate cast to __PTRDIFF_TYPE__
when casting from non-constant integer to pointer.
From-SVN: r145254
2009-03-29 19:13:43 +01:00
|
|
|
c_fix = format;
|
2013-07-06 17:43:46 +00:00
|
|
|
c_fix_arg = "(__builtin_classify_type ((type) 0) == 8 || "
|
|
|
|
"(__builtin_classify_type ((type) 0) == 9 && "
|
|
|
|
"__builtin_classify_type (__real__ ((type) 0)) == 8))";
|
re PR c/456 (constant expressions constraints (gcc.dg/c90-const-expr-1))
PR c/456
PR c/5675
PR c/19976
PR c/29116
PR c/31871
PR c/35198
fixincludes:
* inclhack.def (glibc_tgmath): New fix.
* fixincl.x: Regenerate.
* tests/base/tgmath.h: New.
gcc:
* builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
void_type_node.
(fold_call_expr): Return a NOP_EXPR from folding rather than the
contained expression.
* c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr):
New.
(c_common_truthvalue_conversion): Use c_save_expr. Do not fold
conditional expressions for C.
(decl_constant_value_for_optimization): Move from
decl_constant_value_for_broken_optimization in c-typeck.c. Check
whether optimizing and that the expression is a VAR_DECL not of
array type instead of doing such checks in the caller. Do not
check pedantic. Call gcc_unreachable for C++.
* c-common.def (C_MAYBE_CONST_EXPR): New.
* c-common.h (c_fully_fold, c_save_expr,
decl_constant_value_for_optimization): New prototypes.
(C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
EXPR_INT_CONST_OPERANDS): Define.
* c-convert.c (convert): Strip nops from expression.
* c-decl.c (groktypename): Take extra parameters expr and
expr_const_operands. Update call to grokdeclarator.
(start_decl): Update call to grokdeclarator. Add statement for
expressions used in type of decl.
(grokparm): Update call to grokdeclarator.
(push_parm_decl): Update call to grokdeclarator.
(build_compound_literal): Add parameter non_const and build a
C_MAYBE_COSNT_EXPR if applicable.
(grokdeclarator): Take extra parameters expr and
expr_const_operands. Track expressions used in declaration
specifiers and declarators. Fold array sizes and track whether
they are constant expressions and whether they are integer
constant expressions.
(parser_xref_tag): Set expr and expr_const_operands fields in
return value.
(grokfield): Update call to grokdeclarator.
(start_function): Update call to grokdeclarator.
(build_null_declspecs): Set expr and expr_const_operands fields in
return value.
(declspecs_add_type): Handle expressions in typeof specifiers.
* c-parser.c (c_parser_declspecs): Set expr and
expr_const_operands fields for declaration specifiers.
(c_parser_enum_specifier): Likewise.
(c_parser_struct_or_union_specifier): Likewise.
(c_parser_typeof_specifier): Likewise. Update call to
groktypename. Fold expression as needed. Return expressions with
type instead of adding statements.
(c_parser_attributes): Update calls to c_parser_expr_list.
(c_parser_statement_after_labels): Fold expression before passing
to objc_build_throw_stmt.
(c_parser_condition): Fold expression.
(c_parser_asm_operands): Fold expression.
(c_parser_conditional_expression): Use c_save_expr. Update call
to build_conditional_expr.
(c_parser_alignof_expression): Update call to groktypename.
(c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
original_code. Fold expression argument of va_arg. Create
C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
argument to va_arg. Update calls to groktypename. Fold array
index for offsetof. Verify that first argument to
__builtin_choose_expr has integer type.
(c_parser_postfix_expression_after_paren_type): Update calls to
groktypename and build_compound_literal. Handle expressions with
side effects in type name.
(c_parser_postfix_expression_after_primary): Update call to
c_parser_expr_list. Set original_code for calls to
__builtin_constant_p.
(c_parser_expr_list): Take extra parameter fold_p. Fold
expressions if requested.
(c_parser_objc_type_name): Update call to groktypename.
(c_parser_objc_synchronized_statement): Fold expression.
(c_parser_objc_receiver): Fold expression.
(c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
(c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
* c-tree.h (CONSTRUCTOR_NON_CONST): Define.
(struct c_typespec): Add elements expr and expr_const_operands.
(struct c_declspecs): Add elements expr and expr_const_operands.
(groktypename, build_conditional_expr, build_compound_literal):
Update prototypes.
(in_late_binary_op): Declare.
* c-typeck.c (note_integer_operands): New function.
(in_late_binary_op): New variable.
(decl_constant_value_for_broken_optimization): Move to c-common.c
and rename to decl_constant_value_for_optimization.
(default_function_array_conversion): Do not strip nops.
(default_conversion): Do not call
decl_constant_value_for_broken_optimization.
(build_array_ref): Do not fold result.
(c_expr_sizeof_expr): Fold operand. Use C_MAYBE_CONST_EXPR for
result when operand is a VLA.
(c_expr_sizeof_type): Update call to groktypename. Handle
expressions included in type name. Use C_MAYBE_CONST_EXPR for
result when operand names a VLA type.
(build_function_call): Update call to build_compound_literal.
Only fold result for calls to __builtin_* functions. Strip
NOP_EXPR from INTEGER_CST returned from such functions. Fold
the function designator.
(convert_arguments): Fold arguments. Update call to
convert_for_assignment.
(build_unary_op): Handle increment and decrement of
C_MAYBE_CONST_EXPR. Move lvalue checks for increment and
decrement earlier. Fold operand of increment and decrement.
Handle address of C_MAYBE_CONST_EXPR. Only fold expression being
built for integer operand. Wrap returns that are INTEGER_CSTs
without being integer constant expressions or that have integer
constant operands without being INTEGER_CSTs.
(lvalue_p): Handle C_MAYBE_CONST_EXPR.
(build_conditional_expr): Add operand ifexp_bcp. Track whether
result is an integer constant expression or can be used in
unevaluated parts of one and avoid folding and wrap as
appropriate. Fold operands before possibly doing -Wsign-compare
warnings.
(build_compound_expr): Wrap result for C99 if operands can be used
in integer constant expressions.
(build_c_cast): Update call to digest_init. Do not ignore
overflow from casting floating-point constants to integers. Wrap
results that could be confused with integer constant expressions,
null pointer constants or floating-point constants.
(c_cast_expr): Update call to groktypename. Handle expressions
included in type name.
(build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR. Fold
lhs inside possible SAVE_EXPR. Fold RHS before assignment.
Update calls to convert_for_assignment.
(convert_for_assignment): Take new parameter
null_pointer_constant. Do not strip nops or call
decl_constant_value_for_broken_optimization. Set
in_late_binary_op for conversions to boolean.
(store_init_value): Update call to digest_init.
(digest_init): Take new parameter null_pointer_constant. Do not
call decl_constant_value_for_broken_optimization. pedwarn for
initializers not constant expressions. Update calls to
convert_for_assignment.
(constructor_nonconst): New.
(struct constructor_stack): Add nonconst element.
(really_start_incremental_init, push_init_level, pop_init_level):
Handle constructor_nonconst and nonconst element.
(set_init_index): Call constant_expression_warning for array
designators.
(output_init_element): Fold value. Set constructor_nonconst as
applicable. pedwarn for initializers not constant expressions.
Update call to digest_init. Call constant_expression_warning
where constant initializers are required.
(process_init_element): Use c_save_expr.
(c_finish_goto_ptr): Fold expression.
(c_finish_return): Fold return value. Update call to
convert_for_assignment.
(c_start_case): Fold switch expression.
(c_process_expr_stmt): Fold expression.
(c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
ensure statement expression is not evaluated in constant
expression.
(build_binary_op): Track whether results are integer constant
expressions or may occur in such, disable folding and wrap results
as applicable. Fold operands for -Wsign-compare warnings unless
in_late_binary_op.
(c_objc_common_truthvalue_conversion): Handle results folded to
integer constants that are not integer constant expressions.
* doc/extend.texi: Document when typeof operands are evaluated,
that condition of __builtin_choose_expr is an integer constant
expression, and more about use of __builtin_constant_p in
initializers.
gcc/objc:
* objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
gcc/testsuite:
* gcc.c-torture/compile/20081108-1.c,
gcc.c-torture/compile/20081108-2.c,
gcc.c-torture/compile/20081108-3.c, gcc.dg/bconstp-2.c,
gcc.dg/bconstp-3.c, gcc.dg/bconstp-4.c, gcc.dg/c90-const-expr-6.c,
gcc.dg/c90-const-expr-7.c, gcc.dg/c90-const-expr-8.c,
gcc.dg/c90-const-expr-9.c, gcc.dg/c90-const-expr-10.c,
gcc.dg/c90-const-expr-11.c, gcc.dg/c99-const-expr-6.c,
gcc.dg/c99-const-expr-7.c, gcc.dg/c99-const-expr-8.c,
gcc.dg/c99-const-expr-9.c, gcc.dg/c99-const-expr-10.c,
gcc.dg/c99-const-expr-11.c, gcc.dg/c99-const-expr-12.c,
gcc.dg/c99-const-expr-13.c, gcc.dg/compare10.c,
gcc.dg/gnu89-const-expr-1.c, gcc.dg/gnu89-const-expr-2.c,
gcc.dg/gnu99-const-expr-1.c, gcc.dg/gnu99-const-expr-2.c,
gcc.dg/gnu99-const-expr-3.c, gcc.dg/vla-12.c, gcc.dg/vla-13.c,
gcc.dg/vla-14.c, gcc.dg/vla-15.c, gcc.dg/vla-16.c: New tests.
* gcc.dg/c90-const-expr-1.c, gcc.dg/c90-const-expr-2.c,
gcc.dg/c90-const-expr-3.c, gcc.dg/c99-const-expr-2.c,
gcc.dg/c99-const-expr-3.c, gcc.dg/c99-static-1.c: Remove XFAILs.
* gcc.dg/c90-const-expr-2.c: Use ZERO in place of 0 in another
case.
* gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c,
gcc.dg/overflow-warn-3.c, gcc.dg/overflow-warn-4.c: Remove
XFAILs. Update expected messages.
* gcc.dg/pr14649-1.c, gcc.dg/pr19984.c, gcc.dg/pr25682.c: Update
expected messages.
* gcc.dg/real-const-1.c: Replace with test from original PR.
* gcc.dg/vect/pr32230.c: Use intermediate cast to __PTRDIFF_TYPE__
when casting from non-constant integer to pointer.
From-SVN: r145254
2009-03-29 19:13:43 +01:00
|
|
|
test_text = "# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))";
|
|
|
|
};
|
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
/*
|
2003-07-12 19:25:59 +00:00
|
|
|
* Fix these files to use the types we think they should for
|
|
|
|
* ptrdiff_t, size_t, and wchar_t.
|
|
|
|
*
|
|
|
|
* This defines the types in terms of macros predefined by our 'cpp'.
|
|
|
|
* This is supposedly necessary for glibc's handling of these types.
|
|
|
|
* It's probably not necessary for anyone else, but it doesn't hurt.
|
2001-05-27 18:21:04 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = gnu_types;
|
|
|
|
files = "sys/types.h";
|
|
|
|
files = "stdlib.h";
|
|
|
|
files = "sys/stdtypes.h";
|
|
|
|
files = "stddef.h";
|
|
|
|
files = "memory.h";
|
|
|
|
files = "unistd.h";
|
|
|
|
bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
|
|
|
|
select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
|
|
|
|
c_fix = gnu_type;
|
2004-11-26 22:00:51 +00:00
|
|
|
/* The Solaris 10 headers already define these types correctly. */
|
|
|
|
mach = '*-*-solaris2.1[0-9]*';
|
|
|
|
not_machine = true;
|
2001-05-27 18:21:04 +00:00
|
|
|
|
|
|
|
test_text = "typedef long int ptrdiff_t; /* long int */\n"
|
|
|
|
"typedef uint_t size_t; /* uint_t */\n"
|
|
|
|
"typedef ushort_t wchar_t; /* ushort_t */";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2000-07-13 14:47:55 +00:00
|
|
|
* Fix HP & Sony's use of "../machine/xxx.h"
|
|
|
|
* to refer to: <machine/xxx.h>
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 18:54:45 +00:00
|
|
|
hackname = hp_inline;
|
|
|
|
files = sys/spinlock.h;
|
|
|
|
files = machine/machparam.h;
|
|
|
|
select = "[ \t]*#[ \t]*include[ \t]+" '"\.\./machine/';
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1<machine/%2.h>";
|
|
|
|
|
|
|
|
c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)" '"\.\./machine/'
|
|
|
|
'([a-z]+)\.h"';
|
|
|
|
|
|
|
|
test_text = ' # include "../machine/mumble.h"';
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Check for (...) in C++ code in HP/UX sys/file.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-09 16:21:08 +00:00
|
|
|
hackname = hp_sysfile;
|
|
|
|
files = sys/file.h;
|
|
|
|
select = "HPUX_SOURCE";
|
2000-05-20 18:54:45 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "(struct file *, ...)";
|
|
|
|
c_fix_arg = '\(\.\.\.\)';
|
|
|
|
|
2000-05-12 21:59:39 +00:00
|
|
|
test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2008-09-06 19:57:26 +00:00
|
|
|
/*
|
|
|
|
* Un-Hide a series of five FP defines from post-1999 compliance GCC:
|
|
|
|
* FP_NORMAL, FP_ZERO, FP_INFINITE, FP_SUBNORMAL and FP_NAN
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hppa_hpux_fp_macros;
|
|
|
|
mach = "hppa*-hp-hpux11*";
|
|
|
|
files = math.h;
|
|
|
|
select = "#[ \t]*define[ \t]*FP_NORMAL.*\n"
|
|
|
|
"#[ \t]*define[ \t]*FP_ZERO.*\n"
|
|
|
|
"#[ \t]*define[ \t]*FP_INFINITE.*\n"
|
|
|
|
"#[ \t]*define[ \t]*FP_SUBNORMAL.*\n"
|
|
|
|
"#[ \t]*define[ \t]*FP_NAN.*\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOFix_
|
|
|
|
#endif /* _INCLUDE_HPUX_SOURCE */
|
|
|
|
|
|
|
|
#if defined(_INCLUDE_HPUX_SOURCE) || \
|
|
|
|
(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
|
|
|
|
%0#endif
|
|
|
|
|
|
|
|
#ifdef _INCLUDE_HPUX_SOURCE
|
|
|
|
|
|
|
|
_EOFix_;
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"# define FP_NORMAL 0\n"
|
|
|
|
"# define FP_ZERO 1\n"
|
|
|
|
"# define FP_INFINITE 2\n"
|
|
|
|
"# define FP_SUBNORMAL 3\n"
|
|
|
|
"# define FP_NAN 4\n";
|
|
|
|
};
|
|
|
|
|
2001-06-14 03:51:26 +00:00
|
|
|
/*
|
2001-06-28 03:13:49 +00:00
|
|
|
* Delete C++ double pow (double, int) inline function from HP-UX 10 & 11
|
2001-06-14 03:51:26 +00:00
|
|
|
* math.h to prevent clash with define in c_std/bits/std_cmath.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux10_cpp_pow_inline;
|
2001-07-21 04:04:27 +00:00
|
|
|
files = fixinc-test-limits.h, math.h;
|
2001-06-14 03:51:26 +00:00
|
|
|
select = <<- END_POW_INLINE
|
|
|
|
^# +ifdef +__cplusplus
|
2003-07-08 20:42:19 +00:00
|
|
|
+\}
|
|
|
|
+inline +double +pow\(double +__d,int +__expon\) +\{
|
2001-06-14 03:51:26 +00:00
|
|
|
[ ]+return +pow\(__d,\(double\)__expon\);
|
2003-07-08 20:42:19 +00:00
|
|
|
+\}
|
|
|
|
+extern +"C" +\{
|
2001-06-14 03:51:26 +00:00
|
|
|
#else
|
|
|
|
# +endif
|
|
|
|
END_POW_INLINE;
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"# ifdef __cplusplus\n"
|
|
|
|
" }\n"
|
|
|
|
" inline double pow(double __d,int __expon) {\n"
|
|
|
|
"\t return pow(__d,(double)__expon);\n"
|
|
|
|
" }\n"
|
|
|
|
' extern "C"' " {\n"
|
|
|
|
"#else\n"
|
|
|
|
"# endif";
|
|
|
|
};
|
|
|
|
|
2001-06-28 03:13:49 +00:00
|
|
|
fix = {
|
|
|
|
hackname = hpux11_cpp_pow_inline;
|
|
|
|
files = math.h;
|
2003-07-08 20:42:19 +00:00
|
|
|
select = " +inline double pow\\(double d,int expon\\) \\{\n"
|
2001-06-28 03:13:49 +00:00
|
|
|
" +return pow\\(d, \\(double\\)expon\\);\n"
|
2003-07-08 20:42:19 +00:00
|
|
|
" +\\}\n";
|
2001-06-28 03:13:49 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
" inline double pow(double d,int expon) {\n"
|
|
|
|
" return pow(d, (double)expon);\n"
|
|
|
|
" }\n";
|
|
|
|
};
|
2001-06-14 03:51:26 +00:00
|
|
|
|
2022-02-27 19:47:25 +00:00
|
|
|
/*
|
|
|
|
* This hack fixes the declarations of _DINFINITY, _SINFINITY and _SQNAN.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_math_constexpr;
|
|
|
|
mach = "*-hp-hpux11*";
|
|
|
|
files = math.h;
|
|
|
|
sed = "s@^[ \t]*extern[ \t]*const[ \t]*double[ \t]*_DINFINITY;"
|
|
|
|
"[ \t]*$@# define _DINFINITY (__builtin_inf ())@";
|
|
|
|
sed = "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SINFINITY;"
|
|
|
|
"[ \t]*$@# define _SINFINITY (__builtin_inff ())@";
|
|
|
|
sed = "s@^[ \t]*extern[ \t]*const[ \t]*float[ \t]*_SQNAN;"
|
|
|
|
"[ \t]*$@# define _SQNAN (__builtin_nanf (\\\"\\\"))@";
|
|
|
|
test_text = " extern const double _DINFINITY;\n"
|
|
|
|
" extern const float _SINFINITY;\n"
|
|
|
|
" extern const float _SQNAN;";
|
|
|
|
};
|
|
|
|
|
2003-02-19 02:06:11 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux 10.X missing ctype declarations 1
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux10_ctype_declarations1;
|
|
|
|
files = ctype.h;
|
|
|
|
select = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)";
|
|
|
|
bypass = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\(";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef _PROTOTYPES\n"
|
|
|
|
"extern int __tolower(int);\n"
|
|
|
|
"extern int __toupper(int);\n"
|
|
|
|
"#else /* NOT _PROTOTYPES */\n"
|
|
|
|
"extern int __tolower();\n"
|
|
|
|
"extern int __toupper();\n"
|
|
|
|
"#endif /* _PROTOTYPES */\n\n"
|
|
|
|
"%0\n";
|
|
|
|
|
|
|
|
test_text = "# define _toupper(__c) __toupper(__c)\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix hpux 10.X missing ctype declarations 2
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux10_ctype_declarations2;
|
|
|
|
files = ctype.h;
|
|
|
|
select = "^# if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)";
|
|
|
|
bypass = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\(";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n\n"
|
|
|
|
"#ifdef _PROTOTYPES\n"
|
|
|
|
" extern int _isalnum(int);\n"
|
|
|
|
" extern int _isalpha(int);\n"
|
|
|
|
" extern int _iscntrl(int);\n"
|
|
|
|
" extern int _isdigit(int);\n"
|
|
|
|
" extern int _isgraph(int);\n"
|
|
|
|
" extern int _islower(int);\n"
|
|
|
|
" extern int _isprint(int);\n"
|
|
|
|
" extern int _ispunct(int);\n"
|
|
|
|
" extern int _isspace(int);\n"
|
|
|
|
" extern int _isupper(int);\n"
|
|
|
|
" extern int _isxdigit(int);\n"
|
|
|
|
"# else /* not _PROTOTYPES */\n"
|
|
|
|
" extern int _isalnum();\n"
|
|
|
|
" extern int _isalpha();\n"
|
|
|
|
" extern int _iscntrl();\n"
|
|
|
|
" extern int _isdigit();\n"
|
|
|
|
" extern int _isgraph();\n"
|
|
|
|
" extern int _islower();\n"
|
|
|
|
" extern int _isprint();\n"
|
|
|
|
" extern int _ispunct();\n"
|
|
|
|
" extern int _isspace();\n"
|
|
|
|
" extern int _isupper();\n"
|
|
|
|
" extern int _isxdigit();\n"
|
|
|
|
"#endif /* _PROTOTYPES */\n";
|
|
|
|
|
|
|
|
test_text = "# if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n"
|
|
|
|
" extern unsigned int *__SB_masks;\n";
|
|
|
|
};
|
|
|
|
|
2004-01-21 20:08:22 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux 10.X missing stdio declarations
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux10_stdio_declarations;
|
|
|
|
files = stdio.h;
|
|
|
|
select = "^#[ \t]*define _iob[ \t]*__iob";
|
|
|
|
bypass = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n\n"
|
|
|
|
"# if defined(__STDC__) || defined(__cplusplus)\n"
|
|
|
|
" extern int snprintf(char *, size_t, const char *, ...);\n"
|
|
|
|
" extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
|
|
|
|
"# else /* not __STDC__) || __cplusplus */\n"
|
|
|
|
" extern int snprintf();\n"
|
|
|
|
" extern int vsnprintf();\n"
|
|
|
|
"# endif /* __STDC__) || __cplusplus */\n";
|
|
|
|
|
|
|
|
test_text = "# define _iob __iob\n";
|
|
|
|
};
|
|
|
|
|
2017-02-11 21:11:44 +00:00
|
|
|
/*
|
|
|
|
* The HP-UX stddef.h is replaced by gcc's. It doesn't include sys/stdsyms.h.
|
|
|
|
* As a result, we need to include sys/stdsyms.h in alloca.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hppa_hpux11_alloca;
|
|
|
|
mach = "hppa*-*-hpux11*";
|
|
|
|
files = alloca.h;
|
|
|
|
select = "#ifndef _STDDEF_INCLUDED";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef _SYS_STDSYMS_INCLUDED\n"
|
|
|
|
"# include <sys/stdsyms.h>\n"
|
|
|
|
"#endif /* _SYS_STDSYMS_INCLUDED */\n\n"
|
|
|
|
"%0";
|
|
|
|
|
|
|
|
test_text = "#ifndef _STDDEF_INCLUDED";
|
|
|
|
};
|
|
|
|
|
2002-10-27 17:02:29 +00:00
|
|
|
/*
|
|
|
|
* Make sure hpux defines abs in header.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_abs;
|
2011-08-23 21:32:34 +00:00
|
|
|
mach = "*-hp-hpux11*";
|
2002-10-27 17:02:29 +00:00
|
|
|
files = stdlib.h;
|
|
|
|
select = "ifndef _MATH_INCLUDED";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)";
|
|
|
|
test_text = "#ifndef _MATH_INCLUDED";
|
|
|
|
};
|
|
|
|
|
2015-03-28 17:27:22 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux11 __LWP_RWLOCK_VALID define
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_lwp_rwlock_valid;
|
|
|
|
mach = "*-hp-hpux11*";
|
|
|
|
files = sys/pthread.h;
|
|
|
|
select = "#define __LWP_RWLOCK_VALID[ \t]*0x8c91";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define __LWP_RWLOCK_VALID -29551";
|
|
|
|
test_text = "#define __LWP_RWLOCK_VALID 0x8c91";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* hpux sendfile()
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_extern_sendfile;
|
|
|
|
mach = "*-hp-hpux11.[12]*";
|
|
|
|
files = sys/socket.h;
|
|
|
|
select = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
|
|
|
|
test_text = " extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n"
|
|
|
|
" const struct iovec *, int));\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* hpux sendpath()
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_extern_sendpath;
|
|
|
|
mach = "*-hp-hpux11.[12]*";
|
|
|
|
files = sys/socket.h;
|
|
|
|
select = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
|
|
|
|
test_text = " extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n"
|
|
|
|
" const struct iovec *, int));\n";
|
|
|
|
};
|
|
|
|
|
2000-05-17 14:59:20 +00:00
|
|
|
/*
|
|
|
|
* Keep HP-UX 11 from stomping on C++ math namespace
|
|
|
|
* with defines for fabsf.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_fabsf;
|
2016-11-21 16:09:47 +00:00
|
|
|
mach = "*-hp-hpux11*";
|
2000-05-17 14:59:20 +00:00
|
|
|
files = math.h;
|
|
|
|
select = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#ifdef _PA_RISC\n"
|
|
|
|
"# define fabsf(x) ((float)fabs((double)(float)(x)))\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
2008-09-06 19:57:26 +00:00
|
|
|
/*
|
2017-02-25 20:29:39 +00:00
|
|
|
* The definitions for PTHREAD_MUTEX_INITIALIZER and similar initializers
|
|
|
|
* in pthread.h need to be constant expressions to be standard complient.
|
|
|
|
* As a result, we need to remove the void * casts in the initializers
|
|
|
|
* (see hpux11_pthread_const) and to change the __(M|C|RW)POINTER defines
|
|
|
|
* to use the long type.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_pthread_pointer;
|
|
|
|
mach = "*-hp-hpux11.[0-3]*";
|
|
|
|
files = sys/pthread.h;
|
|
|
|
select = "(void[ \t]*\\*)(m|c|rw)(_ptr)";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "long\t%2%3";
|
|
|
|
test_text = "#define __MPOINTER\t\tvoid\t *m_ptr";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Remove void pointer cast and fix C99 constant in __POINTER_SET defines.
|
2008-09-06 19:57:26 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_pthread_const;
|
|
|
|
mach = "*-hp-hpux11.[0-3]*";
|
|
|
|
files = sys/pthread.h;
|
2017-02-25 20:29:39 +00:00
|
|
|
select = "^(#define[ \t]+__POINTER_SET[ \t0,]*)(.*\\))";
|
2008-09-06 19:57:26 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
2017-02-25 20:29:39 +00:00
|
|
|
c_fix_arg = "%11";
|
2008-09-06 19:57:26 +00:00
|
|
|
test_text = "#define __POINTER_SET\t\t((void *) 1LL)";
|
|
|
|
};
|
|
|
|
|
2001-09-13 02:13:41 +00:00
|
|
|
/*
|
|
|
|
* Prevent HP-UX 11 from defining __size_t and preventing size_t from
|
|
|
|
* being defined by having it define _hpux_size_t instead.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_size_t;
|
2001-12-20 04:09:40 +00:00
|
|
|
mach = "*-hp-hpux11*";
|
|
|
|
select = "__size_t";
|
2001-09-13 02:13:41 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "_hpux_size_t";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#define __size_t size_t\n"
|
|
|
|
" extern int getpwuid_r( char *, __size_t, struct passwd **);\n";
|
|
|
|
};
|
|
|
|
|
2003-10-25 17:43:13 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux 11.00 broken snprintf declaration
|
|
|
|
* (third argument is char *, needs to be const char * to prevent
|
|
|
|
* spurious warnings with -Wwrite-strings or in C++).
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux11_snprintf;
|
|
|
|
files = stdio.h;
|
|
|
|
select = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)'
|
|
|
|
' *(char *\*, *\.\.\.\);)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = '%1 const %3';
|
|
|
|
|
|
|
|
test_text = "extern int snprintf(char *, size_t, char *, ...);\n"
|
|
|
|
"extern int snprintf(char *, __size_t, char *, ...);\n"
|
|
|
|
"extern int snprintf(char *, _hpux_size_t, char *, ...);";
|
|
|
|
};
|
|
|
|
|
2003-02-11 20:43:41 +00:00
|
|
|
/*
|
2003-02-19 02:06:11 +00:00
|
|
|
* Fix hpux 11.00 broken vsnprintf declaration
|
2003-02-11 20:43:41 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2003-02-19 02:06:11 +00:00
|
|
|
hackname = hpux11_vsnprintf;
|
|
|
|
files = stdio.h;
|
|
|
|
select = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, '
|
|
|
|
'const char \*,) __va__list\);';
|
2003-02-11 20:43:41 +00:00
|
|
|
c_fix = format;
|
2003-02-19 02:06:11 +00:00
|
|
|
c_fix_arg = "%1 __va_list);";
|
2003-02-11 20:43:41 +00:00
|
|
|
|
2003-02-19 02:06:11 +00:00
|
|
|
test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,'
|
|
|
|
' __va__list);';
|
2003-02-11 20:43:41 +00:00
|
|
|
};
|
|
|
|
|
2016-02-01 00:54:22 +00:00
|
|
|
/*
|
|
|
|
* Fix missing const in hpux vsscanf declaration
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_vsscanf;
|
|
|
|
mach = "*-*-hpux*";
|
|
|
|
files = stdio.h;
|
|
|
|
select = '(extern int vsscanf\()char';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1const char";
|
|
|
|
|
|
|
|
test_text = 'extern int vsscanf(char *, const char *, __va_list);';
|
|
|
|
};
|
|
|
|
|
2003-02-11 20:43:41 +00:00
|
|
|
/*
|
2003-02-19 02:06:11 +00:00
|
|
|
* get rid of bogus inline definitions in HP-UX 8.0
|
2003-02-11 20:43:41 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2003-02-19 02:06:11 +00:00
|
|
|
hackname = hpux8_bogus_inlines;
|
|
|
|
files = math.h;
|
|
|
|
select = inline;
|
2004-11-09 23:14:06 +00:00
|
|
|
bypass = "__GNUG__";
|
2003-02-19 02:06:11 +00:00
|
|
|
sed = "s@inline int abs(int [a-z][a-z]*) {.*}"
|
|
|
|
"@extern \"C\" int abs(int);@";
|
|
|
|
sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
|
|
|
|
sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
|
|
|
|
sed = "s@inline double sqr(double [a-z][a-z]*) {.*}@@";
|
|
|
|
test_text = "inline int abs(int v) { return (v>=0)?v:-v; }\n"
|
|
|
|
"inline double sqr(double v) { return v**0.5; }";
|
2003-02-11 20:43:41 +00:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* hpux intptr
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_intptr;
|
|
|
|
mach = "*-hp-hpux11.3*";
|
|
|
|
files = stdint-hpux11.h, stdint.h;
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MAX[ \t]*"
|
|
|
|
"INT32_MAX[ \t]*$@#define PTRDIFF_MAX (2147483647l)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MIN[ \t]*"
|
|
|
|
"INT32_MIN[ \t]*$@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MAX[ \t]*"
|
|
|
|
"INT32_MAX[ \t]*$@#define INTPTR_MAX (2147483647l)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MIN[ \t]*"
|
|
|
|
"INT32_MIN[ \t]*$@#define INTPTR_MIN (-INTPTR_MAX - 1)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINTPTR_MAX[ \t]*"
|
|
|
|
"UINT32_MAX[ \t]*$@#define UINTPTR_MAX (4294967295ul)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*"
|
|
|
|
"UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@";
|
|
|
|
test_text = "#define PTRDIFF_MAX INT32_MAX\n"
|
|
|
|
"#define PTRDIFF_MIN INT32_MIN\n"
|
|
|
|
"#define INTPTR_MAX INT32_MAX\n"
|
|
|
|
"#define INTPTR_MIN INT32_MIN\n"
|
|
|
|
"#define UINTPTR_MAX UINT32_MAX\n"
|
|
|
|
"#define SIZE_MAX UINT32_MAX\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_inttypes;
|
|
|
|
mach = "*-hp-hpux11.[23]*";
|
|
|
|
files = inttypes.h;
|
|
|
|
files = stdint-hpux11.h, stdint.h;
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
|
|
|
|
"__CONCAT_U__(__c)[ \t]*$@#define UINT8_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
|
|
|
|
"__CONCAT_U__(__c)[ \t]*$@#define UINT16_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT32_C(__c)[ \t]*"
|
|
|
|
"__CONCAT__(__c,l)[ \t]*$@#define INT32_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT32_C(__c)[ \t].*$@"
|
|
|
|
"#define UINT32_C(__c) __CONCAT__(__c,u)@";
|
|
|
|
test_text = "#define UINT8_C(__c) __CONCAT_U__(__c)\n"
|
|
|
|
"#define UINT16_C(__c) __CONCAT_U__(__c)\n"
|
|
|
|
"#define INT32_C(__c) __CONCAT__(__c,l)\n"
|
|
|
|
"#define UINT32_C(__c) __CONCAT__(__c,ul)\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_inttypes2;
|
|
|
|
mach = "*-hp-hpux11.2*";
|
|
|
|
files = stdint-hpux11.h, stdint.h;
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT8_C(__c)[ \t]*"
|
|
|
|
"((signed char)(__c))[ \t]*$@#define INT8_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
|
|
|
|
"((unsigned char)(__c))[ \t]*$@#define UINT8_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT16_C(__c)[ \t]*"
|
|
|
|
"((short)(__c))[ \t]*$@#define INT16_C(__c) (__c)@";
|
|
|
|
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
|
|
|
|
"((unsigned short)(__c))[ \t]*$@#define UINT16_C(__c) (__c)@";
|
|
|
|
test_text = "# define INT8_C(__c) ((signed char)(__c))\n"
|
|
|
|
"# define UINT8_C(__c) ((unsigned char)(__c))\n"
|
|
|
|
"# define INT16_C(__c) ((short)(__c))\n"
|
|
|
|
"# define UINT16_C(__c) ((unsigned short)(__c))\n";
|
|
|
|
};
|
|
|
|
|
2019-12-30 20:33:17 +00:00
|
|
|
/*
|
|
|
|
* Fix broken and missing defines in inttypes.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_inttypes3;
|
|
|
|
mach = "hppa*-hp-hpux11*";
|
|
|
|
files = inttypes.h;
|
|
|
|
select = "#define[ \t]INTPTR_MAX[ \t]*\n"
|
|
|
|
"#define[ \t]UINTPTR_MAX[ \t]*\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#undef SIZE_MAX\n"
|
|
|
|
"#define SIZE_MAX __SIZE_MAX__\n"
|
|
|
|
"#ifdef __INTPTR_MAX__\n"
|
|
|
|
"# undef INTPTR_MAX\n"
|
|
|
|
"# define INTPTR_MAX __INTPTR_MAX__\n"
|
|
|
|
"# undef INTPTR_MIN\n"
|
|
|
|
"# define INTPTR_MIN (-INTPTR_MAX - 1)\n"
|
|
|
|
"#endif\n"
|
|
|
|
"#ifdef __UINTPTR_MAX__\n"
|
|
|
|
"# undef UINTPTR_MAX\n"
|
|
|
|
"# define UINTPTR_MAX __UINTPTR_MAX__\n"
|
|
|
|
"#endif\n";
|
|
|
|
test_text = "#define INTPTR_MAX\n"
|
|
|
|
"#define UINTPTR_MAX\n";
|
|
|
|
};
|
|
|
|
|
2020-01-25 12:20:24 -05:00
|
|
|
/*
|
|
|
|
* Fix missing SCNuMAX defines in inttypes.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_inttypes4;
|
|
|
|
mach = "hppa*-hp-hpux11.[01]*";
|
|
|
|
files = inttypes.h;
|
|
|
|
sed = "/^[ \t]*#[ \t]*define[ \t]*SCNxMAX[ \t]*SCNx64/a\\\n"
|
|
|
|
"#define SCNuMAX \t SCNu64\n";
|
|
|
|
sed = "/^[ \t]*#[ \t]*define[ \t]*SCNxMAX[ \t]*SCNx32/a\\\n"
|
|
|
|
"#define SCNuMAX \t SCNu32\n";
|
|
|
|
test_text = "#define SCNxMAX SCNx64\n"
|
|
|
|
"#define SCNxMAX SCNx32\n";
|
|
|
|
};
|
|
|
|
|
2021-08-30 19:31:40 +00:00
|
|
|
/*
|
|
|
|
* Fix missing PRIdPTR defines in inttypes.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_c99_inttypes5;
|
|
|
|
mach = "hppa*-hp-hpux11.[01]*";
|
|
|
|
files = inttypes.h;
|
|
|
|
select = "#ifndef[ \t]_KERNEL[ \t]*\n";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __LP64__\n"
|
|
|
|
"#define PRIdPTR\t\tPRId32\n"
|
|
|
|
"#define PRIiPTR\t\tPRIi32\n"
|
|
|
|
"#define PRIoPTR\t\tPRIo32\n"
|
|
|
|
"#define PRIuPTR\t\tPRIu32\n"
|
|
|
|
"#define PRIxPTR\t\tPRIx32\n"
|
|
|
|
"#define PRIXPTR\t\tPRIX32\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define PRIdPTR\t\tPRId64\n"
|
|
|
|
"#define PRIiPTR\t\tPRIi64\n"
|
|
|
|
"#define PRIoPTR\t\tPRIo64\n"
|
|
|
|
"#define PRIuPTR\t\tPRIu64\n"
|
|
|
|
"#define PRIxPTR\t\tPRIx64\n"
|
|
|
|
"#define PRIXPTR\t\tPRIX64\n"
|
|
|
|
"#endif\n\n"
|
|
|
|
"#ifndef _KERNEL\n";
|
|
|
|
test_text = "#ifndef _KERNEL\n";
|
|
|
|
};
|
|
|
|
|
2003-02-11 20:43:41 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux broken ctype macros
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_ctype_macros;
|
|
|
|
files = ctype.h;
|
|
|
|
select = '((: |\()__SB_masks \? )'
|
|
|
|
'(__SB_masks\[__(alnum|c)\] & _IS)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(int)%3";
|
|
|
|
|
|
|
|
test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n"
|
|
|
|
"# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* hpux errno()
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_extern_errno;
|
|
|
|
mach = "*-hp-hpux10.*";
|
|
|
|
mach = "*-hp-hpux11.[0-2]*";
|
|
|
|
files = errno.h;
|
|
|
|
select = "^[ \t]*extern int errno;$";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"extern \"C\" {\n"
|
|
|
|
"#endif\n"
|
|
|
|
"%0\n"
|
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"}\n"
|
|
|
|
"#endif";
|
|
|
|
test_text = " extern int errno;\n";
|
|
|
|
};
|
|
|
|
|
2005-03-15 17:37:03 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_htonl;
|
|
|
|
files = netinet/in.h;
|
2010-09-07 14:47:21 +00:00
|
|
|
select = "#ifndef _XOPEN_SOURCE_EXTENDED[ \t]*\n"
|
2005-03-15 17:37:03 +00:00
|
|
|
"(/\\*\n"
|
|
|
|
" \\* Macros for number representation conversion\\.\n"
|
|
|
|
" \\*/\n"
|
|
|
|
"#ifndef ntohl)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if 1\n%1";
|
|
|
|
|
|
|
|
test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
|
|
|
|
"/*\n"
|
|
|
|
" * Macros for number representation conversion.\n"
|
|
|
|
" */\n"
|
|
|
|
"#ifndef ntohl\n"
|
|
|
|
"#define ntohl(x) (x)\n"
|
|
|
|
"#define ntohs(x) (x)\n"
|
|
|
|
"#define htonl(x) (x)\n"
|
|
|
|
"#define htons(x) (x)\n"
|
|
|
|
"#endif\n"
|
|
|
|
"#endif /* ! _XOPEN_SOURCE_EXTENDED */";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_imaginary_i;
|
|
|
|
mach = "ia64-hp-hpux11.*";
|
|
|
|
files = complex.h;
|
|
|
|
select = "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
|
|
|
|
test_text = "#define _Complex_I (0.f+_Imaginary_I)\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_inttype_int8_t;
|
|
|
|
mach = "*-hp-hpux1[01].*";
|
|
|
|
files = sys/_inttypes.h;
|
|
|
|
select = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "typedef signed char int%18_t;";
|
|
|
|
test_text = "typedef char int_least8_t;\n"
|
|
|
|
"typedef char int8_t;\n";
|
|
|
|
};
|
|
|
|
|
2001-07-17 03:02:52 +00:00
|
|
|
/*
|
2003-02-19 02:06:11 +00:00
|
|
|
* HP-UX long_double
|
2001-07-17 03:02:52 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2003-02-19 02:06:11 +00:00
|
|
|
hackname = hpux_long_double;
|
2009-04-28 15:17:49 +00:00
|
|
|
mach = "*-*-hpux10*";
|
|
|
|
mach = "*-*-hpux11.[012]*";
|
2003-02-19 02:06:11 +00:00
|
|
|
files = stdlib.h;
|
|
|
|
select = "extern[ \t]long_double[ \t]strtold";
|
|
|
|
bypass = "long_double_t";
|
|
|
|
sed = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D";
|
|
|
|
sed = "s/long_double/long double/g";
|
2001-07-17 03:02:52 +00:00
|
|
|
|
2003-02-19 02:06:11 +00:00
|
|
|
test_text = "# ifndef _LONG_DOUBLE\n"
|
|
|
|
"# define _LONG_DOUBLE\n"
|
|
|
|
" typedef struct {\n"
|
|
|
|
" unsigned int word1, word2, word3, word4;\n"
|
|
|
|
" } long_double;\n"
|
|
|
|
"# endif /* _LONG_DOUBLE */\n"
|
|
|
|
"extern long_double strtold(const char *, char **);\n";
|
2000-05-20 18:54:45 +00:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* We cannot use the above rule on 11.31 because it removes the strtold
|
|
|
|
* definition. ia64 is OK with no hack, PA needs some help.
|
|
|
|
*/
|
2009-04-28 15:17:49 +00:00
|
|
|
fix = {
|
|
|
|
hackname = hpux_long_double_2;
|
|
|
|
mach = "hppa*-*-hpux11.3*";
|
|
|
|
files = stdlib.h;
|
2013-07-06 17:43:46 +00:00
|
|
|
select = "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| "
|
|
|
|
"defined\\(_PROTOTYPES\\) \\|\\| "
|
|
|
|
"defined\\(_LONG_DOUBLE_STRUCT\\)";
|
2009-04-28 15:17:49 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "# if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)";
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
test_text = "# if !defined(__ia64) || "
|
|
|
|
"!defined(_PROTOTYPES) || "
|
|
|
|
"defined(_LONG_DOUBLE_STRUCT)\n";
|
2009-04-28 15:17:49 +00:00
|
|
|
};
|
2000-05-20 18:54:45 +00:00
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* Add missing braces to pthread initializer defines.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = hpux_pthread_initializers;
|
|
|
|
mach = "*-hp-hpux11.[0-3]*";
|
|
|
|
files = sys/pthread.h;
|
|
|
|
sed = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
|
|
|
|
"@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
|
|
|
|
sed = "s@^[ \t]*1,[ \t]*\\\\"
|
|
|
|
"@\t{ 1, 0 }@";
|
|
|
|
sed = "/^[ \t]*0$/d";
|
|
|
|
sed = "s@__PTHREAD_MUTEX_VALID, 0"
|
|
|
|
"@{ __PTHREAD_MUTEX_VALID, 0 }@";
|
|
|
|
sed = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
|
|
|
|
"@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
|
|
|
|
sed = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
|
|
|
|
"@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
|
|
|
|
sed = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
|
|
|
|
"@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
|
|
|
|
sed = "s@^[ \t]*0, 0[ \t]*\\\\"
|
|
|
|
"@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
|
|
|
|
sed = "s@__PTHREAD_COND_VALID, 0"
|
|
|
|
"@{ __PTHREAD_COND_VALID, 0 }@";
|
|
|
|
sed = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
|
|
|
|
"@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
|
|
|
|
sed = "s@__PTHREAD_RWLOCK_VALID, 0"
|
|
|
|
"@{ __PTHREAD_RWLOCK_VALID, 0 }@";
|
|
|
|
sed = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
|
|
|
|
"@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
|
|
|
|
sed = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \t]*\\\\"
|
|
|
|
"@\t{ 0, 0, 0, 0, 0 }, { 0, 0}\t\t\t\t\t\\\\@";
|
|
|
|
test_text = "#define PTHREAD_MUTEX_INITIALIZER {\t\t\t\t\t\\\\\n"
|
|
|
|
"\t__PTHREAD_MUTEX_VALID, 0,\t\t\t\t\t\\\\\n"
|
|
|
|
"\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
|
|
|
|
"\t__SPNLCK_INITIALIZER,\t\t\t\t\t\t\\\\\n"
|
|
|
|
"\t0, 0, -1, 0,\t\t\t\t\t\t\t\\\\\n"
|
|
|
|
"\t0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n"
|
|
|
|
"\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
|
|
|
|
"}\n";
|
2001-05-27 18:21:04 +00:00
|
|
|
};
|
|
|
|
|
2006-02-18 15:58:06 +00:00
|
|
|
/*
|
|
|
|
* Wrap spu_info in ifdef _KERNEL. GCC cannot handle an array of unknown
|
|
|
|
* type and mpinfou is only defined when _KERNEL is set.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_spu_info;
|
|
|
|
mach = "*-hp-hpux*";
|
2009-01-05 23:59:41 +00:00
|
|
|
/*
|
|
|
|
* It is tempting to omit the first "files" entry. Do not.
|
|
|
|
* The testing machinery will take the first "files" entry as the name
|
|
|
|
* of a test file to play with. It would be a nuisance to have a directory
|
|
|
|
* with the name "*".
|
|
|
|
*/
|
|
|
|
files = "ia64/sys/getppdp.h";
|
2008-12-15 18:11:19 +00:00
|
|
|
files = "*/sys/getppdp.h";
|
2006-02-18 15:58:06 +00:00
|
|
|
select = "^.*extern.*spu_info.*";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef _KERNEL\n%0\n#endif";
|
|
|
|
|
|
|
|
test_text = "extern union mpinfou spu_info[];";
|
|
|
|
};
|
|
|
|
|
2009-04-28 15:17:49 +00:00
|
|
|
/*
|
|
|
|
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
|
|
|
|
*/
|
|
|
|
fix = {
|
2009-08-28 19:42:41 +00:00
|
|
|
hackname = hpux_stdint_least_fast;
|
2009-04-28 15:17:49 +00:00
|
|
|
mach = "*-hp-hpux11.2*";
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-hpux11.h, stdint.h;
|
2009-08-28 19:42:41 +00:00
|
|
|
select =
|
|
|
|
"^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX";
|
2009-04-28 15:17:49 +00:00
|
|
|
c_fix = format;
|
2009-10-21 17:01:35 +00:00
|
|
|
c-fix-arg = "# define UINT_%164_MAX __UINT64_MAX__";
|
|
|
|
test-text = "# define UINT_FAST64_MAX ULLONG_MAX\n"
|
|
|
|
"# define UINT_LEAST64_MAX ULLONG_MAX\n";
|
2009-04-28 15:17:49 +00:00
|
|
|
};
|
|
|
|
|
2016-08-13 18:08:15 +00:00
|
|
|
/*
|
|
|
|
* Add noreturn attribute to longjmp declarations in hpux <setjmp.h>
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = hpux_longjmp;
|
|
|
|
mach = "*-hp-hpux*";
|
|
|
|
files = setjmp.h;
|
2016-09-04 16:17:10 +00:00
|
|
|
select = "^[ \t]*extern[ \t]+void[ \t]+.*longjmp[ \t]*\(__\\(\\(.*int\\)\\)|\\(.*int\\)|\\(\\)\)";
|
2016-08-13 18:08:15 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0 __attribute__ ((__noreturn__))";
|
|
|
|
|
|
|
|
test_text = 'extern void longjmp __((jmp_buf, int));';
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
|
|
|
|
*/
|
2009-04-28 15:17:49 +00:00
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = hpux_systime;
|
|
|
|
files = sys/time.h;
|
|
|
|
select = "^extern struct sigevent;";
|
2009-04-28 15:17:49 +00:00
|
|
|
|
2009-08-14 17:20:30 +00:00
|
|
|
c_fix = format;
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "struct sigevent;";
|
|
|
|
|
|
|
|
test_text = 'extern struct sigevent;';
|
2009-08-14 17:20:30 +00:00
|
|
|
};
|
|
|
|
|
2005-09-15 20:09:27 +01:00
|
|
|
/*
|
|
|
|
* Fix glibc definition of HUGE_VAL in terms of hex floating point constant
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = huge_val_hex;
|
2013-12-08 21:55:46 +00:00
|
|
|
files = bits/huge_val.h, '*/bits/huge_val.h';
|
2005-09-15 20:09:27 +01:00
|
|
|
select = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*";
|
|
|
|
bypass = "__builtin_huge_val";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n";
|
|
|
|
|
|
|
|
test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix glibc definition of HUGE_VALF in terms of hex floating point constant
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = huge_valf_hex;
|
2013-12-08 21:55:46 +00:00
|
|
|
files = bits/huge_val.h, '*/bits/huge_val.h';
|
2005-09-15 20:09:27 +01:00
|
|
|
select = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*";
|
|
|
|
bypass = "__builtin_huge_valf";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n";
|
|
|
|
|
|
|
|
test_text = "# define HUGE_VALF (__extension__ 0x1.0p255f)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix glibc definition of HUGE_VALL in terms of hex floating point constant
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = huge_vall_hex;
|
2013-12-08 21:55:46 +00:00
|
|
|
files = bits/huge_val.h, '*/bits/huge_val.h';
|
2005-09-15 20:09:27 +01:00
|
|
|
select = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*";
|
|
|
|
bypass = "__builtin_huge_vall";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n";
|
|
|
|
|
|
|
|
test_text = "# define HUGE_VALL (__extension__ 0x1.0p32767L)";
|
|
|
|
};
|
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
/*
|
|
|
|
* Fix return type of abort and free
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = int_abort_free_and_exit;
|
|
|
|
files = stdlib.h;
|
|
|
|
select = "int[ \t]+(abort|free|exit)[ \t]*\\(";
|
2004-11-09 23:14:06 +00:00
|
|
|
bypass = "_CLASSIC_ANSI_TYPES";
|
2000-05-09 16:21:08 +00:00
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = format;
|
2001-05-27 18:21:04 +00:00
|
|
|
c_fix_arg = "void\t%1(";
|
|
|
|
|
|
|
|
test_text = "extern int abort(int);\n"
|
|
|
|
"extern int free(void*);\n"
|
|
|
|
"extern int exit(void*);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2000-05-14 21:20:33 +00:00
|
|
|
* Fix various macros used to define ioctl numbers.
|
|
|
|
* The traditional syntax was:
|
|
|
|
*
|
|
|
|
* #define _IO(n, x) (('n'<<8)+x)
|
|
|
|
* #define TIOCFOO _IO(T, 1)
|
|
|
|
*
|
Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
(fix_char_macro_defines, fix_char_macro_uses): New functions.
* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
Recognize Emacs mode markers also.
* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
C++ comments in C++ headers. Call is_cxx_header only if
necessary.
* fixinc/inclhack.def (avoid_bool): Add select for the problem and
bypass for ncurses.
(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
... these, which use the new C fixes.
(math_exception): Escape literal '+' in bypass expression.
* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
Regenerate.
From-SVN: r31512
2000-01-19 21:41:04 +00:00
|
|
|
* but this does not work with the C standard, which disallows macro
|
|
|
|
* expansion inside strings. We have to rewrite it thus:
|
2000-05-14 21:20:33 +00:00
|
|
|
*
|
|
|
|
* #define _IO(n, x) ((n<<8)+x)
|
|
|
|
* #define TIOCFOO _IO('T', 1)
|
|
|
|
*
|
Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
(fix_char_macro_defines, fix_char_macro_uses): New functions.
* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
Recognize Emacs mode markers also.
* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
C++ comments in C++ headers. Call is_cxx_header only if
necessary.
* fixinc/inclhack.def (avoid_bool): Add select for the problem and
bypass for ncurses.
(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
... these, which use the new C fixes.
(math_exception): Escape literal '+' in bypass expression.
* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
Regenerate.
From-SVN: r31512
2000-01-19 21:41:04 +00:00
|
|
|
* The select expressions match too much, but the c_fix code is cautious.
|
|
|
|
*
|
|
|
|
* _IO might be: _IO DESIO BSD43__IO with W, R, WR, C, ... suffixes.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-14 21:20:33 +00:00
|
|
|
hackname = io_quotes_def;
|
2000-06-16 20:38:42 +00:00
|
|
|
select = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
|
2000-05-14 21:20:33 +00:00
|
|
|
c_fix = char_macro_def;
|
2000-05-12 15:51:55 +00:00
|
|
|
c_fix_arg = "IO";
|
2000-05-20 18:54:45 +00:00
|
|
|
test_text =
|
|
|
|
"#define BSD43__IOWR(n, x) (('n'<<8)+x)\n"
|
|
|
|
"#define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|('x'<<8)|y)\n"
|
|
|
|
"#define _IO(x,y) ('x'<<8|y)";
|
2000-06-17 17:50:12 +00:00
|
|
|
test_text =
|
|
|
|
"#define XX_IO(x) ('x'<<8|256)";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2012-10-29 16:44:34 +00:00
|
|
|
/*
|
|
|
|
* Fix the usage of the ioctl macro numbers.
|
|
|
|
*/
|
Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
(fix_char_macro_defines, fix_char_macro_uses): New functions.
* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
Recognize Emacs mode markers also.
* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
C++ comments in C++ headers. Call is_cxx_header only if
necessary.
* fixinc/inclhack.def (avoid_bool): Add select for the problem and
bypass for ncurses.
(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
... these, which use the new C fixes.
(math_exception): Escape literal '+' in bypass expression.
* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
Regenerate.
From-SVN: r31512
2000-01-19 21:41:04 +00:00
|
|
|
fix = {
|
2000-05-14 21:20:33 +00:00
|
|
|
hackname = io_quotes_use;
|
|
|
|
select = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*"
|
|
|
|
"\\( *[^,']";
|
|
|
|
c_fix = char_macro_use;
|
2000-05-12 15:51:55 +00:00
|
|
|
c_fix_arg = "IO";
|
2000-05-30 20:24:44 +00:00
|
|
|
test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n"
|
|
|
|
"#define TIOCFOO \\\\\n"
|
|
|
|
"BSD43__IOWR(T, 1) /* Some are multi-line */";
|
Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/Makefile.in: Correct dependencies of fixincl and fixincl.o.
* fixinc/fixfixes.c (IO_use, CTRL_use, IO_defn, CTRL_defn): New fixes.
(fix_char_macro_defines, fix_char_macro_uses): New functions.
* fixinc/fixlib.c (is_cxx_header): Do the text scan with a regexp.
Recognize Emacs mode markers also.
* fixinc/fixtests.c (else_endif_label): Fix bug in recognition of
C++ comments in C++ headers. Call is_cxx_header only if
necessary.
* fixinc/inclhack.def (avoid_bool): Add select for the problem and
bypass for ncurses.
(bsd43_io_macros, io_def_quotes, ioctl_fix_ctrl): Replace with...
(io_def_quotes, io_use_quotes, ctrl_def_quotes, ctrl_use_quotes):
... these, which use the new C fixes.
(math_exception): Escape literal '+' in bypass expression.
* fixinc/fixincl.x, fixinc/fixincl.sh, fixinc/inclhack.sh:
Regenerate.
From-SVN: r31512
2000-01-19 21:41:04 +00:00
|
|
|
};
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
/*
|
2000-05-16 14:01:34 +00:00
|
|
|
* Check for missing ';' in struct
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-16 14:01:34 +00:00
|
|
|
hackname = ip_missing_semi;
|
|
|
|
files = netinet/ip.h;
|
|
|
|
select = "}$";
|
|
|
|
sed = "/^struct/,/^};/s/}$/};/";
|
|
|
|
test_text=
|
|
|
|
"struct mumble {\n"
|
|
|
|
" union {\n"
|
|
|
|
" int x;\n"
|
|
|
|
" }\n"
|
|
|
|
"}; /* mumbled struct */\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
/*
|
|
|
|
* Non-traditional "const" declaration in Irix's limits.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = irix_limits_const;
|
|
|
|
files = fixinc-test-limits.h, limits.h;
|
|
|
|
select = "^extern const ";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern __const ";
|
|
|
|
test_text = "extern const char limit; /* test limits */";
|
|
|
|
};
|
|
|
|
|
2010-11-09 10:26:09 +00:00
|
|
|
/*
|
Remove obsolete IRIX 6.5 support
libstdc++-v3:
* configure.host (irix6.5*): Remove.
* config/os/irix: Remove.
* config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc())
[_GLIBCXX_FIONREAD_TAKES_OFF_T]: Remove.
* doc/xml/faq.xml: Remove IRIX reference.
* doc/xml/manual/using.xml (Finding Dynamic or Shared Libraries):
Remove IRIX example.
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
Remove mips-sgi-irix6* handling.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/21_strings/basic_string/pthread18185.cc: Likewise.
* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
* testsuite/23_containers/list/pthread1.cc: Likewise.
* testsuite/23_containers/list/pthread5.cc: Likewise.
* testsuite/23_containers/map/pthread6.cc: Likewise.
* testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise.
* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
* testsuite/30_threads/async/42819.cc: Likewise.
* testsuite/30_threads/async/49668.cc: Likewise.
* testsuite/30_threads/async/any.cc: Likewise.
* testsuite/30_threads/async/async.cc: Likewise.
* testsuite/30_threads/async/launch.cc: Likewise.
* testsuite/30_threads/async/sync.cc: Likewise.
* testsuite/30_threads/call_once/39909.cc: Likewise.
* testsuite/30_threads/call_once/49668.cc: Likewise.
* testsuite/30_threads/call_once/call_once1.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
* testsuite/30_threads/future/cons/move.cc: Likewise.
* testsuite/30_threads/future/members/45133.cc: Likewise.
* testsuite/30_threads/future/members/get.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/future/members/share.cc: Likewise.
* testsuite/30_threads/future/members/valid.cc: Likewise.
* testsuite/30_threads/future/members/wait.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/lock/1.cc: Likewise.
* testsuite/30_threads/lock/2.cc: Likewise.
* testsuite/30_threads/lock/3.cc: Likewise.
* testsuite/30_threads/lock/4.cc: Likewise.
* testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/mutex/lock/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/packaged_task/49668.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
* testsuite/30_threads/promise/cons/1.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
* testsuite/30_threads/promise/cons/move.cc: Likewise.
* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
* testsuite/30_threads/promise/members/get_future.cc: Likewise.
* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/this_thread/1.cc: Likewise.
* testsuite/30_threads/this_thread/2.cc: Likewise.
* testsuite/30_threads/this_thread/3.cc: Likewise.
* testsuite/30_threads/this_thread/4.cc: Likewise.
* testsuite/30_threads/thread/cons/1.cc: Likewise.
* testsuite/30_threads/thread/cons/2.cc: Likewise.
* testsuite/30_threads/thread/cons/3.cc: Likewise.
* testsuite/30_threads/thread/cons/4.cc: Likewise.
* testsuite/30_threads/thread/cons/49668.cc: Likewise.
* testsuite/30_threads/thread/cons/5.cc: Likewise.
* testsuite/30_threads/thread/cons/6.cc: Likewise.
* testsuite/30_threads/thread/cons/7.cc: Likewise.
* testsuite/30_threads/thread/cons/8.cc: Likewise.
* testsuite/30_threads/thread/cons/9.cc: Likewise.
* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
* testsuite/30_threads/thread/members/1.cc: Likewise.
* testsuite/30_threads/thread/members/2.cc: Likewise.
* testsuite/30_threads/thread/members/3.cc: Likewise.
* testsuite/30_threads/thread/members/4.cc: Likewise.
* testsuite/30_threads/thread/members/5.cc: Likewise.
* testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise.
* testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/thread/swap/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/try_lock/1.cc: Likewise.
* testsuite/30_threads/try_lock/2.cc: Likewise.
* testsuite/30_threads/try_lock/3.cc: Likewise.
* testsuite/30_threads/try_lock/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise.
* testsuite/ext/rope/pthread7-rope.cc: Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc:
Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc:
Likewise.
* testsuite/23_containers/vector/capacity/resize/1.cc: Remove
dg-options for mips*-*-irix6*.
* testsuite/27_io/ios_base/storage/1.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/storage/3.cc: Likewise.
* testsuite/lib/libstdc++.exp (v3-build_support): Remove IRIX 6
workaround.
libjava:
* configure.ac (libgcj_cv_exidx): Remove IRIX 6 ld workaround.
(mips-sgi-irix6*): Remove.
(mips-sgi-irix*): Remove.
(AC_CHECK_HEADERS): Remove bstring.h.
* configure: Regenerate.
* include/config.h.in: Regenerate.
* configure.host (mips-sgi-irix6*): Remove.
* include/posix-signal.h [__sgi__]: Remove.
* gnu/java/net/natPlainDatagramSocketImplPosix.cc
[HAVE_BSTRING_H]: Remove.
* gnu/java/net/natPlainDatagramSocketImplWin32.cc: Likewise.
* gnu/java/net/natPlainSocketImplPosix.cc: Likewise.
libitm:
* configure.tgt (*-*-irix6*): Remove.
libgomp:
* configure.tgt (mips-sgi-irix6*): Remove.
libgfortran:
* intrinsics/c99_functions.c [__sgi__ && !HAVE_COMPLEX_H]: Remove.
libgcc:
* config.host (mips-sgi-irix6.5*): Remove.
* config/mips/irix-crti.S: Remove.
* config/mips/irix-crtn.S: Remove.
* config/mips/irix6-unwind.h: Remove.
* config/mips/t-irix6: Remove.
* config/mips/t-slibgcc-irix: Remove.
gnattools:
* configure.ac (mips-sgi-irix*): Remove.
* configure: Regenerate.
gcc/testsuite:
* g++.dg/other/anon5.C: Don't skip on mips-sgi-irix*.
* g++.dg/tree-prof/partition1.C: Likewise.
* g++.dg/tree-prof/partition2.C: Likewise.
* g++.old-deja/g++.other/init19.C: Remove mips-sgi-irix*
handling.
* gcc.c-torture/compile/labels-3.c: Remove dg-options.
* gcc.c-torture/execute/20010724-1.c: Remove.
* gcc.c-torture/execute/20010724-1.x: Remove.
* gcc.c-torture/execute/20040208-2.c: Remove.
* gcc.c-torture/execute/20040208-2.x: Remove.
* gcc.c-torture/execute/ieee/20000320-1.c [__mips__ && __sgi__]:
Remove.
(main) [__mips__ && __sgi__]: Remove.
* gcc.c-torture/execute/ieee/copysign1.c: Remove IRIX reference.
* gcc.c-torture/execute/ieee/copysign2.c: Likewise.
* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: Remove
mips-sgi-irix6* handling.
* gcc.dg/cpp/assert4.c [__mips__]: Remove __sgi__, sgi.
* gcc.dg/torture/20090618-1.c: Don't skip on mips-sgi-irix*.
* gcc.dg/torture/builtin-frexp-1.c: Remove mips*-*-irix6*
handling.
* gcc.dg/torture/builtin-logb-1.c: Likewise.
* gcc.dg/torture/pr47917.c: Remove mips-sgi-irix6.5 handling.
* gcc.dg/tree-ssa/ssa-store-ccp-3.c: Don't skip on mips*-*-irix*.
* gcc.misc-tests/linkage.exp: Remove mips-sgi-irix6* handling.
* gcc.target/mips/args-1.c [!__sgi__]: Remove.
* gcc.target/mips/interrupt_handler-2.c: Don't skip on
mips-sgi-irix6*.
* gcc.target/mips/interrupt_handler-3.c: Likewise.
* gcc.target/mips/save-restore-1.c: Don't skip on mips-sgi-irix6*.
* gcc.target/mips/save-restore-3.c: Likewise.
* gcc.target/mips/save-restore-4.c: Likewise.
* gcc.target/mips/save-restore-5.c: Likewise.
* gfortran.dg/g77/cabs.f: Don't xfail on mips-sgi-irix6*.
* lib/prune.exp (prune_gcc_output): Remove pruning of IRIX 6 ld
messages.
* lib/target-libpath.exp (set_ld_library_path_env_vars): Remove
IRIX 6 handling.
(restore_ld_library_path_env_vars): Likewise.
* lib/target-supports.exp (check_profiling_available): Remove
mips*-*-irix* handling.
(check_ascii_locale_available): Remove mips-sgi-irix* handling.
(add_options_for_c99_runtime): Remove mips-sgi-irix6.5* handling.
* objc.dg/stabs-1.m: Don't xfail on mips-sgi-irix6.5.
gcc/ada:
* gcc-interface/Makefile.in (mips-sgi-irix6*): Remove.
* a-intnam-irix.ads, mlib-tgt-specific-irix.adb,
s-intman-irix.adb, s-mastop-irix.adb, s-osinte-irix.adb,
s-osinte-irix.ads, s-proinf-irix-athread.adb,
s-proinf-irix-athread.ads, s-taprop-irix.adb, s-tasinf-irix.ads,
system-irix-n32.ads, system-irix-n64.ads, system-irix-o32.ads:
Remove.
* adaint.c [__mips && __sgi]: Remove.
(__gnat_number_of_cpus) [__mips && __sgi]: Remove.
[IS_CROSS && !(__mips && __sgi)]: Remove.
* adaint.h [sgi && _LFAPI]: Remove.
* cstreams.c (__gnat_full_name) [sgi]: Remove.
* env.c (__gnat_unsetenv) [__mips && __sgi]: Remove.
(__gnat_clearenv) [__mips && __sgi]: Remove.
* errno.c (_SGI_MP_SOURCE): Remove.
* gsocket.h [sgi]: Remove.
* init.c: Remove IRIX reference.
[sgi]: Remove.
* link.c [sgi]: Remove.
* s-oscons-tmplt.c [__mips && __sgi] (IOV_MAX): Don't define.
(main) [__mips && __sgi] (MAX_tv_sec): Don't define.
(CLOCK_SGI_FAST, CLOCK_SGI_CYCLE): Remove.
* sysdep.c [sgi]: Remove.
(getc_immediate_common) [sgi]: Remove.
(__gnat_localtime_tzoff) [sgi]: Remove.
* terminals.c [__mips && __sgi] (IRIX): Don't define.
[IRIX] (USE_GETPTY): Don't define.
(allocate_pty_desc) [USE_GETPTY]: Remove.
* g-traceb.ads: Remove IRIX reference.
* g-trasym.ads: Likewise.
* memtrack.adb: Likewise.
* s-interr-sigaction.adb: Likewise.
* gnat_rm.texi (Implementation Advice): Remove SGI info.
(Implementation Defined Characteristics): Likewise.
* gnat_ugn.texi (Summary of Run-Time Configurations, mips-irix):
Remove.
(Irix-Specific Considerations): Remove.
gcc/cp:
* Make-lang.in (doc/g++.1): Remove IRIX 6.5 reference.
gcc:
* config.gcc (enable_obsolete): Remove mips-sgi-irix6.5.
(mips-sgi-irix6.5*): Remove.
* config.host (mips-sgi-irix*): Remove.
* configure.ac (enable_fixed_point): Remove mips*-sgi-irix*.
(set_have_as_tls): Remove *-*-irix6*.
(gcc_cv_ld_static_dynamic): Remove mips-sgi-irix6*.
* configure: Regenerate.
* config/mips/iris6.h: Remove.
* config/mips/iris6.opt: Remove.
* config/mips/t-irix6: Remove.
* config/mips/mips.h (TARGET_GPWORD): Remove IRIX 6 N64 handling.
(TARGET_IRIX6): Remove.
(TARGET_CPU_CPP_BUILTINS): Remove IRIX 6 handling.
Don't define LANGUAGE_C, _LANGUAGE_C for Objective-C.
* config/mips/mips.c (mips_build_builtin_va_list): Remove IRIX 6
handling.
(mips_file_start): Likewise.
* config/mips/mips-protos.h (irix_asm_output_align): Remove.
* config/mips/driver-native.c [__sgi__]: Remove.
(host_detect_local_cpu) [__sgi__]: Remove.
* config/mips/gnu-user.h: Remove iris5.h reference.
* config/mips/mips-modes.def: Remove IRIX 6 reference.
* config/mips/gnu-user64.h (MIPS_TFMODE_FORMAT): Remove.
* config/mips/mips.c (mips_option_override) [MIPS_TFMODE_FORMAT]:
Remove.
* gcc.c (main): Move asm_debug initialization ...
(asm_debug): ... here.
* ginclude/stddef.h (__STDDEF_H__): Don't define.
* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Remove.
* system.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Poison.
* collect2.c [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
(main) [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
[LINK_ELIMINATE_DUPLICATE_LDIRECTORIES] (is_in_args): Remove.
* doc/tm.texi.in (Driver, LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
Remove.
* doc/tm.texi: Regenerate.
* doc/invoke.texi (Debugging Options, -gdwarf-<version>): Remove
IRIX 6 reference.
(MIPS Options, -march): Remove IRIX reference.
* doc/install.texi (Binaries, SGI IRIX): Remove.
(Specific, mips-sgi-irix6): Document IRIX 6.5 removal, remove rest
of section.
* doc/trouble.texi (Interoperation): Remove -lgl_s handling.
fixincludes:
* inclhack.def (broken_cabs): Remove IRIX and SunOS 4 support.
(irix___restrict): Remove.
(irix___generic1): Remove.
(irix___generic2): Remove.
(irix_asm_apostrophe): Remove.
(irix_complex): Remove.
(irix_pthread_init): Remove.
(irix_socklen_t): Remove.
(irix_stdint_c99_mode): Remove.
(irix_stdint_c99_types): Remove.
(irix_stdint_c99_macros): Remove.
(irix_stdio_va_list): Remove IRIX 6.5 support.
(irix_wcsftime): Remove.
(stdio_va_list): Remove IRIX 6.5 support.
(svr4_profil): Remove IRIX bypass.
* fixincl.x: Regenerate.
* tests/base/complex.h [IRIX_COMPLEX_CHECK]: Remove.
* tests/base/internal/math_core.h: Remove.
* tests/base/internal/sgimacros.h: Remove.
* tests/base/internal/wchar_core.h: Remove.
* tests/base/math.h [BROKEN_CABS_CHECK]: Remove IRIX and SunOS 4
support.
* tests/base/pthread.h [IRIX_PTHREAD_INIT_CHECK]: Remove.
* tests/base/stdint-irix65.h: Remove.
* tests/base/stdint.h [IRIX_STDINT_C99_MODE_CHECK]: Remove.
* tests/base/sys/asm.h: Remove.
* tests/base/sys/socket.h [IRIX_SOCKLEN_T_CHECK]: Remove.
contrib:
* config-list.mk (LIST): Remove mips-sgi-irix6.5.
toplevel:
* MAINTAINERS (OS Port Maintainers): Remove irix.
* configure.ac (enable_libgomp): Remove *-*-irix6*.
(unsupported_languages): Remove mips-sgi-irix6.*.
(noconfigdirs): Don't add ${libgcj} for mips*-*-irix6*.
(with_stabs): Remove.
* configure: Regenerate.
From-SVN: r185390
2012-03-14 16:33:37 +00:00
|
|
|
* IRIX 5.x's stdio.h declares some functions that take a va_list as
|
2001-05-27 18:21:04 +00:00
|
|
|
* taking char *. However, GCC uses void * for va_list, so
|
2001-03-16 03:28:28 +00:00
|
|
|
* calling vfprintf with a va_list fails in C++. */
|
|
|
|
fix = {
|
|
|
|
hackname = irix_stdio_va_list;
|
|
|
|
files = stdio.h;
|
|
|
|
|
2003-10-06 20:49:24 +00:00
|
|
|
select = '/\* va_list \*/ char \*';
|
2001-03-16 03:28:28 +00:00
|
|
|
c_fix = format;
|
2003-10-06 20:49:24 +00:00
|
|
|
c_fix_arg = "__gnuc_va_list";
|
2001-05-26 18:26:29 +00:00
|
|
|
test_text =
|
|
|
|
"extern int printf( const char *, /* va_list */ char * );";
|
2001-03-16 03:28:28 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
|
|
|
|
* use / * * / to concatenate tokens.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = kandr_concat;
|
|
|
|
files = "sparc/asm_linkage.h";
|
2007-01-06 18:03:50 +00:00
|
|
|
files = "sun*/asm_linkage.h";
|
1998-10-16 07:00:18 +00:00
|
|
|
files = "arm/as_support.h";
|
|
|
|
files = "arm/mc_type.h";
|
|
|
|
files = "arm/xcb.h";
|
|
|
|
files = "dev/chardefmac.h";
|
|
|
|
files = "dev/ps_irq.h";
|
|
|
|
files = "dev/screen.h";
|
|
|
|
files = "dev/scsi.h";
|
|
|
|
files = "sys/tty.h";
|
|
|
|
files = "Xm.acorn/XmP.h";
|
|
|
|
files = bsd43/bsd43_.h;
|
|
|
|
select = '/\*\*/';
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = '##';
|
|
|
|
test_text = "#define __CONCAT__(a,b) a/**/b";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines
|
2004-09-17 22:58:40 +00:00
|
|
|
* an _SC_GR0_OFFSET macro using an idiom that isn't a compile time
|
|
|
|
* constant on recent versions of g++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = linux_ia64_ucontext;
|
|
|
|
files = "sys/ucontext.h";
|
|
|
|
mach = "ia64-*-linux*";
|
|
|
|
select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)'
|
|
|
|
'->sc_gr\[0\]\) - \(char \*\) 0\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)";
|
|
|
|
test_text = "# define _SC_GR0_OFFSET\t\\\\\n"
|
|
|
|
"\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n";
|
|
|
|
};
|
|
|
|
|
2004-09-10 13:56:50 +00:00
|
|
|
/*
|
|
|
|
* Remove header file warning from sys/time.h. Autoconf's
|
|
|
|
* AC_HEADER_TIME recommends to include both sys/time.h and time.h
|
|
|
|
* which causes warning on LynxOS. Remove the warning.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2004-09-10 13:56:50 +00:00
|
|
|
hackname = lynxos_no_warning_in_sys_time_h;
|
|
|
|
files = sys/time.h;
|
|
|
|
select = "#warning[ \t]+Using <time.h> instead of <sys/time.h>";
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "";
|
2004-09-10 13:56:50 +00:00
|
|
|
test_text = "#warning Using <time.h> instead of <sys/time.h>";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2004-09-10 13:56:50 +00:00
|
|
|
/*
|
|
|
|
* Add missing declaration for putenv.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2004-09-10 13:56:50 +00:00
|
|
|
hackname = lynxos_missing_putenv;
|
|
|
|
mach = '*-*-lynxos*';
|
|
|
|
files = stdlib.h;
|
|
|
|
bypass = 'putenv[ \t]*\\(';
|
|
|
|
select = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = format;
|
2004-09-10 13:56:50 +00:00
|
|
|
c_fix_arg = "%0\n"
|
|
|
|
"extern int putenv _AP((char *));";
|
|
|
|
c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
|
|
|
|
test_text = "extern char *getenv _AP((const char *));";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2000-01-25 08:06:23 +00:00
|
|
|
/*
|
|
|
|
* Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_.
|
2001-05-27 18:21:04 +00:00
|
|
|
*
|
2000-12-05 18:08:09 +00:00
|
|
|
* On NetBSD, machine is a symbolic link to an architecture specific
|
|
|
|
* directory name, so we can't match a specific file name here.
|
2000-01-25 08:06:23 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = machine_ansi_h_va_list;
|
2000-05-20 19:47:41 +00:00
|
|
|
select = "define[ \t]+_BSD_VA_LIST_[ \t]";
|
2000-01-25 08:06:23 +00:00
|
|
|
bypass = '__builtin_va_list';
|
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1__builtin_va_list";
|
|
|
|
c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*";
|
|
|
|
|
|
|
|
test_text = " # define _BSD_VA_LIST_\tchar**";
|
2000-01-25 08:06:23 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
1999-03-31 12:02:19 +00:00
|
|
|
* Fix non-ansi machine name defines
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-14 21:20:33 +00:00
|
|
|
hackname = machine_name;
|
|
|
|
c_test = machine_name;
|
|
|
|
c_fix = machine_name;
|
2000-05-20 21:32:42 +00:00
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
test_text = "/* MACH_DIFF: */\n"
|
2021-06-28 13:54:58 +08:00
|
|
|
"#if defined( i386 ) || defined( sparc ) || defined( vax ) || "
|
|
|
|
"defined( linux ) || __has_include ( <linux.h> )"
|
2000-05-20 19:47:41 +00:00
|
|
|
"\n/* no uniform test, so be careful :-) */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2003-07-09 21:00:01 +00:00
|
|
|
* Some math.h files define struct exception (it's in the System V
|
2004-01-20 23:49:34 +00:00
|
|
|
* Interface Definition), which conflicts with the class exception defined
|
|
|
|
* in the C++ file std/stdexcept.h. We redefine it to __math_exception.
|
|
|
|
* This is not a great fix, but I haven't been able to think of anything
|
inclhack.def (aix_syswait, [...]): Remove.
fixincludes:
* inclhack.def (aix_syswait, exception_structure,
pthread_page_size): Remove.
(math_exception): Remove mention of fixproto in comment.
* fixincl.x: Regenerate.
* mkheaders.in: Do not handle STMP_FIXPROTO.
gcc:
* config/arm/t-arm-coff, config/h8300/coff.h,
config/i386/i386-aout.h, config/i386/i386-coff.h,
config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
config/pdp11/2bsd.h, config/rs6000/aix41.h,
config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
sys-types.h: Remove.
* Makefile.in: Remove protoize and fixproto support and references
in comments.
(SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
Remove.
(ALL_HOST_OBJS): Remove $(PROTO_OBJS).
(MOSTLYCLEANFILES): Remove protoize$(exeext) and
unprotoize$(exeext).
(rest.encap): Don't depend on $(STMP_FIXPROTO)
(.PHONY): Don't depend on proto.
(libgcc-support): Don't depend on $(STMP_FIXPROTO).
(proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
build/gen-protos.o, build/scan.o, xsys-protos.h,
build/fix-header$(build_exeext), build/fix-header.o,
build/scan-decls.o, fixhdr.ready, stmp-fixproto,
stmp-install-fixproto): Remove.
(mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
SYSCALLS.c or fixproto files.
(install-common): Don't install protoize.
(install-headers-tar, install-headers-cpio, install-headers-cp):
Don't depend on $(STMP_FIXPROTO).
(install-mkheaders): Don't depend on $(STMP_FIXPROTO). Don't
install fixproto files or write out fixproto settings.
(uninstall): Don't uninstall protoize.
* config.gcc (use_fixproto): Remove.
(arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
* config/m32r/t-linux (STMP_FIXPROTO): Remove.
* config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
* config/mips/t-iris (FIXPROTO_DEFINES): Remove.
* config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
* config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
* config/t-svr4 (FIXPROTO_DEFINES): Remove.
* config/t-vxworks (STMP_FIXPROTO): Remove.
* configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
STMP_FIXPROTO): Remove.
* config.in, configure: Regenerate.
* crtstuff.c (gid_t, uid_t): Don't undefine.
* doc/install.texi: Change m68k-coff to m68k-elf in example.
(arm-*-coff, arm-*-aout: Remove target entries.
(*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
Remove mention of AIX 4.1.
(m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
* doc/invoke.texi (Running Protoize): Remove.
* doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
(Protoize Caveats): Remove.
* tsystem.h: Update comments on headers assumed to exist.
gcc/po:
* EXCLUDES (fix-header.c, gen-protos.c, scan-decls.c, scan.c,
scan.h): Remove.
gcc/testsuite:
* g++.old-deja/g++.ext/attrib5.C, g++.old-deja/g++.jason/thunk3.C,
gcc.c-torture/compile/981006-1.c: Don't XFAIL or add special
options for removed targets.
libgcc:
* config.host (arm-*-coff*, armel-*-coff*, arm-semi-aof,
armel-semi-aof, h8300-*-*, i[34567]86-*-aout*, i[34567]86-*-coff*,
m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd, rs6000-ibm-aix4.[12]*,
powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
From-SVN: r145158
2009-03-28 06:51:09 +00:00
|
|
|
* better.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-14 19:29:02 +00:00
|
|
|
hackname = math_exception;
|
|
|
|
files = math.h;
|
|
|
|
select = "struct exception";
|
2004-01-20 23:49:34 +00:00
|
|
|
/*
|
2012-03-14 17:08:03 +00:00
|
|
|
* This should be bypassed on __cplusplus, but some supposedly C++
|
2004-01-20 23:49:34 +00:00
|
|
|
* aware headers, such as Solaris 8 and 9, don't wrap their struct
|
|
|
|
* exception either. So currently we bypass only for glibc, based on a
|
|
|
|
* comment in the fixed glibc header. Ick.
|
|
|
|
*/
|
2008-09-06 19:57:26 +00:00
|
|
|
bypass = 'We have a problem when using C\+\+|for C\+\+, '
|
|
|
|
'_[a-z0-9A-Z_]+_exception; for C, exception';
|
2014-04-22 12:30:59 +00:00
|
|
|
/* The Solaris 10 headers already get this right. */
|
|
|
|
mach = '*-*-solaris2.1[0-9]*';
|
|
|
|
not_machine = true;
|
2000-05-14 19:29:02 +00:00
|
|
|
c_fix = wrap;
|
|
|
|
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"#define exception __math_exception\n"
|
|
|
|
"#endif\n";
|
|
|
|
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n"
|
|
|
|
"#undef exception\n"
|
|
|
|
"#endif\n";
|
|
|
|
|
|
|
|
test_text = "typedef struct exception t_math_exception;";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
/*
|
|
|
|
* This looks pretty broken to me. ``dbl_max_def'' will contain
|
|
|
|
* "define DBL_MAX " at the start, when what we really want is just
|
|
|
|
* the value portion. Can't figure out how to write a test case
|
|
|
|
* for this either :-(
|
|
|
|
*/
|
1998-10-16 07:00:18 +00:00
|
|
|
fix = {
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
hackname = math_huge_val_from_dbl_max;
|
1998-10-16 07:00:18 +00:00
|
|
|
files = math.h;
|
2000-07-13 14:47:55 +00:00
|
|
|
|
1999-03-31 12:02:19 +00:00
|
|
|
/*
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
* IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined
|
|
|
|
* in math.h, this fix applies.
|
1999-03-31 12:02:19 +00:00
|
|
|
*/
|
2000-07-13 14:47:55 +00:00
|
|
|
select = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX";
|
|
|
|
bypass = "define[ \t]+DBL_MAX";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
shell =
|
1999-03-31 12:02:19 +00:00
|
|
|
/*
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
* See if we have a definition for DBL_MAX in float.h.
|
|
|
|
* If we do, we will replace the one in math.h with that one.
|
1999-03-31 12:02:19 +00:00
|
|
|
*/
|
1998-10-16 07:00:18 +00:00
|
|
|
|
1999-03-31 12:02:19 +00:00
|
|
|
"\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
|
2000-07-13 14:47:55 +00:00
|
|
|
"| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
|
1998-10-16 07:00:18 +00:00
|
|
|
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
"\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
|
|
|
|
"\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/"
|
2000-07-13 14:47:55 +00:00
|
|
|
"s@DBL_MAX@'\"$dbl_max_def@\"\n"
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
"\telse cat\n"
|
|
|
|
"\tfi";
|
2000-07-13 14:47:55 +00:00
|
|
|
|
|
|
|
test_text =
|
|
|
|
"`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n"
|
|
|
|
"#define HUGE_VAL DBL_MAX";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
/*
|
|
|
|
* nested comment
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = nested_auth_des;
|
|
|
|
files = rpc/rpc.h;
|
|
|
|
select = '(/\*.*rpc/auth_des\.h>.*)/\*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1*/ /*";
|
|
|
|
test_text = "/*#include <rpc/auth_des.h> /* skip this */";
|
|
|
|
};
|
|
|
|
|
2007-03-19 18:08:14 +01:00
|
|
|
/*
|
|
|
|
* Some versions of NetBSD don't expect the C99 inline semantics.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = netbsd_c99_inline_1;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-netbsd*";
|
2007-03-19 18:08:14 +01:00
|
|
|
files = signal.h;
|
|
|
|
select = "extern __inline int";
|
|
|
|
|
|
|
|
c_fix = format;
|
2008-09-06 19:57:26 +00:00
|
|
|
c_fix_arg = "extern\n"
|
|
|
|
"#ifdef __GNUC_STDC_INLINE__\n"
|
|
|
|
"__attribute__((__gnu_inline__))\n"
|
|
|
|
"#endif\n"
|
|
|
|
"__inline int";
|
2007-03-19 18:08:14 +01:00
|
|
|
|
|
|
|
test_text = "extern __inline int\nsigaddset(sigset_t *set, int signo)\n{}";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* netbsd_c99_inline_2
|
|
|
|
*/
|
2007-07-26 01:51:47 +02:00
|
|
|
fix = {
|
|
|
|
hackname = netbsd_c99_inline_2;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-netbsd*";
|
2007-07-26 01:51:47 +02:00
|
|
|
files = signal.h;
|
|
|
|
select = "#define _SIGINLINE extern __inline";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = <<- _EOArg_
|
|
|
|
#ifdef __GNUC_STDC_INLINE__
|
|
|
|
#define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline
|
|
|
|
#else
|
|
|
|
%0
|
|
|
|
#endif
|
|
|
|
_EOArg_;
|
|
|
|
|
|
|
|
test_text = "#define _SIGINLINE extern __inline";
|
|
|
|
};
|
|
|
|
|
2003-02-18 21:05:02 +01:00
|
|
|
/*
|
|
|
|
* NetBSD has a semicolon after the ending '}' for some extern "C".
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = netbsd_extra_semicolon;
|
2008-02-05 02:36:32 +00:00
|
|
|
mach = "*-*-netbsd*";
|
2003-02-18 21:05:02 +01:00
|
|
|
files = sys/cdefs.h;
|
|
|
|
select = "#define[ \t]*__END_DECLS[ \t]*};";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define __END_DECLS }";
|
|
|
|
|
|
|
|
test_text = "#define __END_DECLS };";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
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
2009-03-31 21:30:31 +01:00
|
|
|
fix = {
|
|
|
|
hackname = newlib_stdint_1;
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-newlib.h, stdint.h;
|
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
2009-03-31 21:30:31 +01:00
|
|
|
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__@";
|
2013-07-06 17:43:46 +00:00
|
|
|
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__@';
|
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
2009-03-31 21:30:31 +01:00
|
|
|
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";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* newlib_stdint_2
|
|
|
|
*/
|
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
2009-03-31 21:30:31 +01:00
|
|
|
fix = {
|
|
|
|
hackname = newlib_stdint_2;
|
config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
gcc:
* config.gcc (mips-sgi-irix[56]*): Set use_gcc_stdint.
* config/mips/iris.h (INT8_TYPE, INT16_TYPE, INT32_TYPE,
INT64_TYPE): Define.
(UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
(INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
INT_LEAST64_TYPE): Define.
(UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
UINT_LEAST64_TYPE): Define.
(INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE)
INT_FAST64_TYPE): Define.
(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
UINT_FAST64_TYPE): Define.
(INTMAX_TYPE, UINTMAX_TYPE): Define.
(INTPTR_TYPE, UINTPTR_TYPE): Define.
(SIG_ATOMIC_TYPE): Define.
fixincludes:
* inclhack.def (aix_stdint_1): Add stdint-aix.h to files.
(aix_stdint_2): Likewise.
(aix_stdint_3): Likewise.
(aix_stdint_4): Likewise.
(aix_stdint_5): Likewise.
(darwin_stdint_1): Add stdint-darwin.h to files.
(darwin_stdint_2): Likewise.
(darwin_stdint_3): Likewise.
(darwin_stdint_4): Likewise.
(darwin_stdint_5): Likewise.
(darwin_stdint_6): Likewise.
(darwin_stdint_7): Likewise.
(hpux_c99_intptr): Add stdint-hpux11.h to files.
(hpux_c99_inttypes): Likewise.
(hpux_c99_inttypes2): Likewise.
(hpux_stdint_least_fast): Likewise.
(irix_stdint_c99): Renamed to irix_stdint_c99_mode.
(irix_stdint_c99_types): New fix.
(irix_stdint_c99_macros): New fix.
(newlib_stdint_1): Add stdint-newlib.h to files.
(newlib_stdint_2): Likewise.
fixincl.x: Regenerate.
tests/base/stdint-aix.h: New file.
tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK,
AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ...
tests/base/stdint-aix.h: ... here.
[AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix.
[AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix.
[AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix.
tests/base/stdint-darwin.h: New file.
tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK,
DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK,
DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ...
tests/base/stdint-darwin.h: ... here.
[DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix.
[DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix.
[DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix.
tests/base/stdint-hpux11.h: New file.
tests/base/stdint.h [HPUX_C99_INTPTR_CHECK,
HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ...
tests/base/stdint-hpux11.h: ... here.
[HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix.
[HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix.
tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to
IRIX_STDINT_C99_MODE_CHECK.
tests/base/stdint-irix65.h: New file.
tests/base/stdint-newlib.h: New file.
tests/base/stdint.h [NEWLIB_STDINT_1_CHECK,
NEWLIB_STDINT_2_CHECK]: Moved ...
tests/base/stdint-newlib.h: ... here.
From-SVN: r156259
2010-01-26 19:24:32 +00:00
|
|
|
files = stdint-newlib.h, stdint.h;
|
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
2009-03-31 21:30:31 +01:00
|
|
|
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 */";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* NeXT 3.2 adds const prefix to some math functions.
|
|
|
|
* These conflict with the built-in functions.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 19:47:41 +00:00
|
|
|
hackname = next_math_prefix;
|
|
|
|
files = ansi/math.h;
|
|
|
|
select = "^extern[ \t]+double[ \t]+__const__[ \t]";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern double %1(";
|
|
|
|
c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
test_text = "extern\tdouble\t__const__\tmumble();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* NeXT 3.2 uses the word "template" as a parameter for some
|
|
|
|
* functions. GCC reports an invalid use of a reserved key word
|
2000-05-20 19:47:41 +00:00
|
|
|
* with the built-in functions.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = next_template;
|
|
|
|
files = bsd/libc.h;
|
2000-05-20 19:47:41 +00:00
|
|
|
select = "[ \t]template\\)";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "(%1)";
|
|
|
|
c_fix_arg = "\\(([^)]*)[ \t]template\\)";
|
|
|
|
test_text = "extern mumble( char * template); /* fix */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* NeXT 3.2 includes the keyword volatile in the abort() and exit()
|
|
|
|
* function prototypes. That conflicts with the built-in functions.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = next_volitile;
|
|
|
|
files = ansi/stdlib.h;
|
2000-05-20 19:47:41 +00:00
|
|
|
select = "^extern[ \t]+volatile[ \t]+void[ \t]";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern void %1(";
|
|
|
|
c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 19:47:41 +00:00
|
|
|
test_text = "extern\tvolatile\tvoid\tabort();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
|
|
|
|
* Note that version 3 of the NeXT system has wait.h in a different directory,
|
|
|
|
* so that this code won't do anything. But wait.h in version 3 has a
|
|
|
|
* conditional, so it doesn't need this fix. So everything is okay.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = next_wait_union;
|
|
|
|
files = sys/wait.h;
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
select = 'wait\(union wait';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "wait(void";
|
|
|
|
test_text = "extern pid_d wait(union wait*);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* a missing semi-colon at the end of the nodeent structure definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = nodeent_syntax;
|
|
|
|
files = netdnet/dnetdb.h;
|
|
|
|
select = "char[ \t]*\\*na_addr[ \t]*$";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0;";
|
|
|
|
test_text = "char *na_addr\t";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2008-12-31 23:00:17 +00:00
|
|
|
/*
|
|
|
|
* Fix OpenBSD's NULL definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = openbsd_null_definition;
|
|
|
|
mach = "*-*-openbsd*";
|
|
|
|
files = locale.h, stddef.h, stdio.h, string.h,
|
|
|
|
time.h, unistd.h, wchar.h, sys/param.h;
|
|
|
|
select = "__GNUG__";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef NULL\n"
|
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"#ifdef __GNUG__\n"
|
|
|
|
"#define NULL\t__null\n"
|
|
|
|
"#else\t /* ! __GNUG__ */\n"
|
|
|
|
"#define NULL\t0L\n"
|
|
|
|
"#endif\t /* __GNUG__ */\n"
|
|
|
|
"#else\t /* ! __cplusplus */\n"
|
|
|
|
"#define NULL\t((void *)0)\n"
|
|
|
|
"#endif\t /* __cplusplus */\n"
|
|
|
|
"#endif\t /* !NULL */";
|
|
|
|
|
|
|
|
c_fix_arg = "^#ifndef[ \t]*NULL\n"
|
|
|
|
"^#ifdef[ \t]*__GNUG__\n"
|
|
|
|
"^#define[ \t]*NULL[ \t]*__null\n"
|
|
|
|
"^#else\n"
|
|
|
|
"^#define[ \t]*NULL[ \t]*0L\n"
|
|
|
|
"^#endif\n"
|
|
|
|
"^#endif";
|
|
|
|
test_text =
|
|
|
|
"#ifndef NULL\n"
|
|
|
|
"#ifdef __GNUG__\n"
|
|
|
|
"#define NULL __null\n"
|
|
|
|
"#else\n"
|
|
|
|
"#define NULL 0L\n"
|
|
|
|
"#endif\n"
|
|
|
|
"#endif\n";
|
|
|
|
};
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2003-10-22 23:28:39 +01:00
|
|
|
/*
|
|
|
|
* obstack.h used casts as lvalues.
|
|
|
|
*
|
|
|
|
* We need to change postincrements of casted pointers (which are
|
|
|
|
* then dereferenced and assigned into) of the form
|
|
|
|
*
|
|
|
|
* *((TYPE*)PTRVAR)++ = (VALUE)
|
|
|
|
*
|
|
|
|
* into expressions like
|
|
|
|
*
|
|
|
|
* ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE)))
|
|
|
|
*
|
|
|
|
* which is correct for the cases used in obstack.h since PTRVAR is
|
|
|
|
* of type char * and the value of the expression is not used.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = obstack_lvalue_cast;
|
|
|
|
files = obstack.h;
|
|
|
|
select = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))";
|
|
|
|
test_text = "*((void **) (h)->next_free)++ = (aptr)";
|
|
|
|
};
|
|
|
|
|
2008-12-31 13:52:53 +00:00
|
|
|
/*
|
|
|
|
* Fix OpenBSD's va_start define.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = openbsd_va_start;
|
|
|
|
mach = "*-*-openbsd*";
|
|
|
|
files = stdarg.h;
|
|
|
|
select = '__builtin_stdarg_start';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = __builtin_va_start;
|
|
|
|
|
|
|
|
test_text = "#define va_start(v,l) __builtin_stdarg_start((v),l)";
|
|
|
|
};
|
2003-10-22 23:28:39 +01:00
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by
|
|
|
|
* defining regex.h related types. This causes libg++ build and usage
|
|
|
|
* failures. Fixing this correctly requires checking and modifying 3 files.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = osf_namespace_a;
|
|
|
|
files = reg_types.h;
|
|
|
|
files = sys/lc_core.h;
|
1999-03-31 12:02:19 +00:00
|
|
|
test = " -r reg_types.h";
|
|
|
|
test = " -r sys/lc_core.h";
|
|
|
|
test = " -n \"`grep '} regex_t;' reg_types.h`\"";
|
|
|
|
test = " -z \"`grep __regex_t regex.h`\"";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "__%0";
|
2000-06-02 11:45:57 +00:00
|
|
|
c_fix_arg = "reg(ex|off|match)_t";
|
2000-05-20 21:32:42 +00:00
|
|
|
|
2000-05-31 14:26:57 +00:00
|
|
|
test_text = "`touch sys/lc_core.h`"
|
2000-05-20 21:32:42 +00:00
|
|
|
"typedef struct {\n int stuff, mo_suff;\n} regex_t;\n"
|
|
|
|
"extern regex_t re;\n"
|
|
|
|
"extern regoff_t ro;\n"
|
|
|
|
"extern regmatch_t rm;\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = osf_namespace_c;
|
1998-10-16 07:00:18 +00:00
|
|
|
files = regex.h;
|
1999-03-31 12:02:19 +00:00
|
|
|
test = " -r reg_types.h";
|
|
|
|
test = " -r sys/lc_core.h";
|
|
|
|
test = " -n \"`grep '} regex_t;' reg_types.h`\"";
|
|
|
|
test = " -z \"`grep __regex_t regex.h`\"";
|
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
select = "#include <reg_types\.h>.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n"
|
|
|
|
"typedef __regex_t\tregex_t;\n"
|
|
|
|
"typedef __regoff_t\tregoff_t;\n"
|
|
|
|
"typedef __regmatch_t\tregmatch_t;";
|
|
|
|
|
|
|
|
test_text = "#include <reg_types.h>";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2005-03-21 16:46:09 +00:00
|
|
|
/*
|
|
|
|
* On broken glibc-2.3.3 systems an array of incomplete structures is
|
|
|
|
* passed to __sigsetjmp. Fix that to take a pointer instead.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = pthread_incomplete_struct_argument;
|
|
|
|
files = pthread.h;
|
|
|
|
select = "struct __jmp_buf_tag";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 *%2%3";
|
2013-07-06 17:43:46 +00:00
|
|
|
c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) "
|
|
|
|
"(__env)\\[1\\](.*)$";
|
|
|
|
test_text = "extern int __sigsetjmp (struct __jmp_buf_tag __env[1], "
|
|
|
|
"int __savemask);";
|
2005-03-21 16:46:09 +00:00
|
|
|
};
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix return type of fread and fwrite on sysV68
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = read_ret_type;
|
|
|
|
files = stdio.h;
|
1999-06-23 12:29:01 +00:00
|
|
|
select = "extern int\t.*, fread\\(\\), fwrite\\(\\)";
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2";
|
|
|
|
c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)";
|
|
|
|
|
|
|
|
test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2004-04-07 23:25:33 +01:00
|
|
|
/*
|
|
|
|
* Fix casts as lvalues in glibc's <rpc/xdr.h>.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = rpc_xdr_lvalue_cast_a;
|
|
|
|
files = rpc/xdr.h;
|
|
|
|
select = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))";
|
|
|
|
test_text = "#define IXDR_GET_LONG(buf) \\\\\n"
|
|
|
|
"\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))";
|
|
|
|
};
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
/*
|
|
|
|
* rpc_xdr_lvalue_cast_b
|
|
|
|
*/
|
2004-04-07 23:25:33 +01:00
|
|
|
fix = {
|
|
|
|
hackname = rpc_xdr_lvalue_cast_b;
|
|
|
|
files = rpc/xdr.h;
|
|
|
|
select = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))";
|
|
|
|
test_text = "#define IXDR_PUT_LONG(buf, v) \\\\\n"
|
|
|
|
"\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2001-05-27 18:21:04 +00:00
|
|
|
* function class(double x) conflicts with C++ keyword on rs/6000
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = rs6000_double;
|
|
|
|
files = math.h;
|
|
|
|
select = '[^a-zA-Z_]class\(';
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
|
|
|
|
c_fix_arg = '^.*[^a-zA-Z_]class\(.*';
|
|
|
|
|
|
|
|
test_text = "extern int class();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Wrong fchmod prototype on RS/6000.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = rs6000_fchmod;
|
|
|
|
files = sys/stat.h;
|
|
|
|
select = 'fchmod\(char \*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "fchmod(int";
|
|
|
|
test_text = "extern int fchmod(char *, mode_t);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2001-05-27 18:21:04 +00:00
|
|
|
* parameters conflict with C++ new on rs/6000
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = rs6000_param;
|
|
|
|
files = "stdio.h";
|
|
|
|
files = "unistd.h";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
select = 'rename\(const char \*old, const char \*new\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = 'rename(const char *_old, const char *_new)';
|
|
|
|
|
|
|
|
test_text = 'extern int rename(const char *old, const char *new);';
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2010-06-21 15:27:29 +00:00
|
|
|
/*
|
|
|
|
* Solaris 10+ <sys/feature_tests.h> defines _RESTRICT_KYWD as restrict
|
|
|
|
* for C99. This is wrong for C++, which needs many C99 features, but
|
|
|
|
* only supports __restrict.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris___restrict;
|
|
|
|
files = sys/feature_tests.h;
|
|
|
|
select = "#define[ \t]*_RESTRICT_KYWD[ \t]*restrict";
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n#define\t_RESTRICT_KYWD\t__restrict\n"
|
|
|
|
"#else\n%0\n#endif";
|
|
|
|
test_text = "#define _RESTRICT_KYWD restrict";
|
|
|
|
};
|
|
|
|
|
2009-09-02 14:58:50 +00:00
|
|
|
/*
|
|
|
|
* Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of
|
|
|
|
* themselves, which are Sun Studio compiler intrinsics. Remove _Imaginary_I
|
|
|
|
* and imaginary definitions which are not supported by GCC.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_complex;
|
|
|
|
mach = "*-*-solaris2.*";
|
|
|
|
files = complex.h;
|
|
|
|
select = "#define[ \t]_Complex_I[ \t]_Complex_I";
|
|
|
|
sed = "s/#define[ \t]_Complex_I[ \t]_Complex_I/"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
"#define\t_Complex_I\t(__extension__ 1.0iF)/";
|
2009-09-02 14:58:50 +00:00
|
|
|
sed = "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d";
|
|
|
|
sed = "/#define[ \t]imaginary[ \t]_Imaginary/d";
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
sed = "s/#define[ \t]I[ \t]\\{1,\\}_Imaginary_I/#define\tI\t\t_Complex_I/";
|
2009-09-02 14:58:50 +00:00
|
|
|
test_text = "#define _Complex_I _Complex_I\n"
|
|
|
|
"#define complex _Complex\n"
|
|
|
|
"#define _Imaginary_I _Imaginary_I\n"
|
|
|
|
"#define imaginary _Imaginary\n"
|
|
|
|
"#undef I\n"
|
|
|
|
"#define I _Imaginary_I";
|
|
|
|
};
|
|
|
|
|
2010-06-21 15:27:29 +00:00
|
|
|
/*
|
|
|
|
* Solaris 10+ <complex.h> is wrapped in #ifndef __cplusplus. Wrap in
|
|
|
|
* extern "C" instead so libstdc++ can use it.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_complex_cxx;
|
|
|
|
mach = "*-*-solaris2.*";
|
|
|
|
files = complex.h;
|
2011-05-17 08:00:15 +00:00
|
|
|
sed = "/#if[ \t]*!defined(__cplusplus)/c\\\n"
|
2010-06-21 15:27:29 +00:00
|
|
|
"#ifdef\t__cplusplus\\\nextern \"C\" {\\\n#endif";
|
2011-05-17 08:00:15 +00:00
|
|
|
sed = "/#endif[ \t]*\\/\\* !defined(__cplusplus) \\*\\//c\\\n"
|
2010-06-21 15:27:29 +00:00
|
|
|
"#ifdef\t__cplusplus\\\n}\\\n#endif";
|
|
|
|
test_text = "#if !defined(__cplusplus)\n"
|
|
|
|
"#endif /* !defined(__cplusplus) */";
|
|
|
|
};
|
|
|
|
|
2011-08-10 08:43:38 +00:00
|
|
|
/*
|
|
|
|
* g++ rejects functions declared with both C and C++ linkage.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_cxx_linkage;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
files = "iso/stdlib_iso.h";
|
|
|
|
select = "(#if __cplusplus >= 199711L)\n"
|
|
|
|
"(extern \"C\\+\\+\" \\{\n)"
|
|
|
|
"(.*(bsearch|qsort).*)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 && !__GNUG__\n%2%3";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#if __cplusplus >= 199711L\n"
|
|
|
|
"extern \"C++\" {\n"
|
|
|
|
" void *bsearch(const void *, const void *, size_t, size_t,";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Solaris <iso/stdio_iso.h> doesn't declare getc for C++ with
|
|
|
|
* _STRICT_STDC, but uses it.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_getc_strict_stdc;
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
files = "iso/stdio_iso.h";
|
|
|
|
select = "(.*&& )!defined\\(_STRICT_STDC\\)(.*)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1(!defined(_STRICT_STDC) || (__cplusplus >= 199711L))%2";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#if !defined(_REENTRANT) && !defined(_LP64) && !defined(_STRICT_STDC)";
|
|
|
|
};
|
|
|
|
|
2017-01-13 12:09:13 +00:00
|
|
|
/*
|
|
|
|
* Solaris <iso/stdio_iso.h> should deprecate gets before C11.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_gets_c11;
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
files = "iso/stdio_iso.h";
|
|
|
|
select = "(extern char[ \t]*\\*gets\\(char \\*\\));";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L\n"
|
|
|
|
"%1 __attribute__((__deprecated__));\n"
|
|
|
|
"#endif";
|
|
|
|
|
|
|
|
test_text = "extern char *gets(char *);";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Solaris <iso/stdio_iso.h> shouldn't declare gets for C++14.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_gets_cxx14;
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
files = "iso/stdio_iso.h";
|
|
|
|
select = <<- _EOSelect_
|
|
|
|
(#if __STDC_VERSION__ < 201112L)
|
|
|
|
(extern char \*gets\(char \*\) __ATTR_DEPRECATED;)
|
|
|
|
_EOSelect_;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 && __cplusplus < 201402L\n%2";
|
|
|
|
|
|
|
|
test_text = <<- _EOText_
|
|
|
|
#if __STDC_VERSION__ < 201112L
|
|
|
|
extern char *gets(char *) __ATTR_DEPRECATED;
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Sun Solaris 2 has a version of sys/int_const.h that defines
|
|
|
|
* UINT8_C and UINT16_C to unsigned constants.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_int_const;
|
|
|
|
files = sys/int_const.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tUINT8_C(c)\t(c)\n"
|
|
|
|
"%1\n"
|
|
|
|
"#define\tUINT16_C(c)\t(c)";
|
|
|
|
select = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n"
|
|
|
|
"(/\*.*\*/)\n"
|
|
|
|
"#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*";
|
|
|
|
test_text =
|
|
|
|
"#define UINT8_C(c) __CONCAT__(c,u)\n"
|
|
|
|
"/* CSTYLED */\n"
|
|
|
|
"#define UINT16_C(c) __CONCAT__(c,u)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Sun Solaris 2 has a version of sys/int_limits.h that defines
|
|
|
|
* UINT8_MAX and UINT16_MAX to unsigned constants.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_int_limits_1;
|
|
|
|
files = sys/int_limits.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tUINT8_MAX\t(255)\n"
|
|
|
|
"#define\tUINT16_MAX\t(65535)";
|
|
|
|
select = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n"
|
|
|
|
"#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)";
|
|
|
|
test_text =
|
|
|
|
"#define UINT8_MAX (255U)\n"
|
|
|
|
"#define UINT16_MAX (65535U)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Sun Solaris 2 has a version of sys/int_limits.h that defines
|
|
|
|
* INT_FAST16 limits to wrong values for sys/int_types.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_int_limits_2;
|
|
|
|
files = sys/int_limits.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\t%1_FAST16_%2 %132_%2";
|
|
|
|
select = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*";
|
|
|
|
test_text =
|
|
|
|
"#define INT_FAST16_MAX INT16_MAX\n"
|
|
|
|
"#define UINT_FAST16_MAX UINT16_MAX\n"
|
|
|
|
"#define INT_FAST16_MIN INT16_MIN";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Sun Solaris 2 has a version of sys/int_limits.h that defines
|
|
|
|
* SIZE_MAX as unsigned long.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_int_limits_3;
|
|
|
|
files = sys/int_limits.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tSIZE_MAX\t4294967295U";
|
|
|
|
select = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL";
|
|
|
|
test_text =
|
|
|
|
"#define SIZE_MAX 4294967295UL";
|
|
|
|
};
|
|
|
|
|
2005-05-19 09:05:45 +02:00
|
|
|
/*
|
|
|
|
* Sun Solaris 10 defines several C99 math macros in terms of
|
|
|
|
* builtins specific to the Studio compiler, in particular not
|
|
|
|
* compatible with the GNU compiler.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_1;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
|
|
|
|
c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
|
|
|
|
test_text =
|
|
|
|
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
|
|
|
"#undef HUGE_VAL\n"
|
|
|
|
"#define HUGE_VAL __builtin_huge_val\n"
|
|
|
|
"#undef HUGE_VALF\n"
|
|
|
|
"#define HUGE_VALF __builtin_huge_valf\n"
|
|
|
|
"#undef HUGE_VALL\n"
|
|
|
|
"#define HUGE_VALL __builtin_huge_vall";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* On Solaris 11, if you do isinf(NaN) you'll get a floating point
|
|
|
|
* exception. Provide an alternative using GCC's builtin.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_10;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
|
|
|
|
c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
|
|
|
|
"[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);"
|
|
|
|
"[ \t]*\\\\\n"
|
|
|
|
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
|
|
|
|
"INFINITY[ \t]*\\|\\|[ \t]*\\\\\n"
|
|
|
|
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
|
|
|
|
"\\(-INFINITY\\);[ \t]*\\}\\)";
|
|
|
|
test_text =
|
|
|
|
'#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n"
|
|
|
|
"#undef isinf\n"
|
|
|
|
"#define isinf(x) __extension__( \\\\\n"
|
|
|
|
" { __typeof(x) __x_i = (x); \\\\\n"
|
|
|
|
" __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
|
|
|
|
" __x_i == (__typeof(__x_i)) (-INFINITY); })";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Solaris math INFINITY
|
|
|
|
*/
|
2005-05-19 09:05:45 +02:00
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_2;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
|
|
|
|
c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
|
|
|
|
test_text =
|
|
|
|
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
|
|
|
"#undef INFINITY\n"
|
|
|
|
"#define INFINITY __builtin_infinity";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Solaris math NAN
|
|
|
|
*/
|
2005-05-19 09:05:45 +02:00
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_3;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
|
|
|
|
c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
|
|
|
|
test_text =
|
|
|
|
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
|
|
|
"#undef NAN\n"
|
|
|
|
"#define NAN __builtin_nan";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Solaris math fpclassify
|
|
|
|
*/
|
2005-05-19 09:05:45 +02:00
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_4;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tfpclassify(x) \\\n"
|
2013-07-06 17:43:46 +00:00
|
|
|
" __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, "
|
|
|
|
"FP_SUBNORMAL, FP_ZERO, (x))";
|
2005-05-19 09:05:45 +02:00
|
|
|
c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
|
|
|
|
test_text =
|
|
|
|
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
|
|
|
"#undef fpclassify\n"
|
|
|
|
"#define fpclassify(x) __builtin_fpclassify(x)";
|
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Solaris math signbit
|
|
|
|
*/
|
2005-05-19 09:05:45 +02:00
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_8;
|
2010-03-19 14:50:06 +00:00
|
|
|
select = '@\(#\)math_c99\.h' "[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ SMI";
|
2005-05-19 09:05:45 +02:00
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
|
|
|
|
"\t\t\t ? __builtin_signbitf(x) \\\n"
|
|
|
|
"\t\t\t : sizeof(x) == sizeof(long double) \\\n"
|
|
|
|
"\t\t\t ? __builtin_signbitl(x) \\\n"
|
|
|
|
"\t\t\t : __builtin_signbit(x))";
|
|
|
|
c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
|
2010-03-12 04:09:29 +00:00
|
|
|
test_text = <<- _EOText_
|
|
|
|
#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
|
|
|
|
#undef signbit
|
2010-03-19 14:50:06 +00:00
|
|
|
#define signbit(x) __builtin_signbit(x)
|
2010-03-12 04:09:29 +00:00
|
|
|
_EOText_;
|
2005-05-19 09:05:45 +02:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* Solaris math comparison macros
|
|
|
|
*/
|
2005-05-19 09:05:45 +02:00
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_9;
|
|
|
|
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
bypass = "__GNUC__";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
|
2013-07-06 17:43:46 +00:00
|
|
|
c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) "
|
|
|
|
"__builtin_[a-z]+\\(y\\)\\)";
|
2005-05-19 09:05:45 +02:00
|
|
|
test_text =
|
|
|
|
'#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
|
|
|
|
"#undef isgreater\n"
|
|
|
|
"#define isgreater(x, y) ((x) __builtin_isgreater(y))\n"
|
|
|
|
"#undef isgreaterequal\n"
|
|
|
|
"#define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y))\n"
|
|
|
|
"#undef isless\n"
|
|
|
|
"#define isless(x, y) ((x) __builtin_isless(y))\n"
|
|
|
|
"#undef islessequal\n"
|
|
|
|
"#define islessequal(x, y) ((x) __builtin_islessequal(y))\n"
|
|
|
|
"#undef islessgreater\n"
|
|
|
|
"#define islessgreater(x, y) ((x) __builtin_islessgreater(y))\n"
|
|
|
|
"#undef isunordered\n"
|
|
|
|
"#define isunordered(x, y) ((x) __builtin_isunordered(y))";
|
|
|
|
};
|
2000-04-30 23:30:15 +00:00
|
|
|
|
2015-02-10 10:09:49 +00:00
|
|
|
/*
|
|
|
|
* Newer Solaris 10/11 GCC signbit implementations cause strict-aliasing
|
|
|
|
* warnings.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_11;
|
|
|
|
select = '@\(#\)math_c99\.h' "[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ ";
|
|
|
|
files = iso/math_c99.h;
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = << _EOArg_
|
|
|
|
#undef signbit
|
|
|
|
#define signbit(x) (sizeof(x) == sizeof(float) \
|
|
|
|
? __builtin_signbitf(x) \
|
|
|
|
: sizeof(x) == sizeof(long double) \
|
|
|
|
? __builtin_signbitl(x) \
|
|
|
|
: __builtin_signbit(x))
|
|
|
|
_EOArg_;
|
|
|
|
c_fix_arg = << _EOArg_
|
|
|
|
^#undef[ ]+signbit
|
|
|
|
#if defined\(__sparc\)
|
|
|
|
#define[ ]+signbit\(x\)[ ]+__extension__\( \\
|
|
|
|
[ ]+\{[ ]*__typeof\(x\)[ ]*__x_s[ ]*=[ ]*\(x\);[ ]*\\
|
|
|
|
[ ]+\(int\)[ ]*\(\*\(unsigned[ ]*\*\)[ ]*\&__x_s[ ]*>>[ ]*31\);[ ]*\}\)
|
|
|
|
#elif defined\(__i386\) \|\| defined\(__amd64\)
|
|
|
|
#define[ ]+signbit\(x\)[ ]+__extension__\( \\
|
|
|
|
[ ]+\{ __typeof\(x\) __x_s = \(x\); \\
|
|
|
|
[ ]+\(sizeof \(__x_s\) == sizeof \(float\) \? \\
|
|
|
|
[ ]+\(int\) \(\*\(unsigned \*\) \&__x_s >> 31\) : \\
|
|
|
|
[ ]+sizeof \(__x_s\) == sizeof \(double\) \? \\
|
|
|
|
[ ]+\(int\) \(\(\(unsigned \*\) \&__x_s\)\[1\] >> 31\) : \\
|
|
|
|
[ ]+\(int\) \(\(\(unsigned short \*\) \&__x_s\)\[4\] >> 15\)\); \}\)
|
|
|
|
#endif
|
|
|
|
_EOArg_;
|
|
|
|
test_text = << _EOText_
|
|
|
|
/* @(#)math_c99.h 1.14 13/03/27 */
|
|
|
|
#undef signbit
|
|
|
|
#if defined(__sparc)
|
|
|
|
#define signbit(x) __extension__( \\
|
|
|
|
{ __typeof(x) __x_s = (x); \\
|
|
|
|
(int) (*(unsigned *) &__x_s >> 31); })
|
|
|
|
#elif defined(__i386) || defined(__amd64)
|
|
|
|
#define signbit(x) __extension__( \\
|
|
|
|
{ __typeof(x) __x_s = (x); \\
|
|
|
|
(sizeof (__x_s) == sizeof (float) ? \\
|
|
|
|
(int) (*(unsigned *) &__x_s >> 31) : \\
|
|
|
|
sizeof (__x_s) == sizeof (double) ? \\
|
|
|
|
(int) (((unsigned *) &__x_s)[1] >> 31) : \\
|
|
|
|
(int) (((unsigned short *) &__x_s)[4] >> 15)); })
|
|
|
|
#endif
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
2016-11-21 16:09:47 +00:00
|
|
|
/*
|
|
|
|
* Some versions of Solaris 10+ <math.h> #undef libstdc++-internal macros.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_math_12;
|
|
|
|
files = math.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
select = '#undef.*_GLIBCXX_USE_C99_MATH';
|
2023-02-17 13:48:45 +01:00
|
|
|
bypass = '__MATH_PREEMPTS_GLIBCXX_C99_MATH';
|
2016-11-21 16:09:47 +00:00
|
|
|
sed = "/#undef[ \t]*_GLIBCXX_USE_C99_MATH/d";
|
|
|
|
test_text = << _EOText_
|
|
|
|
#if __cplusplus >= 201103L
|
|
|
|
#undef _GLIBCXX_USE_C99_MATH
|
|
|
|
#undef _GLIBCXX_USE_C99_MATH_TR1
|
|
|
|
#endif
|
|
|
|
_EOText_;
|
|
|
|
};
|
|
|
|
|
2006-09-27 04:25:34 +00:00
|
|
|
/*
|
|
|
|
* Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a
|
|
|
|
* structure. As such, it need two levels of brackets, but only
|
|
|
|
* contains one. Wrap the macro definition in an extra layer.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_once_init_1;
|
|
|
|
select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
files = pthread.h;
|
|
|
|
mach = '*-*-solaris*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1{%2}%3";
|
|
|
|
c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$";
|
|
|
|
test_text =
|
|
|
|
'#pragma ident "@(#)pthread.h 1.37 04/09/28 SMI"'"\n"
|
|
|
|
"#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}";
|
2001-05-17 01:27:32 +00:00
|
|
|
};
|
|
|
|
|
2009-05-29 22:07:30 +00:00
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* Solaris 10+ <spawn.h> uses char *const argv[_RESTRICT_KYWD] in the
|
|
|
|
* posix_spawn declarations, which doesn't work with C++.
|
2009-05-29 22:07:30 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = solaris_posix_spawn_restrict;
|
|
|
|
files = spawn.h;
|
2010-01-29 15:55:13 +00:00
|
|
|
mach = '*-*-solaris2*';
|
2009-05-29 22:07:30 +00:00
|
|
|
c_fix = format;
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "%1*_RESTRICT_KYWD %2%3";
|
|
|
|
select = "(.*[ \t]+)([a-z]+)\\[_RESTRICT_KYWD\\](.*)";
|
2009-05-29 22:07:30 +00:00
|
|
|
test_text =
|
2013-12-08 21:55:46 +00:00
|
|
|
"char *const argv[_RESTRICT_KYWD],\n"
|
|
|
|
"char *const envp[_RESTRICT_KYWD]);";
|
2009-05-29 22:07:30 +00:00
|
|
|
};
|
|
|
|
|
2010-01-29 15:55:13 +00:00
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* The pow overloads with int were removed in C++ 2011 DR 550.
|
2010-01-29 15:55:13 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = solaris_pow_int_overload;
|
2010-01-29 15:55:13 +00:00
|
|
|
mach = '*-*-solaris2*';
|
2013-12-08 21:55:46 +00:00
|
|
|
files = "iso/math_iso.h";
|
|
|
|
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
|
|
|
|
" *\\{[^{}]*\n[^{}]*\\}";
|
2010-01-29 15:55:13 +00:00
|
|
|
c_fix = format;
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
|
2010-01-29 15:55:13 +00:00
|
|
|
|
2009-07-03 20:27:05 +00:00
|
|
|
test_text =
|
2013-12-08 21:55:46 +00:00
|
|
|
" inline long double pow(long double __X, int __Y) { return\n"
|
|
|
|
" __powl(__X, (long double) (__Y)); }";
|
2009-07-03 20:27:05 +00:00
|
|
|
};
|
|
|
|
|
2011-07-25 15:56:27 +00:00
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
|
|
|
|
* fields of the pthread_rwlock_t structure, which are of type
|
|
|
|
* upad64_t, which itself is typedef'd to int64_t, but with __STDC__
|
|
|
|
* defined (e.g. by -ansi) it is a union. So change the initializer
|
|
|
|
* to "{0}" instead.
|
2011-07-25 15:56:27 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = solaris_rwlock_init_1;
|
|
|
|
select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
|
|
|
|
files = pthread.h;
|
|
|
|
mach = '*-*-solaris*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
|
|
|
|
"%0\n"
|
|
|
|
"#else\n"
|
|
|
|
"%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
|
|
|
|
"#endif";
|
|
|
|
c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
|
|
|
|
"\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
|
|
|
|
|
2011-07-25 15:56:27 +00:00
|
|
|
test_text =
|
2013-12-08 21:55:46 +00:00
|
|
|
'#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n"
|
|
|
|
"#define PTHREAD_RWLOCK_INITIALIZER\t{0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}";
|
2011-07-25 15:56:27 +00:00
|
|
|
};
|
|
|
|
|
2011-08-10 08:43:38 +00:00
|
|
|
/*
|
|
|
|
* Before Solaris 10, <stdio.h> lacks declarations of std::__filbuf and
|
|
|
|
* std::__flsbuf, but <iso/stdio_iso.h> uses them.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_std___filbuf;
|
|
|
|
files = stdio.h;
|
|
|
|
mach = '*-*-solaris2*';
|
|
|
|
bypass = "using std::__filbuf";
|
|
|
|
select = "(using std::perror;\n)(#endif)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1#ifndef _LP64\n"
|
|
|
|
"using std::__filbuf;\n"
|
|
|
|
"using std::__flsbuf;\n"
|
|
|
|
"#endif\n%2";
|
|
|
|
|
|
|
|
test_text = "using std::perror;\n"
|
|
|
|
"#endif";
|
|
|
|
};
|
|
|
|
|
2017-01-13 12:09:13 +00:00
|
|
|
/*
|
|
|
|
* Solaris <stdio.h> shouldn't use std::gets for C++14.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_std_gets_cxx14;
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
files = "stdio.h";
|
|
|
|
select = "using std::gets;";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if __cplusplus < 201402L\n%0\n#endif";
|
|
|
|
|
|
|
|
test_text = "using std::gets;";
|
|
|
|
};
|
|
|
|
|
2009-07-03 20:27:05 +00:00
|
|
|
/*
|
|
|
|
* Sun Solaris 8 has what appears to be some gross workaround for
|
2002-03-21 18:24:52 -08:00
|
|
|
* some old version of their c++ compiler. G++ doesn't want it
|
|
|
|
* either, but doesn't want to be tied to SunPRO version numbers.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_stdio_tag;
|
|
|
|
files = stdio_tag.h;
|
|
|
|
|
|
|
|
select = '__cplusplus < 54321L';
|
2004-11-26 22:00:51 +00:00
|
|
|
/* In Solaris 10, the code in stdio_tag.h is conditionalized on
|
|
|
|
"!defined(__GNUC__)" so we no longer need to fix it. */
|
|
|
|
bypass = '__GNUC__';
|
2002-03-21 18:24:52 -08:00
|
|
|
sed = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
|
|
|
|
|
2002-05-02 05:18:08 +00:00
|
|
|
test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
|
2002-03-21 18:24:52 -08:00
|
|
|
};
|
|
|
|
|
2017-01-13 12:09:13 +00:00
|
|
|
/*
|
|
|
|
* Solaris <stdlib.h> shouldn't use _Noreturn, breaks with C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = solaris_stdlib_noreturn;
|
|
|
|
mach = "*-*-solaris2*";
|
|
|
|
files = "iso/stdlib_c99.h";
|
|
|
|
select = "(extern) _Noreturn (void quick_exit\\(int\\));";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 %2 __attribute__((__noreturn__));";
|
|
|
|
|
|
|
|
test_text = "extern _Noreturn void quick_exit(int);";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* a missing semi-colon at the end of the statsswtch structure definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = statsswtch;
|
|
|
|
files = rpcsvc/rstat.h;
|
|
|
|
select = "boottime$";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "boottime;";
|
|
|
|
test_text = "struct statswtch {\n int boottime\n};";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2000-01-25 08:06:23 +00:00
|
|
|
/*
|
|
|
|
* Arrange for stdio.h to use stdarg.h to define __gnuc_va_list.
|
|
|
|
* On 4BSD-derived systems, stdio.h defers to machine/ansi.h; that's
|
|
|
|
* OK too.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = stdio_stdarg_h;
|
|
|
|
files = stdio.h;
|
|
|
|
bypass = "include.*(stdarg\.h|machine/ansi\.h)";
|
2004-11-26 22:00:51 +00:00
|
|
|
/*
|
|
|
|
* On Solaris 10, this fix is unncessary; <stdio.h> includes
|
|
|
|
* <iso/stdio_iso.h>, which includes <sys/va_list.h>.
|
|
|
|
*/
|
2005-05-10 01:26:08 +01:00
|
|
|
mach = '*-*-solaris2.1[0-9]*';
|
2004-11-26 22:00:51 +00:00
|
|
|
not_machine = true;
|
2000-01-25 08:06:23 +00:00
|
|
|
|
2000-05-14 19:29:02 +00:00
|
|
|
c_fix = wrap;
|
2000-01-25 08:06:23 +00:00
|
|
|
|
2000-05-14 19:29:02 +00:00
|
|
|
c_fix_arg = "#define __need___va_list\n#include <stdarg.h>\n";
|
|
|
|
|
|
|
|
test_text = "";
|
2000-01-25 08:06:23 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2004-10-29 02:42:54 +00:00
|
|
|
* Don't use or define the name va_list in stdio.h. This is for
|
|
|
|
* ANSI. Note _BSD_VA_LIST_ is dealt with elsewhere. The presence
|
|
|
|
* of __gnuc_va_list, __DJ_va_list, or _G_va_list is taken to
|
|
|
|
* indicate that the header knows what it's doing -- under SUSv2,
|
|
|
|
* stdio.h is required to define va_list, and we shouldn't break
|
Remove obsolete IRIX 6.5 support
libstdc++-v3:
* configure.host (irix6.5*): Remove.
* config/os/irix: Remove.
* config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc())
[_GLIBCXX_FIONREAD_TAKES_OFF_T]: Remove.
* doc/xml/faq.xml: Remove IRIX reference.
* doc/xml/manual/using.xml (Finding Dynamic or Shared Libraries):
Remove IRIX example.
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
Remove mips-sgi-irix6* handling.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/21_strings/basic_string/pthread18185.cc: Likewise.
* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
* testsuite/23_containers/list/pthread1.cc: Likewise.
* testsuite/23_containers/list/pthread5.cc: Likewise.
* testsuite/23_containers/map/pthread6.cc: Likewise.
* testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise.
* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
* testsuite/30_threads/async/42819.cc: Likewise.
* testsuite/30_threads/async/49668.cc: Likewise.
* testsuite/30_threads/async/any.cc: Likewise.
* testsuite/30_threads/async/async.cc: Likewise.
* testsuite/30_threads/async/launch.cc: Likewise.
* testsuite/30_threads/async/sync.cc: Likewise.
* testsuite/30_threads/call_once/39909.cc: Likewise.
* testsuite/30_threads/call_once/49668.cc: Likewise.
* testsuite/30_threads/call_once/call_once1.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
* testsuite/30_threads/future/cons/move.cc: Likewise.
* testsuite/30_threads/future/members/45133.cc: Likewise.
* testsuite/30_threads/future/members/get.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/future/members/share.cc: Likewise.
* testsuite/30_threads/future/members/valid.cc: Likewise.
* testsuite/30_threads/future/members/wait.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/lock/1.cc: Likewise.
* testsuite/30_threads/lock/2.cc: Likewise.
* testsuite/30_threads/lock/3.cc: Likewise.
* testsuite/30_threads/lock/4.cc: Likewise.
* testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/mutex/lock/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/packaged_task/49668.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
* testsuite/30_threads/promise/cons/1.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
* testsuite/30_threads/promise/cons/move.cc: Likewise.
* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
* testsuite/30_threads/promise/members/get_future.cc: Likewise.
* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/this_thread/1.cc: Likewise.
* testsuite/30_threads/this_thread/2.cc: Likewise.
* testsuite/30_threads/this_thread/3.cc: Likewise.
* testsuite/30_threads/this_thread/4.cc: Likewise.
* testsuite/30_threads/thread/cons/1.cc: Likewise.
* testsuite/30_threads/thread/cons/2.cc: Likewise.
* testsuite/30_threads/thread/cons/3.cc: Likewise.
* testsuite/30_threads/thread/cons/4.cc: Likewise.
* testsuite/30_threads/thread/cons/49668.cc: Likewise.
* testsuite/30_threads/thread/cons/5.cc: Likewise.
* testsuite/30_threads/thread/cons/6.cc: Likewise.
* testsuite/30_threads/thread/cons/7.cc: Likewise.
* testsuite/30_threads/thread/cons/8.cc: Likewise.
* testsuite/30_threads/thread/cons/9.cc: Likewise.
* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
* testsuite/30_threads/thread/members/1.cc: Likewise.
* testsuite/30_threads/thread/members/2.cc: Likewise.
* testsuite/30_threads/thread/members/3.cc: Likewise.
* testsuite/30_threads/thread/members/4.cc: Likewise.
* testsuite/30_threads/thread/members/5.cc: Likewise.
* testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise.
* testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/thread/swap/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/try_lock/1.cc: Likewise.
* testsuite/30_threads/try_lock/2.cc: Likewise.
* testsuite/30_threads/try_lock/3.cc: Likewise.
* testsuite/30_threads/try_lock/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise.
* testsuite/ext/rope/pthread7-rope.cc: Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc:
Likewise.
* testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc:
Likewise.
* testsuite/23_containers/vector/capacity/resize/1.cc: Remove
dg-options for mips*-*-irix6*.
* testsuite/27_io/ios_base/storage/1.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
* testsuite/27_io/ios_base/storage/3.cc: Likewise.
* testsuite/lib/libstdc++.exp (v3-build_support): Remove IRIX 6
workaround.
libjava:
* configure.ac (libgcj_cv_exidx): Remove IRIX 6 ld workaround.
(mips-sgi-irix6*): Remove.
(mips-sgi-irix*): Remove.
(AC_CHECK_HEADERS): Remove bstring.h.
* configure: Regenerate.
* include/config.h.in: Regenerate.
* configure.host (mips-sgi-irix6*): Remove.
* include/posix-signal.h [__sgi__]: Remove.
* gnu/java/net/natPlainDatagramSocketImplPosix.cc
[HAVE_BSTRING_H]: Remove.
* gnu/java/net/natPlainDatagramSocketImplWin32.cc: Likewise.
* gnu/java/net/natPlainSocketImplPosix.cc: Likewise.
libitm:
* configure.tgt (*-*-irix6*): Remove.
libgomp:
* configure.tgt (mips-sgi-irix6*): Remove.
libgfortran:
* intrinsics/c99_functions.c [__sgi__ && !HAVE_COMPLEX_H]: Remove.
libgcc:
* config.host (mips-sgi-irix6.5*): Remove.
* config/mips/irix-crti.S: Remove.
* config/mips/irix-crtn.S: Remove.
* config/mips/irix6-unwind.h: Remove.
* config/mips/t-irix6: Remove.
* config/mips/t-slibgcc-irix: Remove.
gnattools:
* configure.ac (mips-sgi-irix*): Remove.
* configure: Regenerate.
gcc/testsuite:
* g++.dg/other/anon5.C: Don't skip on mips-sgi-irix*.
* g++.dg/tree-prof/partition1.C: Likewise.
* g++.dg/tree-prof/partition2.C: Likewise.
* g++.old-deja/g++.other/init19.C: Remove mips-sgi-irix*
handling.
* gcc.c-torture/compile/labels-3.c: Remove dg-options.
* gcc.c-torture/execute/20010724-1.c: Remove.
* gcc.c-torture/execute/20010724-1.x: Remove.
* gcc.c-torture/execute/20040208-2.c: Remove.
* gcc.c-torture/execute/20040208-2.x: Remove.
* gcc.c-torture/execute/ieee/20000320-1.c [__mips__ && __sgi__]:
Remove.
(main) [__mips__ && __sgi__]: Remove.
* gcc.c-torture/execute/ieee/copysign1.c: Remove IRIX reference.
* gcc.c-torture/execute/ieee/copysign2.c: Likewise.
* gcc.c-torture/execute/ieee/mul-subnormal-single-1.x: Remove
mips-sgi-irix6* handling.
* gcc.dg/cpp/assert4.c [__mips__]: Remove __sgi__, sgi.
* gcc.dg/torture/20090618-1.c: Don't skip on mips-sgi-irix*.
* gcc.dg/torture/builtin-frexp-1.c: Remove mips*-*-irix6*
handling.
* gcc.dg/torture/builtin-logb-1.c: Likewise.
* gcc.dg/torture/pr47917.c: Remove mips-sgi-irix6.5 handling.
* gcc.dg/tree-ssa/ssa-store-ccp-3.c: Don't skip on mips*-*-irix*.
* gcc.misc-tests/linkage.exp: Remove mips-sgi-irix6* handling.
* gcc.target/mips/args-1.c [!__sgi__]: Remove.
* gcc.target/mips/interrupt_handler-2.c: Don't skip on
mips-sgi-irix6*.
* gcc.target/mips/interrupt_handler-3.c: Likewise.
* gcc.target/mips/save-restore-1.c: Don't skip on mips-sgi-irix6*.
* gcc.target/mips/save-restore-3.c: Likewise.
* gcc.target/mips/save-restore-4.c: Likewise.
* gcc.target/mips/save-restore-5.c: Likewise.
* gfortran.dg/g77/cabs.f: Don't xfail on mips-sgi-irix6*.
* lib/prune.exp (prune_gcc_output): Remove pruning of IRIX 6 ld
messages.
* lib/target-libpath.exp (set_ld_library_path_env_vars): Remove
IRIX 6 handling.
(restore_ld_library_path_env_vars): Likewise.
* lib/target-supports.exp (check_profiling_available): Remove
mips*-*-irix* handling.
(check_ascii_locale_available): Remove mips-sgi-irix* handling.
(add_options_for_c99_runtime): Remove mips-sgi-irix6.5* handling.
* objc.dg/stabs-1.m: Don't xfail on mips-sgi-irix6.5.
gcc/ada:
* gcc-interface/Makefile.in (mips-sgi-irix6*): Remove.
* a-intnam-irix.ads, mlib-tgt-specific-irix.adb,
s-intman-irix.adb, s-mastop-irix.adb, s-osinte-irix.adb,
s-osinte-irix.ads, s-proinf-irix-athread.adb,
s-proinf-irix-athread.ads, s-taprop-irix.adb, s-tasinf-irix.ads,
system-irix-n32.ads, system-irix-n64.ads, system-irix-o32.ads:
Remove.
* adaint.c [__mips && __sgi]: Remove.
(__gnat_number_of_cpus) [__mips && __sgi]: Remove.
[IS_CROSS && !(__mips && __sgi)]: Remove.
* adaint.h [sgi && _LFAPI]: Remove.
* cstreams.c (__gnat_full_name) [sgi]: Remove.
* env.c (__gnat_unsetenv) [__mips && __sgi]: Remove.
(__gnat_clearenv) [__mips && __sgi]: Remove.
* errno.c (_SGI_MP_SOURCE): Remove.
* gsocket.h [sgi]: Remove.
* init.c: Remove IRIX reference.
[sgi]: Remove.
* link.c [sgi]: Remove.
* s-oscons-tmplt.c [__mips && __sgi] (IOV_MAX): Don't define.
(main) [__mips && __sgi] (MAX_tv_sec): Don't define.
(CLOCK_SGI_FAST, CLOCK_SGI_CYCLE): Remove.
* sysdep.c [sgi]: Remove.
(getc_immediate_common) [sgi]: Remove.
(__gnat_localtime_tzoff) [sgi]: Remove.
* terminals.c [__mips && __sgi] (IRIX): Don't define.
[IRIX] (USE_GETPTY): Don't define.
(allocate_pty_desc) [USE_GETPTY]: Remove.
* g-traceb.ads: Remove IRIX reference.
* g-trasym.ads: Likewise.
* memtrack.adb: Likewise.
* s-interr-sigaction.adb: Likewise.
* gnat_rm.texi (Implementation Advice): Remove SGI info.
(Implementation Defined Characteristics): Likewise.
* gnat_ugn.texi (Summary of Run-Time Configurations, mips-irix):
Remove.
(Irix-Specific Considerations): Remove.
gcc/cp:
* Make-lang.in (doc/g++.1): Remove IRIX 6.5 reference.
gcc:
* config.gcc (enable_obsolete): Remove mips-sgi-irix6.5.
(mips-sgi-irix6.5*): Remove.
* config.host (mips-sgi-irix*): Remove.
* configure.ac (enable_fixed_point): Remove mips*-sgi-irix*.
(set_have_as_tls): Remove *-*-irix6*.
(gcc_cv_ld_static_dynamic): Remove mips-sgi-irix6*.
* configure: Regenerate.
* config/mips/iris6.h: Remove.
* config/mips/iris6.opt: Remove.
* config/mips/t-irix6: Remove.
* config/mips/mips.h (TARGET_GPWORD): Remove IRIX 6 N64 handling.
(TARGET_IRIX6): Remove.
(TARGET_CPU_CPP_BUILTINS): Remove IRIX 6 handling.
Don't define LANGUAGE_C, _LANGUAGE_C for Objective-C.
* config/mips/mips.c (mips_build_builtin_va_list): Remove IRIX 6
handling.
(mips_file_start): Likewise.
* config/mips/mips-protos.h (irix_asm_output_align): Remove.
* config/mips/driver-native.c [__sgi__]: Remove.
(host_detect_local_cpu) [__sgi__]: Remove.
* config/mips/gnu-user.h: Remove iris5.h reference.
* config/mips/mips-modes.def: Remove IRIX 6 reference.
* config/mips/gnu-user64.h (MIPS_TFMODE_FORMAT): Remove.
* config/mips/mips.c (mips_option_override) [MIPS_TFMODE_FORMAT]:
Remove.
* gcc.c (main): Move asm_debug initialization ...
(asm_debug): ... here.
* ginclude/stddef.h (__STDDEF_H__): Don't define.
* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Remove.
* system.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): Poison.
* collect2.c [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
(main) [LINK_ELIMINATE_DUPLICATE_LDIRECTORIES]: Remove.
[LINK_ELIMINATE_DUPLICATE_LDIRECTORIES] (is_in_args): Remove.
* doc/tm.texi.in (Driver, LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
Remove.
* doc/tm.texi: Regenerate.
* doc/invoke.texi (Debugging Options, -gdwarf-<version>): Remove
IRIX 6 reference.
(MIPS Options, -march): Remove IRIX reference.
* doc/install.texi (Binaries, SGI IRIX): Remove.
(Specific, mips-sgi-irix6): Document IRIX 6.5 removal, remove rest
of section.
* doc/trouble.texi (Interoperation): Remove -lgl_s handling.
fixincludes:
* inclhack.def (broken_cabs): Remove IRIX and SunOS 4 support.
(irix___restrict): Remove.
(irix___generic1): Remove.
(irix___generic2): Remove.
(irix_asm_apostrophe): Remove.
(irix_complex): Remove.
(irix_pthread_init): Remove.
(irix_socklen_t): Remove.
(irix_stdint_c99_mode): Remove.
(irix_stdint_c99_types): Remove.
(irix_stdint_c99_macros): Remove.
(irix_stdio_va_list): Remove IRIX 6.5 support.
(irix_wcsftime): Remove.
(stdio_va_list): Remove IRIX 6.5 support.
(svr4_profil): Remove IRIX bypass.
* fixincl.x: Regenerate.
* tests/base/complex.h [IRIX_COMPLEX_CHECK]: Remove.
* tests/base/internal/math_core.h: Remove.
* tests/base/internal/sgimacros.h: Remove.
* tests/base/internal/wchar_core.h: Remove.
* tests/base/math.h [BROKEN_CABS_CHECK]: Remove IRIX and SunOS 4
support.
* tests/base/pthread.h [IRIX_PTHREAD_INIT_CHECK]: Remove.
* tests/base/stdint-irix65.h: Remove.
* tests/base/stdint.h [IRIX_STDINT_C99_MODE_CHECK]: Remove.
* tests/base/sys/asm.h: Remove.
* tests/base/sys/socket.h [IRIX_SOCKLEN_T_CHECK]: Remove.
contrib:
* config-list.mk (LIST): Remove mips-sgi-irix6.5.
toplevel:
* MAINTAINERS (OS Port Maintainers): Remove irix.
* configure.ac (enable_libgomp): Remove *-*-irix6*.
(unsupported_languages): Remove mips-sgi-irix6.*.
(noconfigdirs): Don't add ${libgcj} for mips*-*-irix6*.
(with_stabs): Remove.
* configure: Regenerate.
From-SVN: r185390
2012-03-14 16:33:37 +00:00
|
|
|
* that.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = stdio_va_list;
|
|
|
|
files = stdio.h;
|
2004-11-01 19:01:15 +00:00
|
|
|
bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
|
2004-11-26 22:00:51 +00:00
|
|
|
/*
|
|
|
|
* On Solaris 10, the definition in
|
|
|
|
* <stdio.h> is guarded appropriately by the _XPG4 feature macro;
|
|
|
|
* there is therefore no need for this fix there.
|
|
|
|
*/
|
2005-05-10 01:26:08 +01:00
|
|
|
mach = '*-*-solaris2.1[0-9]*';
|
2004-11-26 22:00:51 +00:00
|
|
|
not_machine = true;
|
2004-11-01 19:01:15 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Use __gnuc_va_list in arg types in place of va_list.
|
|
|
|
* On 386BSD use __gnuc_va_list instead of _VA_LIST_. On Tru64 UNIX V5.1A
|
|
|
|
* use __gnuc_va_list instead of __VA_LIST__. We're hoping the
|
|
|
|
* trailing parentheses and semicolon save all other systems from this.
|
|
|
|
* Define __not_va_list__ (something harmless and unused)
|
|
|
|
* instead of va_list.
|
|
|
|
* Don't claim to have defined va_list.
|
|
|
|
*/
|
|
|
|
sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
|
|
|
|
"s@(va_list)&@(__gnuc_va_list)\\&@\n"
|
|
|
|
"s@ _VA_LIST_));@ __gnuc_va_list));@\n"
|
|
|
|
"s@ __VA_LIST__));@ __gnuc_va_list));@\n"
|
|
|
|
"s@ va_list@ __not_va_list__@\n"
|
|
|
|
"s@\\*va_list@*__not_va_list__@\n"
|
|
|
|
"s@ __va_list)@ __gnuc_va_list)@\n"
|
|
|
|
"s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
|
|
|
|
"@typedef \\1 __not_va_list__;@\n"
|
|
|
|
"s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
|
|
|
|
"s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
|
|
|
|
"s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
|
|
|
|
"s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
|
|
|
|
"s@VA_LIST@DUMMY_VA_LIST@\n"
|
|
|
|
"s@_Va_LIST@_VA_LIST@";
|
|
|
|
test_text = "extern void mumble( va_list);";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix headers that use va_list from stdio.h to use the updated
|
|
|
|
* va_list from the stdio_va_list change. Note _BSD_VA_LIST_ is
|
|
|
|
* dealt with elsewhere. The presence of __gnuc_va_list,
|
|
|
|
* __DJ_va_list, or _G_va_list is taken to indicate that the header
|
|
|
|
* knows what it's doing.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = stdio_va_list_clients;
|
2004-08-14 21:52:08 +00:00
|
|
|
files = com_err.h;
|
|
|
|
files = cps.h;
|
|
|
|
files = curses.h;
|
|
|
|
files = krb5.h;
|
|
|
|
files = lc_core.h;
|
|
|
|
files = pfmt.h;
|
|
|
|
files = wchar.h;
|
|
|
|
files = curses_colr/curses.h;
|
2003-05-22 17:03:57 +00:00
|
|
|
bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
|
2004-11-01 19:01:15 +00:00
|
|
|
/* Don't fix, if we use va_list from stdarg.h, or if the use is
|
|
|
|
otherwise protected. */
|
|
|
|
bypass = 'include <stdarg\.h>|#ifdef va_start';
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Use __gnuc_va_list in arg types in place of va_list.
|
2001-12-06 21:52:42 +00:00
|
|
|
* On 386BSD use __gnuc_va_list instead of _VA_LIST_. On Tru64 UNIX V5.1A
|
|
|
|
* use __gnuc_va_list instead of __VA_LIST__. We're hoping the
|
1998-10-16 07:00:18 +00:00
|
|
|
* trailing parentheses and semicolon save all other systems from this.
|
2000-01-25 08:06:23 +00:00
|
|
|
* Define __not_va_list__ (something harmless and unused)
|
|
|
|
* instead of va_list.
|
1998-10-16 07:00:18 +00:00
|
|
|
* Don't claim to have defined va_list.
|
|
|
|
*/
|
2003-11-03 21:07:34 +00:00
|
|
|
sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
|
2003-07-02 01:30:10 +00:00
|
|
|
"s@(va_list)&@(__gnuc_va_list)\\&@\n"
|
2000-01-25 08:06:23 +00:00
|
|
|
"s@ _VA_LIST_));@ __gnuc_va_list));@\n"
|
2001-12-06 21:52:42 +00:00
|
|
|
"s@ __VA_LIST__));@ __gnuc_va_list));@\n"
|
2000-01-25 08:06:23 +00:00
|
|
|
"s@ va_list@ __not_va_list__@\n"
|
|
|
|
"s@\\*va_list@*__not_va_list__@\n"
|
|
|
|
"s@ __va_list)@ __gnuc_va_list)@\n"
|
2000-02-20 23:15:32 +00:00
|
|
|
"s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
|
|
|
|
"@typedef \\1 __not_va_list__;@\n"
|
2002-10-04 16:13:12 +00:00
|
|
|
"s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
|
2000-01-25 08:06:23 +00:00
|
|
|
"s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
|
2003-07-31 23:33:08 +00:00
|
|
|
"s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
|
2000-01-25 08:06:23 +00:00
|
|
|
"s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
|
|
|
|
"s@VA_LIST@DUMMY_VA_LIST@\n"
|
|
|
|
"s@_Va_LIST@_VA_LIST@";
|
2000-07-13 14:47:55 +00:00
|
|
|
test_text = "extern void mumble( va_list);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2001-05-27 18:21:04 +00:00
|
|
|
/*
|
|
|
|
* "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0"
|
|
|
|
* is "!defined( __STRICT_ANSI__ )"
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = strict_ansi_not;
|
|
|
|
select = "^([ \t]*#[ \t]*if.*)"
|
|
|
|
"(!__STDC__"
|
|
|
|
"|__STDC__[ \t]*==[ \t]*0"
|
|
|
|
"|__STDC__[ \t]*!=[ \t]*1"
|
2001-12-20 04:09:40 +00:00
|
|
|
"|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)";
|
2002-01-28 14:17:11 +00:00
|
|
|
/* Tru64 UNIX V4.0F/V5.1 <standards.h> supports GCC usage of __STDC__. */
|
|
|
|
bypass = 'GNU and MIPS C compilers define __STDC__ differently';
|
2003-05-22 17:03:57 +00:00
|
|
|
/* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which
|
|
|
|
is not defined by GCC, so it is safe. */
|
|
|
|
bypass = '__SCO_VERSION__.*__STDC__ != 1';
|
2001-05-27 18:21:04 +00:00
|
|
|
c_test = stdc_0_in_system_headers;
|
|
|
|
|
|
|
|
c_fix = format;
|
2001-12-20 04:09:40 +00:00
|
|
|
c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
|
2001-05-27 18:21:04 +00:00
|
|
|
|
|
|
|
test_text = "#if !__STDC__ \n"
|
|
|
|
"#if __STDC__ == 0\n"
|
|
|
|
"#if __STDC__ != 1\n"
|
|
|
|
"#if __STDC__ - 0 == 0"
|
|
|
|
"/* not std C */\nint foo;\n"
|
|
|
|
"\n#end-end-end-end-if :-)";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* "__STDC__-0==0"
|
|
|
|
* is "!defined( __STRICT_ANSI__ )" on continued #if-s
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = strict_ansi_not_ctd;
|
2001-12-20 04:09:40 +00:00
|
|
|
files = math.h, limits.h, stdio.h, signal.h,
|
|
|
|
stdlib.h, sys/signal.h, time.h;
|
|
|
|
/*
|
|
|
|
* Starting at the beginning of a line, skip white space and
|
|
|
|
* a leading "(" or "&&" or "||". One of those must be found.
|
|
|
|
* Then, zero, one or more copies of a "defined(_FOO_BAR_) &&"
|
|
|
|
* expression. If these are nested, then they must accumulate
|
|
|
|
* because we won't match any closing parentheses. Finally,
|
|
|
|
* after skipping over all that, we must then match our suspect
|
|
|
|
* phrase: "__STDC__-0==0" with or without white space.
|
|
|
|
*/
|
|
|
|
select = "^([ \t]*" '(\(|&&|\|\|)'
|
|
|
|
"([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*"
|
|
|
|
"[ \t(]*)"
|
|
|
|
"(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)";
|
2001-05-27 18:21:04 +00:00
|
|
|
c_test = stdc_0_in_system_headers;
|
|
|
|
|
|
|
|
c_fix = format;
|
2001-12-20 04:09:40 +00:00
|
|
|
c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
|
2001-05-27 18:21:04 +00:00
|
|
|
|
2001-12-20 04:09:40 +00:00
|
|
|
test_text = "#if 1 && \\\\\n"
|
|
|
|
"&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n"
|
|
|
|
"( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n"
|
|
|
|
"|| __STDC__ - 0 == 0 ) /* not std C */\n"
|
|
|
|
"int foo;\n#endif";
|
2001-05-27 18:21:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1"
|
|
|
|
* is "defined( __STRICT_ANSI__ )"
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = strict_ansi_only;
|
|
|
|
select = "^([ \t]*#[ \t]*if.*)"
|
|
|
|
"(__STDC__[ \t]*!=[ \t]*0"
|
|
|
|
"|__STDC__[ \t]*==[ \t]*1"
|
|
|
|
"|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1"
|
2001-12-20 04:09:40 +00:00
|
|
|
"|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)";
|
2001-05-27 18:21:04 +00:00
|
|
|
c_test = stdc_0_in_system_headers;
|
|
|
|
|
|
|
|
c_fix = format;
|
2001-12-20 04:09:40 +00:00
|
|
|
c_fix_arg = "%1 defined(__STRICT_ANSI__)";
|
2001-05-27 18:21:04 +00:00
|
|
|
|
|
|
|
test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif";
|
|
|
|
};
|
|
|
|
|
2000-05-16 14:01:34 +00:00
|
|
|
/*
|
|
|
|
* IRIX 4.0.5 <rpc/xdr.h> uses struct __file_s
|
|
|
|
* in prototype without previous definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = struct_file;
|
|
|
|
files = rpc/xdr.h;
|
|
|
|
select = '^.*xdrstdio_create.*struct __file_s';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "struct __file_s;\n%0";
|
|
|
|
test_text = "extern void xdrstdio_create( struct __file_s* );";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* IRIX 4.0.5 <rpc/auth.h> uses struct sockaddr
|
|
|
|
* in prototype without previous definition.
|
2003-07-12 19:39:44 +00:00
|
|
|
*
|
|
|
|
* Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same
|
|
|
|
* function, and does define it.
|
2000-05-16 14:01:34 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = struct_sockaddr;
|
|
|
|
files = rpc/auth.h;
|
2003-07-12 19:39:44 +00:00
|
|
|
select = "^.*authdes_create.*struct sockaddr[^_]";
|
2000-05-16 14:01:34 +00:00
|
|
|
bypass = "<sys/socket\.h>";
|
2003-07-12 19:39:44 +00:00
|
|
|
bypass = "struct sockaddr;\n";
|
2000-05-16 14:01:34 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "struct sockaddr;\n%0";
|
|
|
|
test_text = "extern AUTH* authdes_create( struct sockaddr* );";
|
|
|
|
};
|
|
|
|
|
2000-04-30 23:30:15 +00:00
|
|
|
/*
|
|
|
|
* Apply fix this to all OSs since this problem seems to effect
|
|
|
|
* more than just SunOS.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sun_auth_proto;
|
|
|
|
files = rpc/auth.h;
|
|
|
|
files = rpc/clnt.h;
|
|
|
|
files = rpc/svc.h;
|
|
|
|
files = rpc/xdr.h;
|
2004-11-09 23:14:06 +00:00
|
|
|
bypass = "__cplusplus";
|
2000-04-30 23:30:15 +00:00
|
|
|
/*
|
|
|
|
* Select those files containing '(*name)()'.
|
|
|
|
*/
|
2000-05-20 21:32:42 +00:00
|
|
|
select = '\(\*[a-z][a-z_]*\)\(\)';
|
2000-04-30 23:30:15 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n"
|
|
|
|
"#else\n%1();%2\n#endif";
|
|
|
|
c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)';
|
2000-04-30 23:30:15 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
test_text =
|
|
|
|
"struct auth_t {\n"
|
|
|
|
" int (*name)(); /* C++ bad */\n"
|
|
|
|
"};";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix bogus #ifdef on SunOS 4.1.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = sun_bogus_ifdef;
|
|
|
|
files = "hsfs/hsfs_spec.h";
|
|
|
|
files = "hsfs/iso_spec.h";
|
|
|
|
select = '#ifdef(.*\|\|.*)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if%1";
|
|
|
|
|
|
|
|
test_text = "#ifdef __i386__ || __vax__ || __sun4c__";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix the CAT macro in SunOS memvar.h.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-20 21:32:42 +00:00
|
|
|
hackname = sun_catmacro;
|
|
|
|
files = pixrect/memvar.h;
|
|
|
|
select = "^#define[ \t]+CAT\\(a,b\\).*";
|
|
|
|
c_fix = format;
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix_arg =
|
|
|
|
"#ifdef __STDC__\n"
|
|
|
|
"# define CAT(a,b) a##b\n"
|
|
|
|
"#else\n%0\n#endif";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#define CAT(a,b)\ta/**/b";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix return type of free and {c,m,re}alloc in <malloc.h> on SunOS 4.1.
|
|
|
|
* Also fix return type of {m,re}alloc in <malloc.h> on sysV68
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sun_malloc;
|
|
|
|
files = malloc.h;
|
2004-11-09 23:14:06 +00:00
|
|
|
bypass = "_CLASSIC_ANSI_TYPES";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
sed = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
|
|
|
|
sed = "s/int[ \t][ \t]*free/void\tfree/g";
|
|
|
|
sed = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
|
|
|
|
sed = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
|
2000-05-22 04:02:14 +00:00
|
|
|
sed = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g";
|
2000-05-20 21:32:42 +00:00
|
|
|
|
|
|
|
test_text =
|
|
|
|
"typedef char *\tmalloc_t;\n"
|
|
|
|
"int \tfree();\n"
|
|
|
|
"char*\tmalloc();\n"
|
2000-05-22 04:02:14 +00:00
|
|
|
"char*\tcalloc();\n"
|
2000-05-20 21:32:42 +00:00
|
|
|
"char*\trealloc();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Check for yet more missing ';' in struct (in SunOS 4.0.x)
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sun_rusers_semi;
|
|
|
|
files = rpcsvc/rusers.h;
|
|
|
|
select = "_cnt$";
|
|
|
|
sed = "/^struct/,/^};/s/_cnt$/_cnt;/";
|
2000-05-20 21:32:42 +00:00
|
|
|
test_text = "struct mumble\n int _cnt\n};";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* signal.h on SunOS defines signal using (),
|
|
|
|
* which causes trouble when compiling with g++ -pedantic.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sun_signal;
|
|
|
|
files = sys/signal.h;
|
|
|
|
files = signal.h;
|
2000-05-20 21:32:42 +00:00
|
|
|
select = "^void\t" '\(\*signal\(\)\)\(\);.*';
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg =
|
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"void\t(*signal(...))(...);\n"
|
|
|
|
"#else\n%0\n#endif";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
test_text = "void\t(*signal())();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Correct the return type for strlen in strings.h in SunOS 4.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sunos_strlen;
|
|
|
|
files = strings.h;
|
2000-05-20 21:32:42 +00:00
|
|
|
select = "int[ \t]*strlen\\(\\);(.*)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "__SIZE_TYPE__ strlen();%1";
|
|
|
|
test_text = " int\tstrlen(); /* string length */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2013-12-06 08:28:35 +00:00
|
|
|
/*
|
|
|
|
* Linux kernel's vt.h breaks C++
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = suse_linux_vt_cxx;
|
|
|
|
files = linux/vt.h;
|
|
|
|
|
|
|
|
select = "^[ \t]*unsigned int new;";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "unsigned int newev;";
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
test_text = " unsigned int new; /* New console (if changing) */";
|
2013-12-06 08:28:35 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
|
|
|
|
* that is visible to any ANSI compiler using this include. Simply
|
|
|
|
* delete the lines that #define some string functions to internal forms.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = svr4_disable_opt;
|
|
|
|
files = string.h;
|
|
|
|
select = '#define.*__std_hdr_';
|
|
|
|
sed = '/#define.*__std_hdr_/d';
|
2003-04-19 21:10:08 +00:00
|
|
|
test_text = "#define strlen __std_hdr_strlen\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
1999-11-15 14:47:53 +00:00
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Fix broken decl of getcwd present on some svr4 systems.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = svr4_getcwd;
|
|
|
|
files = stdlib.h;
|
|
|
|
files = unistd.h;
|
2000-04-30 23:30:15 +00:00
|
|
|
files = prototypes.h;
|
1998-10-16 07:00:18 +00:00
|
|
|
select = 'getcwd\(char \*, int\)';
|
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "getcwd(char *, size_t)";
|
|
|
|
|
|
|
|
test_text = "extern char* getcwd(char *, int);";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
2000-04-30 23:30:15 +00:00
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Fix broken decl of profil present on some svr4 systems.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = svr4_profil;
|
|
|
|
files = stdlib.h;
|
|
|
|
files = unistd.h;
|
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
select =
|
|
|
|
'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)';
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
'profil(unsigned short *, unsigned int, unsigned int, unsigned int);';
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
2000-04-30 23:30:15 +00:00
|
|
|
|
2003-08-25 21:54:14 +00:00
|
|
|
/*
|
|
|
|
* Correct types for signal handler constants like SIG_DFL; they might be
|
|
|
|
* void (*) (), and should be void (*) (int). C++ doesn't like the
|
|
|
|
* old style.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = svr4_sighandler_type;
|
|
|
|
files = sys/signal.h;
|
|
|
|
select = 'void *\(\*\)\(\)';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "void (*)(int)";
|
|
|
|
test_text = "#define SIG_DFL (void(*)())0\n"
|
|
|
|
"#define SIG_IGN (void (*)())0\n";
|
|
|
|
};
|
|
|
|
|
2003-08-04 19:30:11 +00:00
|
|
|
/*
|
|
|
|
* Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local
|
|
|
|
* function 'getrnge' in <regexp.h> before they declare it. For these
|
|
|
|
* systems add a 'static int' declaration of 'getrnge' into <regexp.h>
|
|
|
|
* early on.
|
|
|
|
*
|
|
|
|
* 'getrnge' traditionally manipulates a file-scope global called 'size',
|
|
|
|
* so put the declaration right after the declaration of 'size'.
|
|
|
|
*
|
|
|
|
* Don't do this if there is already a `static void getrnge' declaration
|
|
|
|
* present, since this would cause a redeclaration error. Solaris 2.x has
|
|
|
|
* such a declaration.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = svr4_undeclared_getrnge;
|
|
|
|
files = regexp.h;
|
|
|
|
select = "getrnge";
|
|
|
|
bypass = "static void getrnge";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n"
|
|
|
|
"static int getrnge ();";
|
|
|
|
c_fix_arg = "^static int[ \t]+size;";
|
|
|
|
test_text = "static int size;\n"
|
|
|
|
"/* stuff which calls getrnge() */\n"
|
|
|
|
"static getrnge()\n"
|
|
|
|
"{}";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2000-01-25 08:06:23 +00:00
|
|
|
* Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
|
|
|
|
* in string.h on sysV68
|
|
|
|
* Correct the return type for strlen in string.h on Lynx.
|
|
|
|
* Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
|
|
|
|
* Add missing const for strdup on OSF/1 V3.0.
|
|
|
|
* On sysV88 layout is slightly different.
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sysv68_string;
|
2000-07-13 14:47:55 +00:00
|
|
|
files = testing.h;
|
1998-10-16 07:00:18 +00:00
|
|
|
files = string.h;
|
2004-11-09 23:14:06 +00:00
|
|
|
bypass = "_CLASSIC_ANSI_TYPES";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
sed = "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/";
|
|
|
|
sed = "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/";
|
|
|
|
sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
|
2000-07-13 14:47:55 +00:00
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
sed = "/^extern char$/N";
|
|
|
|
sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
|
2000-07-13 14:47:55 +00:00
|
|
|
|
2000-08-23 17:03:47 +03:00
|
|
|
sed = "/^extern int$/N";
|
|
|
|
sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
sed = "/^\tstrncmp(),$/N";
|
2000-07-13 14:47:55 +00:00
|
|
|
sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/'
|
|
|
|
'\1;' "\\\nextern unsigned int\\\n\\2/";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"extern int strlen();\n"
|
|
|
|
|
|
|
|
"extern int ffs(long);\n"
|
|
|
|
|
|
|
|
"extern char\n"
|
|
|
|
"\t*memccpy(),\n"
|
|
|
|
"\tmemcpy();\n"
|
|
|
|
|
|
|
|
"extern int\n"
|
2000-08-23 17:03:47 +03:00
|
|
|
"\tstrcmp(),\n"
|
2000-07-13 14:47:55 +00:00
|
|
|
"\tstrncmp(),\n"
|
|
|
|
"\tstrlen(),\n"
|
|
|
|
"\tstrspn();\n"
|
|
|
|
|
|
|
|
"extern int\n"
|
|
|
|
"\tstrlen(), strspn();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2000-05-20 21:32:42 +00:00
|
|
|
* Fix return type of calloc, malloc, realloc, bsearch and exit
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = sysz_stdlib_for_sun;
|
|
|
|
files = stdlib.h;
|
2004-11-12 22:26:01 +00:00
|
|
|
bypass = "_CLASSIC_ANSI_TYPES";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-20 21:32:42 +00:00
|
|
|
select = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "void *\t%1(";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"extern char*\tcalloc(size_t);\n"
|
|
|
|
"extern char*\tmalloc(size_t);\n"
|
|
|
|
"extern char*\trealloc(void*,size_t);\n"
|
|
|
|
"extern char*\tbsearch(void*,size_t,size_t);\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2002-05-21 18:11:29 -07:00
|
|
|
/*
|
|
|
|
* __thread is now a keyword.
|
|
|
|
*/
|
|
|
|
fix = {
|
2002-05-22 02:59:19 +00:00
|
|
|
hackname = thread_keyword;
|
|
|
|
files = "pthread.h";
|
2013-12-08 21:55:46 +00:00
|
|
|
files = bits/sigthread.h, '*/bits/sigthread.h';
|
2002-06-02 23:17:30 +00:00
|
|
|
select = "([* ])__thread([,)])";
|
2002-05-22 02:59:19 +00:00
|
|
|
c_fix = format;
|
2002-06-02 23:17:30 +00:00
|
|
|
c_fix_arg = "%1__thr%2";
|
2002-05-21 18:11:29 -07:00
|
|
|
|
2002-05-22 13:02:16 -07:00
|
|
|
test_text =
|
|
|
|
"extern int pthread_create (pthread_t *__restrict __thread,\n"
|
2002-05-22 14:29:38 -07:00
|
|
|
"extern int pthread_kill (pthread_t __thread, int __signo);\n"
|
|
|
|
"extern int pthread_cancel (pthread_t __thread);";
|
2002-05-21 18:11:29 -07:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
* if the #if says _cplusplus, not the double underscore __cplusplus
|
|
|
|
* that it should be
|
1998-10-16 07:00:18 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = tinfo_cplusplus;
|
|
|
|
files = tinfo.h;
|
fixtests.c (is_cxx_header): New fn, split out of double_slash_test.
1999-12-17 13:21 -0800 Zack Weinberg <zack@rabi.columbia.edu>
* fixtests.c (is_cxx_header): New fn, split out of
double_slash_test.
(else_endif_label): Allow "#endif // comment" in C++ headers,
as determined by is_cxx_header.
* fixfixes.c (else_endif_label_fix): Update comment.
* fixincl.c: Don't output VERB_PROGRESS lines if stdout is not
a tty.
* genfixes: Correct double thinko in commandline parsing.
* hackshell.tpl: Generate correct sh syntax for bypass
entries.
* inclhack.def (all): Whenever an inserted preprocessor
conditional is split over multiple lines, use double
backslashes in this file so the fixed header will be readable.
(AAB_fd_zero_glibc_1_0): Rename to AAB_fd_zero_asm_posix_types_h
and add bypass entry for correct version of this header.
(AAB_fd_zero_glibc_1_x): Rename to AAB_fd_zero_gnu_types_h.
(AAB_fd_zero_glibc_2_0): Rename to AAB_fd_zero_selectbits_h.
(hpux8_bogus_inlines): New fix, split from...
(ultrix_atof_param) ... here.
(math_expression): Add bypass entry keyed to glibc comment
indicating the problem has been dealt with; disable
unnecessary sed operations; update commentary.
(math_gcc_ifndefs): Rename to math_huge_val_from_dbl_max,
add select and bypass entries, simplify shell operation.
(math_huge_val_ifndef): Split from math_gcc_ifndefs.
(ip_missing_semi, rs6000_param, tinfo_cplusplus,
ultrix_atof_param): Add select entry.
(stdio_va_list, sunos_mather_decl): Add bypass entry.
(systypes_for_aix, sysv86_string, tinfo_cplusplus): Put the
comments with the fixes they describe.
* fixincl.x, fixincl.sh, inclhack.sh: Regen.
From-SVN: r30999
1999-12-17 21:49:30 +00:00
|
|
|
select = "[ \t]_cplusplus";
|
2000-05-31 14:26:57 +00:00
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = " __cplusplus";
|
|
|
|
test_text = "#ifdef _cplusplus\nint bogus;\n#endif";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* parameters not const on DECstation Ultrix V4.0 and OSF/1.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-31 14:26:57 +00:00
|
|
|
hackname = ultrix_const;
|
|
|
|
files = stdio.h;
|
|
|
|
select = 'perror\( char \*';
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1 const %3 *__";
|
|
|
|
c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)"
|
|
|
|
"[ \t]+(char|void) \\*__";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"extern void perror( char *__s );\n"
|
|
|
|
"extern int fputs( char *__s, FILE *);\n"
|
|
|
|
"extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n"
|
|
|
|
"extern int fscanf( FILE *__stream, char *__format, ...);\n"
|
|
|
|
"extern int scanf( char *__format, ...);\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* parameters not const on DECstation Ultrix V4.0 and OSF/1.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = ultrix_const2;
|
|
|
|
files = stdio.h;
|
|
|
|
|
|
|
|
select = '\*fopen\( char \*';
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%1( const char *%3, const char *";
|
|
|
|
c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\("
|
|
|
|
"[ \t]*char[ \t]*\\*([^,]*),"
|
|
|
|
"[ \t]*char[ \t]*\\*[ \t]*";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-31 14:26:57 +00:00
|
|
|
test_text =
|
|
|
|
"extern FILE *fopen( char *__filename, char *__type );\n"
|
|
|
|
"extern int sscanf( char *__s, char *__format, ...);\n"
|
|
|
|
"extern FILE *popen(char *, char *);\n"
|
|
|
|
"extern char *tempnam(char*,char*);\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix definitions of macros used by va-i960.h in VxWorks header file.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-31 14:26:57 +00:00
|
|
|
hackname = va_i960_macro;
|
|
|
|
files = arch/i960/archI960.h;
|
|
|
|
select = "__(vsiz|vali|vpad|alignof__)";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "__vx%1";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"extern int __vsiz vsiz;\n"
|
|
|
|
"extern int __vali vali;\n"
|
|
|
|
"extern int __vpad vpad;\n"
|
|
|
|
"#define __alignof__(x) ...";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
/*
|
|
|
|
* On VMS, add missing braces around sigset_t constants.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_add_missing_braces;
|
|
|
|
select = "(_SIG_[A-Z]+_SET[ \t]+= \\{)(0x[0F]+, 0x[0F]+)";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = "rtldef/signal.h";
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg = '%1 {%2} ';
|
|
|
|
|
|
|
|
test_text = "static const __sigset_t _SIG_EMPTY_SET = "
|
|
|
|
"{0x00000000, 0x00000000},\n"
|
|
|
|
" _SIG_FULL_SET = {0xFFFFFFFF, 0xFFFFFFFF};\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* On VMS, some DEC-C builtins are directly used.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_decc_builtin;
|
|
|
|
select = "(__MEMSET|__MEMMOVE|__MEMCPY|__STRLEN|__STRCPY)";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = rtldef/string.h, rtldef/time.h, rtldef/strings.h,
|
|
|
|
rtldef/socket.h;
|
|
|
|
sed = "s@__MEMSET@memset@";
|
|
|
|
sed = "s@__MEMMOVE@memmove@";
|
|
|
|
sed = "s@__MEMCPY@memcpy@";
|
|
|
|
sed = "s@__STRLEN@strlen@";
|
|
|
|
sed = "s@__STRCPY@strcpy@";
|
|
|
|
|
|
|
|
test_text = "define FD_ZERO(__p) __MEMSET((__p), 0, sizeof(*(__p)))\n";
|
|
|
|
};
|
|
|
|
|
2011-09-26 12:12:51 +00:00
|
|
|
/*
|
|
|
|
* Define __CAN_USE_EXTERN_PREFIX on vms.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_define_can_use_extern_prefix;
|
|
|
|
files = "rtldef/decc$types.h";
|
|
|
|
select = "#[ \t]*else\n"
|
|
|
|
"#[ \t]*if defined\\(__DECCXX\\)\n"
|
|
|
|
"#[ \t]*define __CAN_USE_EXTERN_PREFIX 1\n";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg = "%0"
|
|
|
|
"# elif defined (__GNUC__)\n"
|
|
|
|
"#\tdefine __CAN_USE_EXTERN_PREFIX 1\n";
|
|
|
|
|
|
|
|
test_text = "# else\n"
|
|
|
|
"# if defined(__DECCXX)\n"
|
|
|
|
"#\tdefine __CAN_USE_EXTERN_PREFIX 1\n"
|
|
|
|
"# endif\n"
|
|
|
|
"# endif\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* On VMS, disable the use of dec-c string builtins
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_disable_decc_string_builtins;
|
|
|
|
select = "#if !defined\\(__VAX\\)\n";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = "rtldef/string.h";
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg = "#if !defined(__VAX) && !defined(__GNUC__)\n";
|
|
|
|
|
|
|
|
test_text = "#if !defined(__VAX)\n";
|
|
|
|
};
|
|
|
|
|
2012-03-12 14:23:03 +00:00
|
|
|
/*
|
|
|
|
* On VMS, fix incompatible redeclaration of hostalias.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_do_not_redeclare_hostalias;
|
|
|
|
select = "(void[ \t]+fp_nquery \\(const u_char \\*, int, FILE \\*\\);)\n"
|
|
|
|
"(__char_ptr32[ \t]+hostalias \\(const char \\*\\);)";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = "rtldef/resolv.h";
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg = "%1\n"
|
|
|
|
"/* %2 */";
|
|
|
|
|
|
|
|
test_text = "void fp_nquery (const u_char *, int, FILE *);\n"
|
|
|
|
"__char_ptr32 hostalias (const char *);\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* On VMS, forward declare structure before referencing them in prototypes.
|
2012-03-12 14:23:03 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = vms_forward_declare_struct;
|
|
|
|
select = "(/\\* forward decls for C\\+\\+ \\*/\n)"
|
|
|
|
"#ifdef __cplusplus\n";
|
2012-03-12 14:23:03 +00:00
|
|
|
mach = "*-*-*vms*";
|
2013-12-08 21:55:46 +00:00
|
|
|
files = rtldef/if.h;
|
|
|
|
c_fix = format;
|
2012-03-12 14:23:03 +00:00
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "%1"
|
|
|
|
"#if defined (__cplusplus) || defined (__GNUC__)\n";
|
|
|
|
|
|
|
|
test_text = "/* forward decls for C++ */\n"
|
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"struct foo;\n"
|
|
|
|
"#endif\n";
|
2012-03-12 14:23:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* On VMS, do not declare getopt and al if pointers are 64 bit.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_no_64bit_getopt;
|
2013-07-06 17:43:46 +00:00
|
|
|
select = "^[ \t]*(extern[ \t]*)?(int[ \t]*(getopt|optind|opterr|optopt)"
|
|
|
|
"|(char \\*optarg))([ \t]*\\(.*\\))?;\n";
|
2012-03-12 14:23:03 +00:00
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = rtldef/stdio.h, rtldef/unistd.h;
|
|
|
|
c_fix = format;
|
|
|
|
|
2013-07-06 17:43:46 +00:00
|
|
|
c_fix_arg = <<- _EOArg_
|
|
|
|
#if __INITIAL_POINTER_SIZE != 64 /* getopt is short ptr only. */
|
|
|
|
%0#endif
|
|
|
|
|
|
|
|
_EOArg_;
|
2012-03-12 14:23:03 +00:00
|
|
|
|
|
|
|
test_text = "int getopt (int, char * const [], const char *);";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* On VMS, force the use of fast setjmp, as the normal setjmp uses conditions
|
|
|
|
* which is not yet fully supported by gcc.
|
2012-03-12 14:23:03 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = vms_use_fast_setjmp;
|
|
|
|
select = "(#[ \t]*if[ \t]*defined\\(__FAST_SETJMP\\)[ \t]*\\|\\|)";
|
2012-03-12 14:23:03 +00:00
|
|
|
mach = "*-*-*vms*";
|
2013-12-08 21:55:46 +00:00
|
|
|
files = rtldef/setjmp.h;
|
2012-03-12 14:23:03 +00:00
|
|
|
c_fix = format;
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "%0 defined (__GNUC__) ||";
|
2012-03-12 14:23:03 +00:00
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
test_text = "# if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP)";
|
2012-03-12 14:23:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
2013-12-08 21:55:46 +00:00
|
|
|
* On VMS, use pragma extern_model instead of VAX-C keywords.
|
2012-03-12 14:23:03 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2013-12-08 21:55:46 +00:00
|
|
|
hackname = vms_use_pragma_extern_model;
|
|
|
|
select = "#if defined\\(__DECC\\) \\|\\| defined\\(__DECCXX\\)\n"
|
|
|
|
"# pragma extern_model __save\n";
|
2012-03-12 14:23:03 +00:00
|
|
|
mach = "*-*-*vms*";
|
|
|
|
c_fix = format;
|
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
c_fix_arg = "#if defined(__DECC) || defined(__DECCXX) || defined(__GNUC__)\n"
|
|
|
|
"# pragma extern_model __save\n";
|
2012-03-12 14:23:03 +00:00
|
|
|
|
2013-12-08 21:55:46 +00:00
|
|
|
test_text = "#if defined(__DECC) || defined(__DECCXX)\n"
|
|
|
|
"# pragma extern_model __save\n"
|
|
|
|
"# pragma extern_model strict_refdef\n"
|
|
|
|
" extern struct x zz$yy;\n"
|
|
|
|
"# pragma extern_model __restore\n"
|
|
|
|
"#endif\n";
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* On VMS, change <resource.h> to <sys/resource.h> to avoid a
|
|
|
|
* conflict while building gcc. Likewise for <builtins.h>
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vms_use_quoted_include;
|
|
|
|
select = "(#[ \t]*include[ \t]+)<(resource|builtins)\\.h>";
|
|
|
|
mach = "*-*-*vms*";
|
|
|
|
files = rtldef/wait.h, starlet_c/pthread.h;
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg = '%1<sys/%2.h>';
|
|
|
|
|
|
|
|
test_text = "# include <resource.h>";
|
2012-03-12 14:23:03 +00:00
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
2003-07-15 00:43:24 +00:00
|
|
|
* AIX and Interix headers define NULL to be cast to a void pointer,
|
1998-10-16 07:00:18 +00:00
|
|
|
* which is illegal in ANSI C++.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-31 14:26:57 +00:00
|
|
|
hackname = void_null;
|
2013-05-04 10:49:59 -04:00
|
|
|
files = curses.h, dbm.h, locale.h, stdio.h, stdlib.h, string.h,
|
|
|
|
time.h, unistd.h, sys/dir.h, sys/param.h, sys/types.h;
|
2004-10-28 21:44:31 +00:00
|
|
|
/* avoid changing C++ friendly NULL */
|
|
|
|
bypass = __cplusplus;
|
2011-10-25 20:07:19 +00:00
|
|
|
bypass = __null;
|
2000-05-31 14:26:57 +00:00
|
|
|
select = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
|
|
|
|
c_fix = format;
|
2013-05-04 10:49:59 -04:00
|
|
|
c_fix_arg = <<- _EOFix_
|
|
|
|
#ifndef NULL
|
|
|
|
#ifdef __cplusplus
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#define NULL __null
|
|
|
|
#else /* ! __GNUG__ */
|
|
|
|
#define NULL 0L
|
|
|
|
#endif /* __GNUG__ */
|
|
|
|
#else /* ! __cplusplus */
|
|
|
|
#define NULL ((void *)0)
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* !NULL */
|
|
|
|
_EOFix_;
|
2000-05-31 14:26:57 +00:00
|
|
|
test_text = "# define\tNULL \t((void *)0) /* typed NULL */";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Make VxWorks header which is almost gcc ready fully gcc ready.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_gcc_problem;
|
|
|
|
files = types/vxTypesBase.h;
|
|
|
|
select = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
|
|
|
|
|
|
|
|
sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
|
|
|
|
"#if 1/";
|
|
|
|
|
|
|
|
sed = "/[ \t]size_t/i\\\n"
|
|
|
|
"#ifndef _GCC_SIZE_T\\\n"
|
|
|
|
"#define _GCC_SIZE_T\n";
|
|
|
|
|
|
|
|
sed = "/[ \t]size_t/a\\\n"
|
|
|
|
"#endif\n";
|
|
|
|
|
|
|
|
sed = "/[ \t]ptrdiff_t/i\\\n"
|
|
|
|
"#ifndef _GCC_PTRDIFF_T\\\n"
|
|
|
|
"#define _GCC_PTRDIFF_T\n";
|
|
|
|
|
|
|
|
sed = "/[ \t]ptrdiff_t/a\\\n"
|
|
|
|
"#endif\n";
|
|
|
|
|
|
|
|
sed = "/[ \t]wchar_t/i\\\n"
|
|
|
|
"#ifndef _GCC_WCHAR_T\\\n"
|
|
|
|
"#define _GCC_WCHAR_T\n";
|
|
|
|
|
|
|
|
sed = "/[ \t]wchar_t/a\\\n"
|
|
|
|
"#endif\n";
|
2000-05-31 14:26:57 +00:00
|
|
|
|
|
|
|
test_text =
|
|
|
|
"#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n"
|
|
|
|
"typedef unsigned int size_t;\n"
|
|
|
|
"typedef long ptrdiff_t;\n"
|
|
|
|
"typedef unsigned short wchar_t;\n"
|
|
|
|
"#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
/*
|
|
|
|
* Wrap VxWorks ioctl to keep everything pretty
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_ioctl_macro;
|
|
|
|
files = ioLib.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n"
|
fixincludes: vxworks: remove unnecessary parentheses in ioctl wrapper macro
The rationale for the fixinclude ioctl macro wrapper is, as far as I can
tell (https://gcc.gnu.org/ml/gcc-patches/2012-09/msg01619.html)
Fix 2: Add hack for ioctl() on VxWorks.
ioctl() is supposed to be variadic, but VxWorks only has a three
argument version with the third argument of type int. This messes up
when the third argument is not implicitly convertible to int. This
adds a macro which wraps around ioctl() and explicitly casts the third
argument to an int. This way, the most common use case of ioctl (with
a const char * for the third argument) will compile in C++, where
pointers must be explicitly casted to int.
However, we have existing C++ code that calls the ioctl function via
::ioctl(foo, bar, baz)
and obviously this breaks when it gets expanded to
::(ioctl)(foo, bar, (int)(baz))
Since the GNU C preprocessor already prevents recursive expansion of
function-like macros, the parentheses around ioctl are unnecessary.
Incidentally, there is also a macro sioIoctl() in the vxworks sioLib.h
header that expands to
((pSioChan)->pDrvFuncs->ioctl (pSioChan, cmd, arg))
which also breaks when that gets further expanded to
((pSioChan)->pDrvFuncs->(ioctl) (pSioChan, cmd, (int)(arg)))
This patch partly fixes that issue as well, but the third argument to
the pDrvFuncs->ioctl method should be void*, so the cast to (int) is
slightly annoying. Internally, we've simply patched the sioIoctl macro:
(((pSioChan)->pDrvFuncs->ioctl) (pSioChan, cmd, arg))
From-SVN: r264056
2018-09-03 15:26:45 +02:00
|
|
|
"#define ioctl(fd, func, arg) ioctl(fd, func, (int)(arg))\n";
|
2012-10-28 21:42:48 +00:00
|
|
|
c_fix_arg = "extern[\t ]+int[\t ]+ioctl[\t ]*\\([\t ,[:alnum:]]*\\);";
|
|
|
|
|
|
|
|
test_text = "extern int ioctl ( int asdf1234, int jkl , int qwerty ) ;";
|
|
|
|
};
|
2022-01-10 11:26:30 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Provide C99 FP classification support in VxWorks math.h if
|
|
|
|
* not already there. Note the strict expectation on #define without
|
|
|
|
* whitespaces in the bypass expression, which "works" for
|
|
|
|
* the system headers we have met and doesn't match test texts for
|
|
|
|
* other hacks, found in the test baseline.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_math_h_fp_c99;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
files = math.h;
|
|
|
|
bypass = "#define[ \t]+FP_INFINITE";
|
|
|
|
select = "#define HUGE_VAL[ \t]*_ARCH.*";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = << _EOArg_
|
|
|
|
|
|
|
|
%0
|
|
|
|
|
|
|
|
#if _C99
|
|
|
|
|
|
|
|
#define FP_INFINITE 1
|
|
|
|
#define FP_NAN 2
|
|
|
|
#define FP_NORMAL (-1)
|
|
|
|
#define FP_SUBNORMAL (-2)
|
|
|
|
#define FP_ZERO 0
|
|
|
|
|
|
|
|
#define fpclassify(x) \
|
|
|
|
__builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \
|
|
|
|
FP_SUBNORMAL, FP_ZERO, (x))
|
|
|
|
|
|
|
|
#define signbit(x) __builtin_signbit(x)
|
|
|
|
#define isfinite(x) __builtin_isfinite(x)
|
|
|
|
#define isnormal(x) __builtin_isnormal(x)
|
|
|
|
#define isnan(x) __builtin_isnan(x)
|
|
|
|
#define isinf(x) __builtin_isinf(x)
|
|
|
|
|
|
|
|
#define isgreater(x, y) __builtin_isgreater((x),(y))
|
|
|
|
#define isgreaterequal(x, y) __builtin_isgreaterequal((x),(y))
|
|
|
|
#define isless(x, y) __builtin_isless((x),(y))
|
|
|
|
#define islessequal(x, y) __builtin_islessequal((x),(y))
|
|
|
|
#define islessgreater(x, y) __builtin_islessgreater((x),(y))
|
|
|
|
#define isunordered(x, y) __builtin_isunordered((x),(y))
|
|
|
|
|
|
|
|
#endif /* _C99 */
|
|
|
|
|
|
|
|
_EOArg_;
|
|
|
|
|
|
|
|
test_text = "#define HUGE_VAL _ARCH_HUGH_VAL";
|
|
|
|
};
|
2012-10-28 21:42:48 +00:00
|
|
|
|
|
|
|
/*
|
2020-01-14 10:25:35 +00:00
|
|
|
* mkdir's posix interface expects two arguments. While the RTP VxWorks
|
|
|
|
* API is fine, the kernel version handles only one. We used to expose
|
|
|
|
* a macro and this didn't play nice with uses such as posix:mkdir(x, y)
|
|
|
|
* in libstdc++, so we expose a vararg prototype instead.
|
2012-10-28 21:42:48 +00:00
|
|
|
*/
|
|
|
|
fix = {
|
2020-01-14 10:25:35 +00:00
|
|
|
hackname = vxworks_posix_mkdir;
|
2012-10-28 21:42:48 +00:00
|
|
|
files = sys/stat.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
c_fix = format;
|
2020-01-14 10:25:35 +00:00
|
|
|
c_fix_arg = "extern STATUS mkdir(const char *dir, ...);";
|
2012-10-28 21:42:48 +00:00
|
|
|
c_fix_arg = "extern[\t ]+STATUS[\t ]+mkdir[\t ]*"
|
|
|
|
"\\([\t ]*const[\t ]+char[\t ]*\\*[\t ]*" /* arg type */
|
|
|
|
"(|[_[:alpha:]][_[:alnum:]]*)" /* arg name (optional) */
|
|
|
|
"\\)[\t ]*;";
|
2020-01-14 10:25:35 +00:00
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
test_text = "extern STATUS mkdir (const char * _qwerty) ;";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Fix VxWorks <time.h> to not require including <vxTypes.h>.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-05-31 14:26:57 +00:00
|
|
|
hackname = vxworks_needs_vxtypes;
|
|
|
|
files = time.h;
|
|
|
|
select = "uint_t([ \t]+_clocks_per_sec)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "unsigned int%1";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "uint_t\t_clocks_per_sec;";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Fix VxWorks <sys/stat.h> to not require including <vxWorks.h>.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_needs_vxworks;
|
|
|
|
files = sys/stat.h;
|
1999-03-31 12:02:19 +00:00
|
|
|
test = " -r types/vxTypesOld.h";
|
|
|
|
test = " -n \"`egrep '#include' $file`\"";
|
|
|
|
test = " -n \"`egrep ULONG $file`\"";
|
2000-05-31 14:26:57 +00:00
|
|
|
select = "#[ \t]define[ \t]+__INCstath";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
|
|
|
sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
|
|
|
|
"#include <types/vxTypesOld.h>\n";
|
2000-05-31 14:26:57 +00:00
|
|
|
|
|
|
|
test_text = "`touch types/vxTypesOld.h`"
|
|
|
|
"#include </dev/null> /* ULONG */\n"
|
|
|
|
"# define\t__INCstath <sys/stat.h>";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2021-12-16 13:50:25 +00:00
|
|
|
/*
|
|
|
|
* yvals.h on VxWorks-6 expects the toolchain to provide its own
|
|
|
|
* version of the header, which we don't do. Arrange to fallback
|
|
|
|
* on the system definition.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_next_yvals;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
files = yvals.h;
|
|
|
|
select = "#include_next <yvals.h>";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#if 0 /* GCC does not provide yvals.h. */\n%1";
|
|
|
|
c_fix_arg = "#if .*\n"
|
|
|
|
"/\\* .*\n"
|
|
|
|
"(#include_next <yvals.h>\n)";
|
|
|
|
|
|
|
|
test_text = "#if (defined(__cplusplus) && defined(__GNUC__))\n"
|
|
|
|
"/* GCC C++ has it's own yvals.h */\n"
|
|
|
|
"#include_next <yvals.h>\n"
|
|
|
|
"#else\n";
|
|
|
|
};
|
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
/*
|
|
|
|
* Make it so VxWorks does not include gcc/regs.h accidentally
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_regs;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
select = "#[\t ]*include[\t ]+[<\"]regs.h[>\"]";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#include <arch/../regs.h>";
|
|
|
|
|
|
|
|
test_text = "#include <regs.h>\n";
|
|
|
|
};
|
|
|
|
|
2020-01-14 10:46:42 +00:00
|
|
|
/*
|
|
|
|
* Likewise, open's posix interface allows two or three arguments and
|
|
|
|
* some VxWorks headers expose only a strict 3 arguments version. Merely
|
|
|
|
* changing the prototype into a varargs one is risky as the implementation
|
|
|
|
* would receive garbage in the third arg for calls providing only two,
|
|
|
|
* which libstdc++ does. We simply provide an always inline overload for C++
|
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Both fcntl.h and ioLib.h might "feature" such a prototype for _WRS_KERNEL.
|
|
|
|
* The latter #includes the former though (since 1992 according to the embedded
|
|
|
|
* log), so just leave ioLib.h alone.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_posix_open;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
files = fcntl.h;
|
|
|
|
|
|
|
|
select = "extern int.*open \\(const char \\*[ a-z]*, int[ a-z]*, int[ a-z]*\\);";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = << _EOArg_
|
|
|
|
%0
|
|
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
|
|
extern "C++" {
|
|
|
|
inline int open (const char *, int) __attribute__((__always_inline__));
|
|
|
|
|
|
|
|
inline int
|
|
|
|
open (const char *name, int flags)
|
|
|
|
{
|
|
|
|
return open (name, flags, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
_EOArg_;
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"extern int open (const char *, int, int);\n"
|
|
|
|
"extern int open (const char *name, int flags, int mode );\n";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* Another bad dependency in VxWorks 5.2 <time.h>.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_time;
|
|
|
|
files = time.h;
|
1999-03-31 12:02:19 +00:00
|
|
|
test = " -r vxWorks.h";
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2000-05-31 14:26:57 +00:00
|
|
|
select = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*";
|
|
|
|
c_fix = format;
|
|
|
|
|
|
|
|
c_fix_arg =
|
|
|
|
"#ifndef __gcc_VOIDFUNCPTR_defined\n"
|
|
|
|
"#ifdef __cplusplus\n"
|
|
|
|
"typedef void (*__gcc_VOIDFUNCPTR) (...);\n"
|
|
|
|
"#else\n"
|
|
|
|
"typedef void (*__gcc_VOIDFUNCPTR) ();\n"
|
|
|
|
"#endif\n"
|
|
|
|
"#define __gcc_VOIDFUNCPTR_defined\n"
|
|
|
|
"#endif\n"
|
|
|
|
"#define VOIDFUNCPTR __gcc_VOIDFUNCPTR";
|
|
|
|
|
|
|
|
test_text = "`touch vxWorks.h`"
|
|
|
|
"#define VOIDFUNCPTR (void(*)())";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
2012-10-28 21:42:48 +00:00
|
|
|
/*
|
|
|
|
* This hack makes write const-correct on VxWorks
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_write_const;
|
|
|
|
files = ioLib.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "extern int write (int, const char*, size_t);";
|
|
|
|
c_fix_arg = "extern[\t ]+int[\t ]+write[\t ]*\\("
|
|
|
|
"[\t ]*int[\t ]*,"
|
|
|
|
"[\t ]*char[\t ]*\\*[\t ]*,"
|
|
|
|
"[\t ]*size_t[\t ]*\\)[\t ]*;";
|
|
|
|
|
|
|
|
test_text = "extern int write ( int , char * , size_t ) ;";
|
|
|
|
};
|
1998-10-16 07:00:18 +00:00
|
|
|
|
2018-05-25 18:51:58 +02:00
|
|
|
/*
|
|
|
|
* This hack ensures the include_next in the fixed unistd.h actually
|
|
|
|
* finds the system's unistd.h and not the fixed unistd.h again.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_iolib_include_unistd;
|
|
|
|
files = ioLib.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
select = "#include \"unistd.h\"";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#include <unistd.h>";
|
|
|
|
|
|
|
|
test_text = "#include \"unistd.h\"";
|
|
|
|
};
|
|
|
|
|
2022-01-06 17:28:20 +00:00
|
|
|
/*
|
|
|
|
* Make sure there is a visible prototype of sysClkRateGet() when
|
|
|
|
* CLOCKS_PER_SEC is #defined to that in time.h for VxWorks. This would
|
|
|
|
* typically be provided by sysLib.h.
|
|
|
|
*
|
|
|
|
* The new #include has to come after the one for vxWorks.h in kernel headers
|
|
|
|
* and vxWorks.h is typically not #included in RTP headers. yvals.h is
|
|
|
|
* conditionally included in the latter, instead, and new #include are better
|
|
|
|
* inserted after that.
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = vxworks_time_h_syslib;
|
|
|
|
files = time.h;
|
|
|
|
mach = "*-*-vxworks*";
|
|
|
|
select = "[ \t]*#define[ \t]+CLOCKS_PER_SEC[ \t]+sysClkRateGet.*";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "%0\n#include <sysLib.h>";
|
|
|
|
c_fix_arg = "#include <vxWorks.h>|#endif.* _YVALS.*";
|
|
|
|
|
|
|
|
test_text =
|
|
|
|
"/* kernel header pattern: */\n"
|
|
|
|
"#include <vxWorks.h>\n"
|
|
|
|
"\n"
|
|
|
|
"/* rtp header pattern: */\n"
|
|
|
|
"#ifndef _YVALS\n"
|
|
|
|
"#include <yvals.h>\n"
|
|
|
|
"#endif /* _YVALS */\n"
|
|
|
|
"\n"
|
|
|
|
"#define CLOCKS_PER_SEC sysClkRateGet()";
|
|
|
|
};
|
|
|
|
|
1998-10-16 07:00:18 +00:00
|
|
|
/*
|
|
|
|
* There are several name conflicts with C++ reserved words in X11 header
|
|
|
|
* files. These are fixed in some versions, so don't do the fixes if
|
|
|
|
* we find __cplusplus in the file. These were found on the RS/6000.
|
|
|
|
*/
|
|
|
|
fix = {
|
2000-06-17 19:43:21 +00:00
|
|
|
hackname = x11_class;
|
|
|
|
files = X11/ShellP.h;
|
|
|
|
bypass = __cplusplus;
|
|
|
|
select = "^([ \t]*char \\*)class;(.*)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n"
|
|
|
|
"#else\n%1class;%2\n#endif";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text =
|
|
|
|
"struct {\n"
|
|
|
|
" char *class;\n"
|
|
|
|
"} mumble;\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* class in Xm/BaseClassI.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = x11_class_usage;
|
|
|
|
files = Xm/BaseClassI.h;
|
|
|
|
bypass = "__cplusplus";
|
2000-05-31 14:26:57 +00:00
|
|
|
|
|
|
|
select = " class\\)";
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = " c_class)";
|
|
|
|
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "extern mumble (int class);\n";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* new in Xm/Traversal.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = x11_new;
|
|
|
|
files = Xm/Traversal.h;
|
|
|
|
bypass = __cplusplus;
|
|
|
|
|
|
|
|
sed = "/Widget\told, new;/i\\\n"
|
|
|
|
"#ifdef __cplusplus\\\n"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
"\\\tWidget\told, c_new;\\\n"
|
1998-10-16 07:00:18 +00:00
|
|
|
"#else\n";
|
|
|
|
|
|
|
|
sed = "/Widget\told, new;/a\\\n"
|
|
|
|
"#endif\n";
|
|
|
|
|
|
|
|
sed = "s/Widget new,/Widget c_new,/g";
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text =
|
|
|
|
"struct wedge {\n"
|
sed portability fixes in fixincludes
fixincludes/:
PR testsuite/29737
PR bootstrap/35938
PR testsuite/39655
* check.tpl: Fix typos.
* README: Likewise. Also, document that 'select' uses ERE.
* mkheaders.in: Update copyright years in --version output.
* inclhack.def (sco_math): Add missing final newline in sed
script 'a', 'c', or 'i' commands, for BSD sed.
(sco_math): In the text of 'a', 'c', or 'i' sed
commands, prepend leading white space with a backslash to avoid
the whitespace to be removed by BSD sed.
(sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex.
(x11_new): Fix sed expression, for BSD sed.
(glibc_mutex_init): Fix newlines in sed 's' command replacement
part, for GNU sed 3.02 and Solaris sed.
(glibc_mutex_init): Replace unportable \+ sed regex operator
with \{1,\}.
(glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed
alternation \| regex operator.
(solaris_complex): Remove superfluous backslashes from
replacement string. Replace \+ operator with \{1,\}.
* tests/base/Xm/Traversal.h: This is fixed for BSD sed now.
* fixincl.x: Regenerate.
From-SVN: r151518
2009-09-08 17:30:31 +00:00
|
|
|
" Widget\told, new;\n"
|
2000-05-09 16:21:08 +00:00
|
|
|
"};\nextern Wedged( Widget new, Widget old );";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Incorrect sprintf declaration in X11/Xmu.h
|
|
|
|
*/
|
|
|
|
fix = {
|
|
|
|
hackname = x11_sprintf;
|
2000-01-17 21:45:29 +00:00
|
|
|
files = X11/Xmu.h;
|
|
|
|
files = X11/Xmu/Xmu.h;
|
2000-05-31 14:26:57 +00:00
|
|
|
select = "^extern char \\*\tsprintf\\(\\);$";
|
|
|
|
|
|
|
|
c_fix = format;
|
|
|
|
c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */";
|
2000-01-17 21:45:29 +00:00
|
|
|
|
2000-05-09 16:21:08 +00:00
|
|
|
test_text = "extern char *\tsprintf();";
|
1998-10-16 07:00:18 +00:00
|
|
|
};
|
|
|
|
/*EOF*/
|