diff options
author | Zack Weinberg <zack@rabi.columbia.edu> | 1999-12-17 21:49:30 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 1999-12-17 21:49:30 +0000 |
commit | d7eb5a45e228db40eb5770df4c4107c9f1a77932 (patch) | |
tree | 75ccbc15483d6f345ac97085dfcbeaae58c06e44 | |
parent | cdfff38e3dc92157b9f55a8744160bd4afa2b7ed (diff) | |
download | gcc-d7eb5a45e228db40eb5770df4c4107c9f1a77932.zip gcc-d7eb5a45e228db40eb5770df4c4107c9f1a77932.tar.gz gcc-d7eb5a45e228db40eb5770df4c4107c9f1a77932.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 35 | ||||
-rw-r--r-- | gcc/fixinc/fixfixes.c | 4 | ||||
-rw-r--r-- | gcc/fixinc/fixincl.c | 5 | ||||
-rwxr-xr-x | gcc/fixinc/fixincl.sh | 2 | ||||
-rw-r--r-- | gcc/fixinc/fixincl.x | 565 | ||||
-rw-r--r-- | gcc/fixinc/fixtests.c | 30 | ||||
-rwxr-xr-x | gcc/fixinc/genfixes | 4 | ||||
-rw-r--r-- | gcc/fixinc/hackshell.tpl | 4 | ||||
-rw-r--r-- | gcc/fixinc/inclhack.def | 177 | ||||
-rwxr-xr-x | gcc/fixinc/inclhack.sh | 354 |
10 files changed, 759 insertions, 421 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed4ca73..923a839 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,40 @@ 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. + * c-parse.in (string action): Do not warn about ANSI string concatenation in system headers. Affects C parser only. * c-parse.y, c-parse.c, c-parse.h: Rebuild. diff --git a/gcc/fixinc/fixfixes.c b/gcc/fixinc/fixfixes.c index 737bc5b..e1e394d 100644 --- a/gcc/fixinc/fixfixes.c +++ b/gcc/fixinc/fixfixes.c @@ -312,10 +312,6 @@ FIX_PROC_HEAD( else_endif_label_fix ) break; } - /* - FIXME: if this is a C++ file, then a double slash comment - is allowed to follow the directive. */ - /* FALLTHROUGH */ default: diff --git a/gcc/fixinc/fixincl.c b/gcc/fixinc/fixincl.c index bf7d839..289e4ab 100644 --- a/gcc/fixinc/fixincl.c +++ b/gcc/fixinc/fixincl.c @@ -114,6 +114,7 @@ typedef enum { } te_verbose; te_verbose verbose_level = VERB_PROGRESS; +int have_tty = 0; #define VLEVEL(l) (verbose_level >= l) #define NOT_SILENT VLEVEL(VERB_FIXES) @@ -192,6 +193,8 @@ main (argc, argv) initialize (); + have_tty = isatty (fileno (stderr)); + /* Before anything else, ensure we can allocate our file name buffer. */ file_name_buf = load_file_data (stdin); @@ -1336,7 +1339,7 @@ process () #ifdef DO_STATS process_ct++; #endif - if (VLEVEL( VERB_PROGRESS )) + if (VLEVEL( VERB_PROGRESS ) && have_tty) fprintf (stderr, "%6d %-50s \r", data_map_size, pz_curr_file ); process_chain_head = NOPROCESS; diff --git a/gcc/fixinc/fixincl.sh b/gcc/fixinc/fixincl.sh index ed4649b..e8ab8cb 100755 --- a/gcc/fixinc/fixincl.sh +++ b/gcc/fixinc/fixincl.sh @@ -6,7 +6,7 @@ # files which are fixed to work correctly with ANSI C and placed in a # directory that GNU C will search. # -# This script contains 112 fixup scripts. +# This script contains 114 fixup scripts. # # See README-fixinc for more information. # diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x index a3e2d81..a23ad59 100644 --- a/gcc/fixinc/fixincl.x +++ b/gcc/fixinc/fixincl.x @@ -5,7 +5,7 @@ * files which are fixed to work correctly with ANSI C and placed in a * directory that GNU C will search. * - * This file contains 112 fixup descriptions. + * This file contains 114 fixup descriptions. * * See README-fixinc for more information. * @@ -313,38 +313,54 @@ typedef char * va_list;\n\ /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Aab_Fd_Zero_Glibc_1_0 fix + * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix */ -#define AAB_FD_ZERO_GLIBC_1_0_FIXIDX 7 -tSCC zAab_Fd_Zero_Glibc_1_0Name[] = - "Aab_Fd_Zero_Glibc_1_0"; +#define AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX 7 +tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] = + "Aab_Fd_Zero_Asm_Posix_Types_H"; /* * File name selection pattern */ -tSCC zAab_Fd_Zero_Glibc_1_0List[] = +tSCC zAab_Fd_Zero_Asm_Posix_Types_HList[] = "|asm/posix_types.h|"; /* * Machine/OS name selection pattern */ -tSCC* apzAab_Fd_Zero_Glibc_1_0Machs[] = { +tSCC* apzAab_Fd_Zero_Asm_Posix_Types_HMachs[] = { "i[34567]86-*-linux-gnu*", (const char*)NULL }; -#define AAB_FD_ZERO_GLIBC_1_0_TEST_CT 0 -#define AAB_FD_ZERO_GLIBC_1_0_RE_CT 0 -#define aAab_Fd_Zero_Glibc_1_0Tests (tTestDesc*)NULL /* - * Fix Command Arguments for Aab_Fd_Zero_Glibc_1_0 + * content bypass pattern - skip fix if pattern found */ -const char* apzAab_Fd_Zero_Glibc_1_0Patch[] = { -"/* This file fixes __FD_ZERO bug for glibc-1.x. */\n\ +tSCC zAab_Fd_Zero_Asm_Posix_Types_HBypass0[] = + "} while"; + +#define AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT 1 +#define AAB_FD_ZERO_ASM_POSIX_TYPES_H_RE_CT 1 +tTestDesc aAab_Fd_Zero_Asm_Posix_Types_HTests[] = { + { TT_NEGREP, zAab_Fd_Zero_Asm_Posix_Types_HBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Fd_Zero_Asm_Posix_Types_H + */ +const char* apzAab_Fd_Zero_Asm_Posix_Types_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro\n\ + for older versions of the Linux kernel. */\n\ #ifndef _POSIX_TYPES_H_WRAPPER\n\ #include <features.h>\n\ #include_next <asm/posix_types.h>\n\ \n\ #if defined(__FD_ZERO) && !defined(__GLIBC__)\n\ #undef __FD_ZERO\n\ -#define __FD_ZERO(fdsetp) do { int __d0, __d1; \t\t__asm__ __volatile__(\"cld ; rep ; stosl\" \t\t\t: \"=&c\" (__d0), \"=&D\" (__d1) \t\t\t: \"a\" (0), \"0\" (__FDSET_LONGS), \t\t\t \"1\" ((__kernel_fd_set *) (fdsetp)) :\"memory\"); } while (0)\n\ +#define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ +\t\t__asm__ __volatile__(\"cld ; rep ; stosl\" \\\n\ +\t\t\t: \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ +\t\t\t: \"a\" (0), \"0\" (__FDSET_LONGS), \\\n\ +\t\t\t \"1\" ((__kernel_fd_set *) (fdsetp)) :\"memory\"); \\\n\ + } while (0)\n\ #endif\n\ \n\ #define _POSIX_TYPES_H_WRAPPER\n\ @@ -353,38 +369,45 @@ const char* apzAab_Fd_Zero_Glibc_1_0Patch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Aab_Fd_Zero_Glibc_1_X fix + * Description of Aab_Fd_Zero_Gnu_Types_H fix */ -#define AAB_FD_ZERO_GLIBC_1_X_FIXIDX 8 -tSCC zAab_Fd_Zero_Glibc_1_XName[] = - "Aab_Fd_Zero_Glibc_1_X"; +#define AAB_FD_ZERO_GNU_TYPES_H_FIXIDX 8 +tSCC zAab_Fd_Zero_Gnu_Types_HName[] = + "Aab_Fd_Zero_Gnu_Types_H"; /* * File name selection pattern */ -tSCC zAab_Fd_Zero_Glibc_1_XList[] = +tSCC zAab_Fd_Zero_Gnu_Types_HList[] = "|gnu/types.h|"; /* * Machine/OS name selection pattern */ -tSCC* apzAab_Fd_Zero_Glibc_1_XMachs[] = { +tSCC* apzAab_Fd_Zero_Gnu_Types_HMachs[] = { "i[34567]86-*-linux-gnu*", (const char*)NULL }; -#define AAB_FD_ZERO_GLIBC_1_X_TEST_CT 0 -#define AAB_FD_ZERO_GLIBC_1_X_RE_CT 0 -#define aAab_Fd_Zero_Glibc_1_XTests (tTestDesc*)NULL +#define AAB_FD_ZERO_GNU_TYPES_H_TEST_CT 0 +#define AAB_FD_ZERO_GNU_TYPES_H_RE_CT 0 +#define aAab_Fd_Zero_Gnu_Types_HTests (tTestDesc*)NULL /* - * Fix Command Arguments for Aab_Fd_Zero_Glibc_1_X + * Fix Command Arguments for Aab_Fd_Zero_Gnu_Types_H */ -const char* apzAab_Fd_Zero_Glibc_1_XPatch[] = { -"/* This file fixes __FD_ZERO bug for glibc-1.x. */\n\ +const char* apzAab_Fd_Zero_Gnu_Types_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */\n\ #ifndef _TYPES_H_WRAPPER\n\ #include <features.h>\n\ #include_next <gnu/types.h>\n\ \n\ #if defined(__FD_ZERO) && !defined(__GLIBC__)\n\ #undef __FD_ZERO\n\ -# define __FD_ZERO(fdsetp) do { int __d0, __d1; \t__asm__ __volatile__(\"cld ; rep ; stosl\" \t: \"=&c\" (__d0), \"=&D\" (__d1) \t: \"a\" (0), \"0\" (__FDSET_LONGS), \t\t \"1\" ((__fd_set *) (fdsetp)) :\"memory\"); } while (0)\n\ +# define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ +\t__asm__ __volatile__(\"cld ; rep ; stosl\" \\\n\ + \t: \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ + \t: \"a\" (0), \"0\" (__FDSET_LONGS), \\\n\ +\t\t \"1\" ((__fd_set *) (fdsetp)) :\"memory\"); \\\n\ + } while (0)\n\ #endif\n\ \n\ #define _TYPES_H_WRAPPER\n\ @@ -393,38 +416,49 @@ const char* apzAab_Fd_Zero_Glibc_1_XPatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Aab_Fd_Zero_Glibc_2_0 fix + * Description of Aab_Fd_Zero_Selectbits_H fix */ -#define AAB_FD_ZERO_GLIBC_2_0_FIXIDX 9 -tSCC zAab_Fd_Zero_Glibc_2_0Name[] = - "Aab_Fd_Zero_Glibc_2_0"; +#define AAB_FD_ZERO_SELECTBITS_H_FIXIDX 9 +tSCC zAab_Fd_Zero_Selectbits_HName[] = + "Aab_Fd_Zero_Selectbits_H"; /* * File name selection pattern */ -tSCC zAab_Fd_Zero_Glibc_2_0List[] = +tSCC zAab_Fd_Zero_Selectbits_HList[] = "|selectbits.h|"; /* * Machine/OS name selection pattern */ -tSCC* apzAab_Fd_Zero_Glibc_2_0Machs[] = { +tSCC* apzAab_Fd_Zero_Selectbits_HMachs[] = { "i[34567]86-*-linux-gnu*", (const char*)NULL }; -#define AAB_FD_ZERO_GLIBC_2_0_TEST_CT 0 -#define AAB_FD_ZERO_GLIBC_2_0_RE_CT 0 -#define aAab_Fd_Zero_Glibc_2_0Tests (tTestDesc*)NULL +#define AAB_FD_ZERO_SELECTBITS_H_TEST_CT 0 +#define AAB_FD_ZERO_SELECTBITS_H_RE_CT 0 +#define aAab_Fd_Zero_Selectbits_HTests (tTestDesc*)NULL /* - * Fix Command Arguments for Aab_Fd_Zero_Glibc_2_0 + * Fix Command Arguments for Aab_Fd_Zero_Selectbits_H */ -const char* apzAab_Fd_Zero_Glibc_2_0Patch[] = { -"/* This file fixes __FD_ZERO bug for glibc-2.0.x. */\n\ +const char* apzAab_Fd_Zero_Selectbits_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */\n\ #ifndef _SELECTBITS_H_WRAPPER\n\ #include <features.h>\n\ #include_next <selectbits.h>\n\ \n\ -#if defined(__FD_ZERO) && defined(__GLIBC__) \t&& defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \t&& __GLIBC_MINOR__ == 0\n\ +#if defined(__FD_ZERO) && defined(__GLIBC__) \\\n\ +\t&& defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\\n\ +\t&& __GLIBC_MINOR__ == 0\n\ #undef __FD_ZERO\n\ -#define __FD_ZERO(fdsetp) do { int __d0, __d1; __asm__ __volatile__ (\"cld; rep; stosl\" : \"=&c\" (__d0), \"=&D\" (__d1) : \"a\" (0), \"0\" (sizeof (__fd_set) / sizeof (__fd_mask)), \"1\" ((__fd_mask *) (fdsetp)) : \"memory\"); } while (0)\n\ +#define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ + __asm__ __volatile__ (\"cld; rep; stosl\" \\\n\ + : \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ + : \"a\" (0), \"0\" (sizeof (__fd_set) \\\n\ + / sizeof (__fd_mask)), \\\n\ + \"1\" ((__fd_mask *) (fdsetp)) \\\n\ + : \"memory\"); \\\n\ + } while (0)\n\ #endif\n\ \n\ #define _SELECTBITS_H_WRAPPER\n\ @@ -528,7 +562,9 @@ htons (unsigned int __arg)\n\ return __result;\n\ }\n\ \n\ -#elif ((defined (__i860__) && !defined (__i860_big_endian__))\t || defined (__ns32k__) || defined (__vax__)\t\t || defined (__spur__) || defined (__arm__))\n\ +#elif ((defined (__i860__) && !defined (__i860_big_endian__))\t\\\n\ + || defined (__ns32k__) || defined (__vax__)\t\t\\\n\ + || defined (__spur__) || defined (__arm__))\n\ \n\ #ifndef __BYTE_ORDER__\n\ #define __BYTE_ORDER__ __LITTLE_ENDIAN__\n\ @@ -1492,9 +1528,47 @@ const char* apzHpux_SystimePatch[] = { "sed", /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Hpux8_Bogus_Inlines fix + */ +#define HPUX8_BOGUS_INLINES_FIXIDX 36 +tSCC zHpux8_Bogus_InlinesName[] = + "Hpux8_Bogus_Inlines"; +/* + * File name selection pattern + */ +tSCC zHpux8_Bogus_InlinesList[] = + "|math.h|"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux8_Bogus_InlinesMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux8_Bogus_InlinesSelect0[] = + "inline"; + +#define HPUX8_BOGUS_INLINES_TEST_CT 1 +#define HPUX8_BOGUS_INLINES_RE_CT 1 +tTestDesc aHpux8_Bogus_InlinesTests[] = { + { TT_EGREP, zHpux8_Bogus_InlinesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux8_Bogus_Inlines + */ +const char* apzHpux8_Bogus_InlinesPatch[] = { "sed", + "-e", "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@", + "-e", "s@inline double abs(double [a-z][a-z]*) {.*}@@", + "-e", "s@inline int sqr(int [a-z][a-z]*) {.*}@@", + "-e", "s@inline double sqr(double [a-z][a-z]*) {.*}@@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Hpux11_Uint32_C fix */ -#define HPUX11_UINT32_C_FIXIDX 36 +#define HPUX11_UINT32_C_FIXIDX 37 tSCC zHpux11_Uint32_CName[] = "Hpux11_Uint32_C"; /* @@ -1529,7 +1603,7 @@ const char* apzHpux11_Uint32_CPatch[] = { "sed", * * Description of Interactv_Add1 fix */ -#define INTERACTV_ADD1_FIXIDX 37 +#define INTERACTV_ADD1_FIXIDX 38 tSCC zInteractv_Add1Name[] = "Interactv_Add1"; /* @@ -1567,7 +1641,7 @@ const char* apzInteractv_Add1Patch[] = { "sed", * * Description of Interactv_Add2 fix */ -#define INTERACTV_ADD2_FIXIDX 38 +#define INTERACTV_ADD2_FIXIDX 39 tSCC zInteractv_Add2Name[] = "Interactv_Add2"; /* @@ -1605,7 +1679,7 @@ const char* apzInteractv_Add2Patch[] = { "sed", * * Description of Interactv_Add3 fix */ -#define INTERACTV_ADD3_FIXIDX 39 +#define INTERACTV_ADD3_FIXIDX 40 tSCC zInteractv_Add3Name[] = "Interactv_Add3"; /* @@ -1644,7 +1718,7 @@ const char* apzInteractv_Add3Patch[] = { "sed", * * Description of Io_Def_Quotes fix */ -#define IO_DEF_QUOTES_FIXIDX 40 +#define IO_DEF_QUOTES_FIXIDX 41 tSCC zIo_Def_QuotesName[] = "Io_Def_Quotes"; /* @@ -1681,7 +1755,7 @@ const char* apzIo_Def_QuotesPatch[] = { "sed", * * Description of Ioctl_Fix_Ctrl fix */ -#define IOCTL_FIX_CTRL_FIXIDX 41 +#define IOCTL_FIX_CTRL_FIXIDX 42 tSCC zIoctl_Fix_CtrlName[] = "Ioctl_Fix_Ctrl"; /* @@ -1720,7 +1794,7 @@ const char* apzIoctl_Fix_CtrlPatch[] = { "sed", * * Description of Ip_Missing_Semi fix */ -#define IP_MISSING_SEMI_FIXIDX 42 +#define IP_MISSING_SEMI_FIXIDX 43 tSCC zIp_Missing_SemiName[] = "Ip_Missing_Semi"; /* @@ -1732,9 +1806,17 @@ tSCC zIp_Missing_SemiList[] = * Machine/OS name selection pattern */ #define apzIp_Missing_SemiMachs (const char**)NULL -#define IP_MISSING_SEMI_TEST_CT 0 -#define IP_MISSING_SEMI_RE_CT 0 -#define aIp_Missing_SemiTests (tTestDesc*)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIp_Missing_SemiSelect0[] = + "}$"; + +#define IP_MISSING_SEMI_TEST_CT 1 +#define IP_MISSING_SEMI_RE_CT 1 +tTestDesc aIp_Missing_SemiTests[] = { + { TT_EGREP, zIp_Missing_SemiSelect0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Ip_Missing_Semi @@ -1747,7 +1829,7 @@ const char* apzIp_Missing_SemiPatch[] = { "sed", * * Description of Irix_Multiline_Cmnt fix */ -#define IRIX_MULTILINE_CMNT_FIXIDX 43 +#define IRIX_MULTILINE_CMNT_FIXIDX 44 tSCC zIrix_Multiline_CmntName[] = "Irix_Multiline_Cmnt"; /* @@ -1775,7 +1857,7 @@ const char* apzIrix_Multiline_CmntPatch[] = { "sed", * * Description of Irix_Sockaddr fix */ -#define IRIX_SOCKADDR_FIXIDX 44 +#define IRIX_SOCKADDR_FIXIDX 45 tSCC zIrix_SockaddrName[] = "Irix_Sockaddr"; /* @@ -1811,7 +1893,7 @@ struct sockaddr;\n", * * Description of Irix_Struct__File fix */ -#define IRIX_STRUCT__FILE_FIXIDX 45 +#define IRIX_STRUCT__FILE_FIXIDX 46 tSCC zIrix_Struct__FileName[] = "Irix_Struct__File"; /* @@ -1839,7 +1921,7 @@ struct __file_s;\n", * * Description of Irix_Asm_Apostrophe fix */ -#define IRIX_ASM_APOSTROPHE_FIXIDX 46 +#define IRIX_ASM_APOSTROPHE_FIXIDX 47 tSCC zIrix_Asm_ApostropheName[] = "Irix_Asm_Apostrophe"; /* @@ -1874,7 +1956,7 @@ const char* apzIrix_Asm_ApostrophePatch[] = { "sed", * * Description of Isc_Fmod fix */ -#define ISC_FMOD_FIXIDX 47 +#define ISC_FMOD_FIXIDX 48 tSCC zIsc_FmodName[] = "Isc_Fmod"; /* @@ -1909,7 +1991,7 @@ const char* apzIsc_FmodPatch[] = { "sed", * * Description of Motorola_Nested fix */ -#define MOTOROLA_NESTED_FIXIDX 48 +#define MOTOROLA_NESTED_FIXIDX 49 tSCC zMotorola_NestedName[] = "Motorola_Nested"; /* @@ -1939,7 +2021,7 @@ const char* apzMotorola_NestedPatch[] = { "sed", * * Description of Isc_Sys_Limits fix */ -#define ISC_SYS_LIMITS_FIXIDX 49 +#define ISC_SYS_LIMITS_FIXIDX 50 tSCC zIsc_Sys_LimitsName[] = "Isc_Sys_Limits"; /* @@ -1975,7 +2057,7 @@ const char* apzIsc_Sys_LimitsPatch[] = { "sed", * * Description of Kandr_Concat fix */ -#define KANDR_CONCAT_FIXIDX 50 +#define KANDR_CONCAT_FIXIDX 51 tSCC zKandr_ConcatName[] = "Kandr_Concat"; /* @@ -2010,7 +2092,7 @@ const char* apzKandr_ConcatPatch[] = { "sed", * * Description of Limits_Ifndefs fix */ -#define LIMITS_IFNDEFS_FIXIDX 51 +#define LIMITS_IFNDEFS_FIXIDX 52 tSCC zLimits_IfndefsName[] = "Limits_Ifndefs"; /* @@ -2069,7 +2151,7 @@ const char* apzLimits_IfndefsPatch[] = { "sed", * * Description of Lynx_Void_Int fix */ -#define LYNX_VOID_INT_FIXIDX 52 +#define LYNX_VOID_INT_FIXIDX 53 tSCC zLynx_Void_IntName[] = "Lynx_Void_Int"; /* @@ -2104,7 +2186,7 @@ const char* apzLynx_Void_IntPatch[] = { "sed", * * Description of Lynxos_Fcntl_Proto fix */ -#define LYNXOS_FCNTL_PROTO_FIXIDX 53 +#define LYNXOS_FCNTL_PROTO_FIXIDX 54 tSCC zLynxos_Fcntl_ProtoName[] = "Lynxos_Fcntl_Proto"; /* @@ -2139,7 +2221,7 @@ const char* apzLynxos_Fcntl_ProtoPatch[] = { "sed", * * Description of M88k_Bad_Hypot_Opt fix */ -#define M88K_BAD_HYPOT_OPT_FIXIDX 54 +#define M88K_BAD_HYPOT_OPT_FIXIDX 55 tSCC zM88k_Bad_Hypot_OptName[] = "M88k_Bad_Hypot_Opt"; /* @@ -2181,7 +2263,7 @@ static __inline__ double fake_hypot (x, y)\\\n\ * * Description of M88k_Bad_S_If fix */ -#define M88K_BAD_S_IF_FIXIDX 55 +#define M88K_BAD_S_IF_FIXIDX 56 tSCC zM88k_Bad_S_IfName[] = "M88k_Bad_S_If"; /* @@ -2219,7 +2301,7 @@ const char* apzM88k_Bad_S_IfPatch[] = { "sed", * * Description of M88k_Multi_Incl fix */ -#define M88K_MULTI_INCL_FIXIDX 56 +#define M88K_MULTI_INCL_FIXIDX 57 tSCC zM88k_Multi_InclName[] = "M88k_Multi_Incl"; /* @@ -2261,7 +2343,7 @@ const char* apzM88k_Multi_InclPatch[] = { "sh", "-c", * * Description of Machine_Name fix */ -#define MACHINE_NAME_FIXIDX 57 +#define MACHINE_NAME_FIXIDX 58 tSCC zMachine_NameName[] = "Machine_Name"; /* @@ -2331,7 +2413,7 @@ s/\\\\+++fixinc_eol+++/\\\\/g\n\ * * Description of Math_Exception fix */ -#define MATH_EXCEPTION_FIXIDX 58 +#define MATH_EXCEPTION_FIXIDX 59 tSCC zMath_ExceptionName[] = "Math_Exception"; /* @@ -2350,9 +2432,16 @@ tSCC zMath_ExceptionList[] = tSCC zMath_ExceptionSelect0[] = "struct exception"; -#define MATH_EXCEPTION_TEST_CT 1 -#define MATH_EXCEPTION_RE_CT 1 +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zMath_ExceptionBypass0[] = + "We have a problem when using C++"; + +#define MATH_EXCEPTION_TEST_CT 2 +#define MATH_EXCEPTION_RE_CT 2 tTestDesc aMath_ExceptionTests[] = { + { TT_NEGREP, zMath_ExceptionBypass0, (regex_t*)NULL }, { TT_EGREP, zMath_ExceptionSelect0, (regex_t*)NULL }, }; /* @@ -2367,60 +2456,98 @@ const char* apzMath_ExceptionPatch[] = { "sed", #ifdef __cplusplus\\\n\ #undef exception\\\n\ #endif\n", - "-e", "/matherr/i\\\n\ -#ifdef __cplusplus\\\n\ -#define exception __math_exception\\\n\ -#endif\n", - "-e", "/matherr/a\\\n\ -#ifdef __cplusplus\\\n\ -#undef exception\\\n\ -#endif\n", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * - * Description of Math_Gcc_Ifndefs fix + * Description of Math_Huge_Val_From_Dbl_Max fix */ -#define MATH_GCC_IFNDEFS_FIXIDX 59 -tSCC zMath_Gcc_IfndefsName[] = - "Math_Gcc_Ifndefs"; +#define MATH_HUGE_VAL_FROM_DBL_MAX_FIXIDX 60 +tSCC zMath_Huge_Val_From_Dbl_MaxName[] = + "Math_Huge_Val_From_Dbl_Max"; /* * File name selection pattern */ -tSCC zMath_Gcc_IfndefsList[] = +tSCC zMath_Huge_Val_From_Dbl_MaxList[] = "|math.h|"; /* * Machine/OS name selection pattern */ -#define apzMath_Gcc_IfndefsMachs (const char**)NULL -#define MATH_GCC_IFNDEFS_TEST_CT 0 -#define MATH_GCC_IFNDEFS_RE_CT 0 -#define aMath_Gcc_IfndefsTests (tTestDesc*)NULL +#define apzMath_Huge_Val_From_Dbl_MaxMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zMath_Huge_Val_From_Dbl_MaxSelect0[] = + "define[ \t]*HUGE_VAL[ \t]*DBL_MAX"; /* - * Fix Command Arguments for Math_Gcc_Ifndefs + * content bypass pattern - skip fix if pattern found */ -const char* apzMath_Gcc_IfndefsPatch[] = { "sh", "-c", +tSCC zMath_Huge_Val_From_Dbl_MaxBypass0[] = + "define[ \t]*DBL_MAX"; + +#define MATH_HUGE_VAL_FROM_DBL_MAX_TEST_CT 2 +#define MATH_HUGE_VAL_FROM_DBL_MAX_RE_CT 2 +tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = { + { TT_NEGREP, zMath_Huge_Val_From_Dbl_MaxBypass0, (regex_t*)NULL }, + { TT_EGREP, zMath_Huge_Val_From_Dbl_MaxSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Math_Huge_Val_From_Dbl_Max + */ +const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c", "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h 2>/dev/null`\n\ \n\ -\tif ( test -n \"${dbl_max_def}\" \\\n\ -\t\t-a -n \"`egrep '#define[ \t]*HUGE_VAL[ \t]+DBL_MAX' $file`\" \\\n\ -\t\t-a -z \"`egrep '#define[ \t]+DBL_MAX[ \t]+' $file`\"\n\ -\t ) > /dev/null 2>&1\n\ -\tthen sed -e '/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/'\n\ -\telse cat ; fi |\n\ -\tsed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n\ -#ifndef HUGE_VAL\n\ -' -e '/define[ \t]HUGE_VAL[ \t]/a\\\n\ -#endif\n\ -'", +\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n\ +\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/s/DBL_MAX/'\"$dbl_max_def/\"\n\ +\telse cat\n\ +\tfi", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Math_Huge_Val_Ifndef fix + */ +#define MATH_HUGE_VAL_IFNDEF_FIXIDX 61 +tSCC zMath_Huge_Val_IfndefName[] = + "Math_Huge_Val_Ifndef"; +/* + * File name selection pattern + */ +tSCC zMath_Huge_Val_IfndefList[] = + "|math/math.h|"; +/* + * Machine/OS name selection pattern + */ +#define apzMath_Huge_Val_IfndefMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zMath_Huge_Val_IfndefSelect0[] = + "define[ \t]*HUGE_VAL"; + +#define MATH_HUGE_VAL_IFNDEF_TEST_CT 1 +#define MATH_HUGE_VAL_IFNDEF_RE_CT 1 +tTestDesc aMath_Huge_Val_IfndefTests[] = { + { TT_EGREP, zMath_Huge_Val_IfndefSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Math_Huge_Val_Ifndef + */ +const char* apzMath_Huge_Val_IfndefPatch[] = { "sed", + "-e", "/define[ \t]HUGE_VAL[ \t]/i\\\n\ +#ifndef HUGE_VAL\n", + "-e", "/define[ \t]HUGE_VAL[ \t]/a\\\n\ +#endif\n", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Nested_Comment fix */ -#define NESTED_COMMENT_FIXIDX 60 +#define NESTED_COMMENT_FIXIDX 62 tSCC zNested_CommentName[] = "Nested_Comment"; /* @@ -2447,7 +2574,7 @@ const char* apzNested_CommentPatch[] = { "sed", * * Description of News_Os_Recursion fix */ -#define NEWS_OS_RECURSION_FIXIDX 61 +#define NEWS_OS_RECURSION_FIXIDX 63 tSCC zNews_Os_RecursionName[] = "News_Os_Recursion"; /* @@ -2485,7 +2612,7 @@ const char* apzNews_Os_RecursionPatch[] = { "sed", * * Description of Next_Math_Prefix fix */ -#define NEXT_MATH_PREFIX_FIXIDX 62 +#define NEXT_MATH_PREFIX_FIXIDX 64 tSCC zNext_Math_PrefixName[] = "Next_Math_Prefix"; /* @@ -2524,7 +2651,7 @@ const char* apzNext_Math_PrefixPatch[] = { "sed", * * Description of Next_Template fix */ -#define NEXT_TEMPLATE_FIXIDX 63 +#define NEXT_TEMPLATE_FIXIDX 65 tSCC zNext_TemplateName[] = "Next_Template"; /* @@ -2560,7 +2687,7 @@ const char* apzNext_TemplatePatch[] = { "sed", * * Description of Next_Volitile fix */ -#define NEXT_VOLITILE_FIXIDX 64 +#define NEXT_VOLITILE_FIXIDX 66 tSCC zNext_VolitileName[] = "Next_Volitile"; /* @@ -2596,7 +2723,7 @@ const char* apzNext_VolitilePatch[] = { "sed", * * Description of Next_Wait_Union fix */ -#define NEXT_WAIT_UNION_FIXIDX 65 +#define NEXT_WAIT_UNION_FIXIDX 67 tSCC zNext_Wait_UnionName[] = "Next_Wait_Union"; /* @@ -2631,7 +2758,7 @@ const char* apzNext_Wait_UnionPatch[] = { "sed", * * Description of Nodeent_Syntax fix */ -#define NODEENT_SYNTAX_FIXIDX 66 +#define NODEENT_SYNTAX_FIXIDX 68 tSCC zNodeent_SyntaxName[] = "Nodeent_Syntax"; /* @@ -2658,7 +2785,7 @@ const char* apzNodeent_SyntaxPatch[] = { "sed", * * Description of Osf_Namespace_A fix */ -#define OSF_NAMESPACE_A_FIXIDX 67 +#define OSF_NAMESPACE_A_FIXIDX 69 tSCC zOsf_Namespace_AName[] = "Osf_Namespace_A"; /* @@ -2704,7 +2831,7 @@ const char* apzOsf_Namespace_APatch[] = { "sed", * * Description of Osf_Namespace_B fix */ -#define OSF_NAMESPACE_B_FIXIDX 68 +#define OSF_NAMESPACE_B_FIXIDX 70 tSCC zOsf_Namespace_BName[] = "Osf_Namespace_B"; /* @@ -2751,7 +2878,7 @@ typedef __regmatch_t\tregmatch_t;\n", * * Description of Pthread_Page_Size fix */ -#define PTHREAD_PAGE_SIZE_FIXIDX 69 +#define PTHREAD_PAGE_SIZE_FIXIDX 71 tSCC zPthread_Page_SizeName[] = "Pthread_Page_Size"; /* @@ -2786,7 +2913,7 @@ const char* apzPthread_Page_SizePatch[] = { "sed", * * Description of Read_Ret_Type fix */ -#define READ_RET_TYPE_FIXIDX 70 +#define READ_RET_TYPE_FIXIDX 72 tSCC zRead_Ret_TypeName[] = "Read_Ret_Type"; /* @@ -2822,7 +2949,7 @@ const char* apzRead_Ret_TypePatch[] = { "sed", * * Description of Rs6000_Double fix */ -#define RS6000_DOUBLE_FIXIDX 71 +#define RS6000_DOUBLE_FIXIDX 73 tSCC zRs6000_DoubleName[] = "Rs6000_Double"; /* @@ -2860,7 +2987,7 @@ const char* apzRs6000_DoublePatch[] = { "sed", * * Description of Rs6000_Fchmod fix */ -#define RS6000_FCHMOD_FIXIDX 72 +#define RS6000_FCHMOD_FIXIDX 74 tSCC zRs6000_FchmodName[] = "Rs6000_Fchmod"; /* @@ -2895,7 +3022,7 @@ const char* apzRs6000_FchmodPatch[] = { "sed", * * Description of Rs6000_Param fix */ -#define RS6000_PARAM_FIXIDX 73 +#define RS6000_PARAM_FIXIDX 75 tSCC zRs6000_ParamName[] = "Rs6000_Param"; /* @@ -2907,9 +3034,17 @@ tSCC zRs6000_ParamList[] = * Machine/OS name selection pattern */ #define apzRs6000_ParamMachs (const char**)NULL -#define RS6000_PARAM_TEST_CT 0 -#define RS6000_PARAM_RE_CT 0 -#define aRs6000_ParamTests (tTestDesc*)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRs6000_ParamSelect0[] = + "const char new"; + +#define RS6000_PARAM_TEST_CT 1 +#define RS6000_PARAM_RE_CT 1 +tTestDesc aRs6000_ParamTests[] = { + { TT_EGREP, zRs6000_ParamSelect0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Rs6000_Param @@ -2922,7 +3057,7 @@ const char* apzRs6000_ParamPatch[] = { "sed", * * Description of Sony_Include fix */ -#define SONY_INCLUDE_FIXIDX 74 +#define SONY_INCLUDE_FIXIDX 76 tSCC zSony_IncludeName[] = "Sony_Include"; /* @@ -2957,7 +3092,7 @@ const char* apzSony_IncludePatch[] = { "sed", * * Description of Statsswtch fix */ -#define STATSSWTCH_FIXIDX 75 +#define STATSSWTCH_FIXIDX 77 tSCC zStatsswtchName[] = "Statsswtch"; /* @@ -2992,7 +3127,7 @@ const char* apzStatsswtchPatch[] = { "sed", * * Description of Stdio_Va_List fix */ -#define STDIO_VA_LIST_FIXIDX 76 +#define STDIO_VA_LIST_FIXIDX 78 tSCC zStdio_Va_ListName[] = "Stdio_Va_List"; /* @@ -3004,9 +3139,17 @@ tSCC zStdio_Va_ListList[] = * Machine/OS name selection pattern */ #define apzStdio_Va_ListMachs (const char**)NULL -#define STDIO_VA_LIST_TEST_CT 0 -#define STDIO_VA_LIST_RE_CT 0 -#define aStdio_Va_ListTests (tTestDesc*)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStdio_Va_ListBypass0[] = + "__gnuc_va_list"; + +#define STDIO_VA_LIST_TEST_CT 1 +#define STDIO_VA_LIST_RE_CT 1 +tTestDesc aStdio_Va_ListTests[] = { + { TT_NEGREP, zStdio_Va_ListBypass0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Stdio_Va_List @@ -3036,7 +3179,7 @@ const char* apzStdio_Va_ListPatch[] = { "sh", "-c", * * Description of Sun_Bogus_Ifdef fix */ -#define SUN_BOGUS_IFDEF_FIXIDX 77 +#define SUN_BOGUS_IFDEF_FIXIDX 79 tSCC zSun_Bogus_IfdefName[] = "Sun_Bogus_Ifdef"; /* @@ -3071,7 +3214,7 @@ const char* apzSun_Bogus_IfdefPatch[] = { "sed", * * Description of Sun_Bogus_Ifdef_Sun4c fix */ -#define SUN_BOGUS_IFDEF_SUN4C_FIXIDX 78 +#define SUN_BOGUS_IFDEF_SUN4C_FIXIDX 80 tSCC zSun_Bogus_Ifdef_Sun4cName[] = "Sun_Bogus_Ifdef_Sun4c"; /* @@ -3106,7 +3249,7 @@ const char* apzSun_Bogus_Ifdef_Sun4cPatch[] = { "sed", * * Description of Sun_Catmacro fix */ -#define SUN_CATMACRO_FIXIDX 79 +#define SUN_CATMACRO_FIXIDX 81 tSCC zSun_CatmacroName[] = "Sun_Catmacro"; /* @@ -3146,7 +3289,7 @@ const char* apzSun_CatmacroPatch[] = { "sed", * * Description of Sun_Malloc fix */ -#define SUN_MALLOC_FIXIDX 80 +#define SUN_MALLOC_FIXIDX 82 tSCC zSun_MallocName[] = "Sun_Malloc"; /* @@ -3176,7 +3319,7 @@ const char* apzSun_MallocPatch[] = { "sed", * * Description of Sun_Memcpy fix */ -#define SUN_MEMCPY_FIXIDX 81 +#define SUN_MEMCPY_FIXIDX 83 tSCC zSun_MemcpyName[] = "Sun_Memcpy"; /* @@ -3231,7 +3374,7 @@ extern int memcmp();\\\n\ * * Description of Sun_Rusers_Semi fix */ -#define SUN_RUSERS_SEMI_FIXIDX 82 +#define SUN_RUSERS_SEMI_FIXIDX 84 tSCC zSun_Rusers_SemiName[] = "Sun_Rusers_Semi"; /* @@ -3266,7 +3409,7 @@ const char* apzSun_Rusers_SemiPatch[] = { "sed", * * Description of Sun_Signal fix */ -#define SUN_SIGNAL_FIXIDX 83 +#define SUN_SIGNAL_FIXIDX 85 tSCC zSun_SignalName[] = "Sun_Signal"; /* @@ -3306,7 +3449,7 @@ void\t(*signal(...))(...);\\\n\ * * Description of Sun_Auth_Proto fix */ -#define SUN_AUTH_PROTO_FIXIDX 84 +#define SUN_AUTH_PROTO_FIXIDX 86 tSCC zSun_Auth_ProtoName[] = "Sun_Auth_Proto"; /* @@ -3346,7 +3489,7 @@ const char* apzSun_Auth_ProtoPatch[] = { "sed", * * Description of Sunos_Matherr_Decl fix */ -#define SUNOS_MATHERR_DECL_FIXIDX 85 +#define SUNOS_MATHERR_DECL_FIXIDX 87 tSCC zSunos_Matherr_DeclName[] = "Sunos_Matherr_Decl"; /* @@ -3358,9 +3501,17 @@ tSCC zSunos_Matherr_DeclList[] = * Machine/OS name selection pattern */ #define apzSunos_Matherr_DeclMachs (const char**)NULL -#define SUNOS_MATHERR_DECL_TEST_CT 0 -#define SUNOS_MATHERR_DECL_RE_CT 0 -#define aSunos_Matherr_DeclTests (tTestDesc*)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSunos_Matherr_DeclBypass0[] = + "matherr.*struct exception"; + +#define SUNOS_MATHERR_DECL_TEST_CT 1 +#define SUNOS_MATHERR_DECL_RE_CT 1 +tTestDesc aSunos_Matherr_DeclTests[] = { + { TT_NEGREP, zSunos_Matherr_DeclBypass0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Sunos_Matherr_Decl @@ -3375,7 +3526,7 @@ struct exception;\n", * * Description of Sunos_Strlen fix */ -#define SUNOS_STRLEN_FIXIDX 86 +#define SUNOS_STRLEN_FIXIDX 88 tSCC zSunos_StrlenName[] = "Sunos_Strlen"; /* @@ -3387,9 +3538,17 @@ tSCC zSunos_StrlenList[] = * Machine/OS name selection pattern */ #define apzSunos_StrlenMachs (const char**)NULL -#define SUNOS_STRLEN_TEST_CT 0 -#define SUNOS_STRLEN_RE_CT 0 -#define aSunos_StrlenTests (tTestDesc*)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSunos_StrlenSelect0[] = + "int[ \t]*strlen"; + +#define SUNOS_STRLEN_TEST_CT 1 +#define SUNOS_STRLEN_RE_CT 1 +tTestDesc aSunos_StrlenTests[] = { + { TT_EGREP, zSunos_StrlenSelect0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Sunos_Strlen @@ -3402,7 +3561,7 @@ const char* apzSunos_StrlenPatch[] = { "sed", * * Description of Systypes fix */ -#define SYSTYPES_FIXIDX 87 +#define SYSTYPES_FIXIDX 89 tSCC zSystypesName[] = "Systypes"; /* @@ -3461,7 +3620,7 @@ typedef __SIZE_TYPE__ size_t;\\\n\ * * Description of Systypes_For_Aix fix */ -#define SYSTYPES_FOR_AIX_FIXIDX 88 +#define SYSTYPES_FOR_AIX_FIXIDX 90 tSCC zSystypes_For_AixName[] = "Systypes_For_Aix"; /* @@ -3507,7 +3666,7 @@ const char* apzSystypes_For_AixPatch[] = { "sed", * * Description of Sysv68_String fix */ -#define SYSV68_STRING_FIXIDX 89 +#define SYSV68_STRING_FIXIDX 91 tSCC zSysv68_StringName[] = "Sysv68_String"; /* @@ -3544,7 +3703,7 @@ extern unsigned int\\\n\ * * Description of Sysz_Stdlib_For_Sun fix */ -#define SYSZ_STDLIB_FOR_SUN_FIXIDX 90 +#define SYSZ_STDLIB_FOR_SUN_FIXIDX 92 tSCC zSysz_Stdlib_For_SunName[] = "Sysz_Stdlib_For_Sun"; /* @@ -3582,7 +3741,7 @@ const char* apzSysz_Stdlib_For_SunPatch[] = { "sed", * * Description of Sysz_Stdtypes_For_Sun fix */ -#define SYSZ_STDTYPES_FOR_SUN_FIXIDX 91 +#define SYSZ_STDTYPES_FOR_SUN_FIXIDX 93 tSCC zSysz_Stdtypes_For_SunName[] = "Sysz_Stdtypes_For_Sun"; /* @@ -3623,7 +3782,7 @@ const char* apzSysz_Stdtypes_For_SunPatch[] = { "sed", * * Description of Tinfo_Cplusplus fix */ -#define TINFO_CPLUSPLUS_FIXIDX 92 +#define TINFO_CPLUSPLUS_FIXIDX 94 tSCC zTinfo_CplusplusName[] = "Tinfo_Cplusplus"; /* @@ -3635,9 +3794,17 @@ tSCC zTinfo_CplusplusList[] = * Machine/OS name selection pattern */ #define apzTinfo_CplusplusMachs (const char**)NULL -#define TINFO_CPLUSPLUS_TEST_CT 0 -#define TINFO_CPLUSPLUS_RE_CT 0 -#define aTinfo_CplusplusTests (tTestDesc*)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zTinfo_CplusplusSelect0[] = + "[ \t]_cplusplus"; + +#define TINFO_CPLUSPLUS_TEST_CT 1 +#define TINFO_CPLUSPLUS_RE_CT 1 +tTestDesc aTinfo_CplusplusTests[] = { + { TT_EGREP, zTinfo_CplusplusSelect0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Tinfo_Cplusplus @@ -3650,7 +3817,7 @@ const char* apzTinfo_CplusplusPatch[] = { "sed", * * Description of Ultrix_Ansi_Compat fix */ -#define ULTRIX_ANSI_COMPAT_FIXIDX 93 +#define ULTRIX_ANSI_COMPAT_FIXIDX 95 tSCC zUltrix_Ansi_CompatName[] = "Ultrix_Ansi_Compat"; /* @@ -3687,7 +3854,7 @@ const char* apzUltrix_Ansi_CompatPatch[] = { "sed", * * Description of Ultrix_Fix_Fixproto fix */ -#define ULTRIX_FIX_FIXPROTO_FIXIDX 94 +#define ULTRIX_FIX_FIXPROTO_FIXIDX 96 tSCC zUltrix_Fix_FixprotoName[] = "Ultrix_Fix_Fixproto"; /* @@ -3723,7 +3890,7 @@ struct utsname;\n", * * Description of Ultrix_Atof_Param fix */ -#define ULTRIX_ATOF_PARAM_FIXIDX 95 +#define ULTRIX_ATOF_PARAM_FIXIDX 97 tSCC zUltrix_Atof_ParamName[] = "Ultrix_Atof_Param"; /* @@ -3735,26 +3902,30 @@ tSCC zUltrix_Atof_ParamList[] = * Machine/OS name selection pattern */ #define apzUltrix_Atof_ParamMachs (const char**)NULL -#define ULTRIX_ATOF_PARAM_TEST_CT 0 -#define ULTRIX_ATOF_PARAM_RE_CT 0 -#define aUltrix_Atof_ParamTests (tTestDesc*)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zUltrix_Atof_ParamSelect0[] = + "atof\\([ \t]*char"; + +#define ULTRIX_ATOF_PARAM_TEST_CT 1 +#define ULTRIX_ATOF_PARAM_RE_CT 1 +tTestDesc aUltrix_Atof_ParamTests[] = { + { TT_EGREP, zUltrix_Atof_ParamSelect0, (regex_t*)NULL }, }; /* * Fix Command Arguments for Ultrix_Atof_Param */ const char* apzUltrix_Atof_ParamPatch[] = { "sed", "-e", "s@atof(\\([ \t]*char[ \t]*\\*[^)]*\\))@atof(const \\1)@", - "-e", "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@", - "-e", "s@inline double abs(double [a-z][a-z]*) {.*}@@", - "-e", "s@inline int sqr(int [a-z][a-z]*) {.*}@@", - "-e", "s@inline double sqr(double [a-z][a-z]*) {.*}@@", (char*)NULL }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Ultrix_Const fix */ -#define ULTRIX_CONST_FIXIDX 96 +#define ULTRIX_CONST_FIXIDX 98 tSCC zUltrix_ConstName[] = "Ultrix_Const"; /* @@ -3789,7 +3960,7 @@ const char* apzUltrix_ConstPatch[] = { "sed", * * Description of Ultrix_Ifdef fix */ -#define ULTRIX_IFDEF_FIXIDX 97 +#define ULTRIX_IFDEF_FIXIDX 99 tSCC zUltrix_IfdefName[] = "Ultrix_Ifdef"; /* @@ -3824,7 +3995,7 @@ const char* apzUltrix_IfdefPatch[] = { "sed", * * Description of Ultrix_Nested_Cmnt fix */ -#define ULTRIX_NESTED_CMNT_FIXIDX 98 +#define ULTRIX_NESTED_CMNT_FIXIDX 100 tSCC zUltrix_Nested_CmntName[] = "Ultrix_Nested_Cmnt"; /* @@ -3851,7 +4022,7 @@ const char* apzUltrix_Nested_CmntPatch[] = { "sed", * * Description of Ultrix_Static fix */ -#define ULTRIX_STATIC_FIXIDX 99 +#define ULTRIX_STATIC_FIXIDX 101 tSCC zUltrix_StaticName[] = "Ultrix_Static"; /* @@ -3888,7 +4059,7 @@ const char* apzUltrix_StaticPatch[] = { "sed", * * Description of Undefine_Null fix */ -#define UNDEFINE_NULL_FIXIDX 100 +#define UNDEFINE_NULL_FIXIDX 102 tSCC zUndefine_NullName[] = "Undefine_Null"; /* @@ -3930,7 +4101,7 @@ const char* apzUndefine_NullPatch[] = { "sed", * * Description of Unixware7_Byteorder_Fix fix */ -#define UNIXWARE7_BYTEORDER_FIX_FIXIDX 101 +#define UNIXWARE7_BYTEORDER_FIX_FIXIDX 103 tSCC zUnixware7_Byteorder_FixName[] = "Unixware7_Byteorder_Fix"; /* @@ -3973,7 +4144,7 @@ const char* apzUnixware7_Byteorder_FixPatch[] = { "sed", * * Description of Va_I960_Macro fix */ -#define VA_I960_MACRO_FIXIDX 102 +#define VA_I960_MACRO_FIXIDX 104 tSCC zVa_I960_MacroName[] = "Va_I960_Macro"; /* @@ -4011,7 +4182,7 @@ const char* apzVa_I960_MacroPatch[] = { "sed", * * Description of Void_Null fix */ -#define VOID_NULL_FIXIDX 103 +#define VOID_NULL_FIXIDX 105 tSCC zVoid_NullName[] = "Void_Null"; /* @@ -4046,7 +4217,7 @@ const char* apzVoid_NullPatch[] = { "sed", * * Description of Vxworks_Gcc_Problem fix */ -#define VXWORKS_GCC_PROBLEM_FIXIDX 104 +#define VXWORKS_GCC_PROBLEM_FIXIDX 106 tSCC zVxworks_Gcc_ProblemName[] = "Vxworks_Gcc_Problem"; /* @@ -4096,7 +4267,7 @@ const char* apzVxworks_Gcc_ProblemPatch[] = { "sed", * * Description of Vxworks_Needs_Vxtypes fix */ -#define VXWORKS_NEEDS_VXTYPES_FIXIDX 105 +#define VXWORKS_NEEDS_VXTYPES_FIXIDX 107 tSCC zVxworks_Needs_VxtypesName[] = "Vxworks_Needs_Vxtypes"; /* @@ -4131,7 +4302,7 @@ const char* apzVxworks_Needs_VxtypesPatch[] = { "sed", * * Description of Vxworks_Needs_Vxworks fix */ -#define VXWORKS_NEEDS_VXWORKS_FIXIDX 106 +#define VXWORKS_NEEDS_VXWORKS_FIXIDX 108 tSCC zVxworks_Needs_VxworksName[] = "Vxworks_Needs_Vxworks"; /* @@ -4180,7 +4351,7 @@ const char* apzVxworks_Needs_VxworksPatch[] = { "sed", * * Description of Vxworks_Time fix */ -#define VXWORKS_TIME_FIXIDX 107 +#define VXWORKS_TIME_FIXIDX 109 tSCC zVxworks_TimeName[] = "Vxworks_Time"; /* @@ -4231,7 +4402,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\\\n\ * * Description of X11_Class fix */ -#define X11_CLASS_FIXIDX 108 +#define X11_CLASS_FIXIDX 110 tSCC zX11_ClassName[] = "X11_Class"; /* @@ -4271,7 +4442,7 @@ const char* apzX11_ClassPatch[] = { "sed", * * Description of X11_Class_Usage fix */ -#define X11_CLASS_USAGE_FIXIDX 109 +#define X11_CLASS_USAGE_FIXIDX 111 tSCC zX11_Class_UsageName[] = "X11_Class_Usage"; /* @@ -4306,7 +4477,7 @@ const char* apzX11_Class_UsagePatch[] = { "sed", * * Description of X11_New fix */ -#define X11_NEW_FIXIDX 110 +#define X11_NEW_FIXIDX 112 tSCC zX11_NewName[] = "X11_New"; /* @@ -4347,7 +4518,7 @@ const char* apzX11_NewPatch[] = { "sed", * * Description of X11_Sprintf fix */ -#define X11_SPRINTF_FIXIDX 111 +#define X11_SPRINTF_FIXIDX 113 tSCC zX11_SprintfName[] = "X11_Sprintf"; /* @@ -4376,9 +4547,9 @@ extern char *\tsprintf();\\\n\ * * List of all fixes */ -#define REGEX_COUNT 76 +#define REGEX_COUNT 89 #define MACH_LIST_SIZE_LIMIT 279 -#define FIX_COUNT 112 +#define FIX_COUNT 114 tFixDesc fixDescList[ FIX_COUNT ] = { { zAaa_Ki_IfaceName, zAaa_Ki_IfaceList, @@ -4416,20 +4587,20 @@ tFixDesc fixDescList[ FIX_COUNT ] = { AAB_DGUX_INT_VARARGS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAab_Dgux_Int_VarargsTests, apzAab_Dgux_Int_VarargsPatch }, - { zAab_Fd_Zero_Glibc_1_0Name, zAab_Fd_Zero_Glibc_1_0List, - apzAab_Fd_Zero_Glibc_1_0Machs, (regex_t*)NULL, - AAB_FD_ZERO_GLIBC_1_0_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, - aAab_Fd_Zero_Glibc_1_0Tests, apzAab_Fd_Zero_Glibc_1_0Patch }, + { zAab_Fd_Zero_Asm_Posix_Types_HName, zAab_Fd_Zero_Asm_Posix_Types_HList, + apzAab_Fd_Zero_Asm_Posix_Types_HMachs, (regex_t*)NULL, + AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Asm_Posix_Types_HTests, apzAab_Fd_Zero_Asm_Posix_Types_HPatch }, - { zAab_Fd_Zero_Glibc_1_XName, zAab_Fd_Zero_Glibc_1_XList, - apzAab_Fd_Zero_Glibc_1_XMachs, (regex_t*)NULL, - AAB_FD_ZERO_GLIBC_1_X_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, - aAab_Fd_Zero_Glibc_1_XTests, apzAab_Fd_Zero_Glibc_1_XPatch }, + { zAab_Fd_Zero_Gnu_Types_HName, zAab_Fd_Zero_Gnu_Types_HList, + apzAab_Fd_Zero_Gnu_Types_HMachs, (regex_t*)NULL, + AAB_FD_ZERO_GNU_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Gnu_Types_HTests, apzAab_Fd_Zero_Gnu_Types_HPatch }, - { zAab_Fd_Zero_Glibc_2_0Name, zAab_Fd_Zero_Glibc_2_0List, - apzAab_Fd_Zero_Glibc_2_0Machs, (regex_t*)NULL, - AAB_FD_ZERO_GLIBC_2_0_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, - aAab_Fd_Zero_Glibc_2_0Tests, apzAab_Fd_Zero_Glibc_2_0Patch }, + { zAab_Fd_Zero_Selectbits_HName, zAab_Fd_Zero_Selectbits_HList, + apzAab_Fd_Zero_Selectbits_HMachs, (regex_t*)NULL, + AAB_FD_ZERO_SELECTBITS_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Selectbits_HTests, apzAab_Fd_Zero_Selectbits_HPatch }, { zAab_Svr4_Replace_ByteorderName, zAab_Svr4_Replace_ByteorderList, apzAab_Svr4_Replace_ByteorderMachs, (regex_t*)NULL, @@ -4561,6 +4732,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { HPUX_SYSTIME_TEST_CT, FD_MACH_ONLY, aHpux_SystimeTests, apzHpux_SystimePatch }, + { zHpux8_Bogus_InlinesName, zHpux8_Bogus_InlinesList, + apzHpux8_Bogus_InlinesMachs, (regex_t*)NULL, + HPUX8_BOGUS_INLINES_TEST_CT, FD_MACH_ONLY, + aHpux8_Bogus_InlinesTests, apzHpux8_Bogus_InlinesPatch }, + { zHpux11_Uint32_CName, zHpux11_Uint32_CList, apzHpux11_Uint32_CMachs, (regex_t*)NULL, HPUX11_UINT32_C_TEST_CT, FD_MACH_ONLY, @@ -4676,10 +4852,15 @@ tFixDesc fixDescList[ FIX_COUNT ] = { MATH_EXCEPTION_TEST_CT, FD_MACH_ONLY, aMath_ExceptionTests, apzMath_ExceptionPatch }, - { zMath_Gcc_IfndefsName, zMath_Gcc_IfndefsList, - apzMath_Gcc_IfndefsMachs, (regex_t*)NULL, - MATH_GCC_IFNDEFS_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT, - aMath_Gcc_IfndefsTests, apzMath_Gcc_IfndefsPatch }, + { zMath_Huge_Val_From_Dbl_MaxName, zMath_Huge_Val_From_Dbl_MaxList, + apzMath_Huge_Val_From_Dbl_MaxMachs, (regex_t*)NULL, + MATH_HUGE_VAL_FROM_DBL_MAX_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT, + aMath_Huge_Val_From_Dbl_MaxTests, apzMath_Huge_Val_From_Dbl_MaxPatch }, + + { zMath_Huge_Val_IfndefName, zMath_Huge_Val_IfndefList, + apzMath_Huge_Val_IfndefMachs, (regex_t*)NULL, + MATH_HUGE_VAL_IFNDEF_TEST_CT, FD_MACH_ONLY, + aMath_Huge_Val_IfndefTests, apzMath_Huge_Val_IfndefPatch }, { zNested_CommentName, zNested_CommentList, apzNested_CommentMachs, (regex_t*)NULL, diff --git a/gcc/fixinc/fixtests.c b/gcc/fixinc/fixtests.c index 4ee9e86..1c21c04 100644 --- a/gcc/fixinc/fixtests.c +++ b/gcc/fixinc/fixtests.c @@ -106,8 +106,10 @@ skip_quote( q, text ) return text; } - -TEST_FOR_FIX_PROC_HEAD( double_slash_test ) +static apply_fix_p_t +is_cxx_header (fname, text) + const char *fname; + const char *text; { /* First, check to see if the file is in a C++ directory */ if (strstr( fname, "CC/" ) != NULL) @@ -116,9 +118,19 @@ TEST_FOR_FIX_PROC_HEAD( double_slash_test ) return SKIP_FIX; if (strstr( fname, "++" ) != NULL) return SKIP_FIX; + /* Or it might contain the phrase 'extern "C++"' */ if (strstr( text, "extern \"C++\"" ) != NULL) return SKIP_FIX; + return APPLY_FIX; +} + + +TEST_FOR_FIX_PROC_HEAD( double_slash_test ) +{ + if (is_cxx_header (fname, text) == SKIP_FIX) + return SKIP_FIX; + /* Now look for the comment markers in the text */ for (;;) { @@ -167,6 +179,7 @@ TEST_FOR_FIX_PROC_HEAD( else_endif_label_test ) char ch; const char* pz_next = (char*)NULL; regmatch_t match[2]; + const char *all_text = text; /* This routine may be run many times within a single execution. @@ -266,10 +279,15 @@ TEST_FOR_FIX_PROC_HEAD( else_endif_label_test ) pz_next += 2; break; } - - /* - FIXME: if this is a C++ file, then a double slash comment - is allowed to follow the directive. */ + else if (*pz_next == '/' + && is_cxx_header( fname, all_text ) == SKIP_FIX) + { + pz_next = strchr( pz_next+1, '\n' ); + if (pz_next == (char*)NULL) + return SKIP_FIX; + pz_next++; + break; + } /* FALLTHROUGH */ diff --git a/gcc/fixinc/genfixes b/gcc/fixinc/genfixes index 305231f..dbee891 100755 --- a/gcc/fixinc/genfixes +++ b/gcc/fixinc/genfixes @@ -63,9 +63,9 @@ fi set -e case "$1" in -inclhack.def ) +inclhack.sh ) echo AutoGen-ing inclhack.sh - $AG inclhack.sh + $AG inclhack.def ;; fixincl.x ) diff --git a/gcc/fixinc/hackshell.tpl b/gcc/fixinc/hackshell.tpl index 83fb27c..5910b35 100644 --- a/gcc/fixinc/hackshell.tpl +++ b/gcc/fixinc/hackshell.tpl @@ -59,8 +59,8 @@ _FOR fix "\n\n" =] _IF bypass _exist =] if ( test [= - _FOR bypass=] -a \ - -z [=bypass _shrstr "#`egrep %s ${file}`" + _FOR bypass " -a \\\n " + =]-z [=bypass _shrstr "#`egrep %s ${file}`" _printf _shstr =][= /bypass=] ) > /dev/null 2>&1 ; then[= diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def index d1633cf..cc8248a 100644 --- a/gcc/fixinc/inclhack.def +++ b/gcc/fixinc/inclhack.def @@ -155,12 +155,13 @@ typedef char * va_list; /* - * This fixes __FD_ZERO bug for glibc-1.0.x + * This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n) */ fix = { - hackname = AAB_fd_zero_glibc_1_0; + hackname = AAB_fd_zero_asm_posix_types_h; files = asm/posix_types.h; mach = 'i[34567]86-*-linux-gnu*'; + bypass = '} while'; /* * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not @@ -170,20 +171,21 @@ fix = { */ replace = -'/* This file fixes __FD_ZERO bug for glibc-1.x. */ +'/* 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; \ - __asm__ __volatile__("cld ; rep ; stosl" \ - : "=&c" (__d0), "=&D" (__d1) \ - : "a" (0), "0" (__FDSET_LONGS), \ - "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \ +\#define __FD_ZERO(fdsetp) \\ + do { \\ + int __d0, __d1; \\ + __asm__ __volatile__("cld ; rep ; stosl" \\ + : "=&c" (__d0), "=&D" (__d1) \\ + : "a" (0), "0" (__FDSET_LONGS), \\ + "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \\ } while (0) \#endif @@ -197,7 +199,7 @@ fix = { * This fixes __FD_ZERO bug for glibc-1.x */ fix = { - hackname = AAB_fd_zero_glibc_1_x; + hackname = AAB_fd_zero_gnu_types_h; files = gnu/types.h; mach = 'i[34567]86-*-linux-gnu*'; @@ -209,20 +211,20 @@ fix = { */ replace = -'/* This file fixes __FD_ZERO bug for glibc-1.x. */ +'/* 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 -\# 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"); \ +\# 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"); \\ } while (0) \#endif @@ -236,7 +238,7 @@ fix = { * This fixes __FD_ZERO bug for glibc-2.0.x */ fix = { - hackname = AAB_fd_zero_glibc_2_0; + hackname = AAB_fd_zero_selectbits_h; files = selectbits.h; mach = 'i[34567]86-*-linux-gnu*'; @@ -248,24 +250,24 @@ fix = { */ replace = -'/* This file fixes __FD_ZERO bug for glibc-2.0.x. */ +'/* 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 \ +\#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" \ - : "=&c" (__d0), "=&D" (__d1) \ - : "a" (0), "0" (sizeof (__fd_set) \ - / sizeof (__fd_mask)), \ - "1" ((__fd_mask *) (fdsetp)) \ - : "memory"); \ +\#define __FD_ZERO(fdsetp) \\ + do { \\ + int __d0, __d1; \\ + __asm__ __volatile__ ("cld; rep; stosl" \\ + : "=&c" (__d0), "=&D" (__d1) \\ + : "a" (0), "0" (sizeof (__fd_set) \\ + / sizeof (__fd_mask)), \\ + "1" ((__fd_mask *) (fdsetp)) \\ + : "memory"); \\ } while (0) \#endif @@ -357,8 +359,8 @@ htons (unsigned int __arg) return __result; } -\#elif ((defined (__i860__) && !defined (__i860_big_endian__)) \ - || defined (__ns32k__) || defined (__vax__) \ +\#elif ((defined (__i860__) && !defined (__i860_big_endian__)) \\ + || defined (__ns32k__) || defined (__vax__) \\ || defined (__spur__) || defined (__arm__)) \#ifndef __BYTE_ORDER__ @@ -853,6 +855,20 @@ fix = { sed = "s/^extern struct sigevent;/struct sigevent;/"; }; +/* + * get rid of bogus inline definitions in HP-UX 8.0 + */ +fix = { + hackname = hpux8_bogus_inlines; + files = math.h; + select = inline; + 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]*) {.*}@@"; +}; + + /* * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition * of UINT32_C has undefined behavior according to ISO/ANSI: @@ -980,6 +996,7 @@ fix = { fix = { hackname = ip_missing_semi; files = netinet/ip.h; + select = "}$"; sed = "/^struct/,/^};/s/}$/};/"; }; @@ -1326,6 +1343,7 @@ fix = { hackname = math_exception; files = math.h; select = "struct exception"; + bypass = "We have a problem when using C++"; sed = "/struct exception/i\\\n" "#ifdef __cplusplus\\\n" "#define exception __math_exception\\\n" @@ -1335,6 +1353,7 @@ fix = { "#undef exception\\\n" "#endif\n"; +#ifdef MATH_EXCEPTION_FIXED sed = "/matherr/i\\\n" "#ifdef __cplusplus\\\n" "#define exception __math_exception\\\n" @@ -1345,14 +1364,21 @@ fix = { "#undef exception\\\n" "#endif\n"; -#ifdef MATH_EXCEPTION_FIXED - I think this patch needs some more thinking. This is from SVR4.2 (With '#' replaced with '@'). Perhaps we could do without the "/matherr/a" entries? Can we bypass the entire fix if someone was astute enough to have '#ifdef __cplusplus' anywhere in the file? +We can definitely do without the "/matherr/a" entries. They are +there to cover the case where matherr is declared with no prototype +-- extern int matherr(); -- but we don't need a fix then since there +is no reference to struct exception. + +Bypassing on "#ifdef __cplusplus" is too optimistic, but I've stuck +in a bypass for the comment in the glibc 2.1 header that indicates +awareness of the problem. Hmm. Could we use a shell test that did +cpp -D__cplusplus | grep "struct exception" ? *** /usr/include/math.h Fri Apr 3 18:54:59 1998 --- math.h Sun May 9 07:28:58 1999 @@ -1396,46 +1422,43 @@ enough to have '#ifdef __cplusplus' anywhere in the file? #endif }; - -/* - * In math.h, put #ifndefs around things that might be defined - * in a gcc specific math-*.h file. - */ fix = { - hackname = math_gcc_ifndefs; + hackname = math_huge_val_from_dbl_max; files = math.h; - - shell = /* - * First 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. - */ - - /* - * IF we have such a define *and* HUGE_VAL is defined to be DBL_MAX - * *and* DBL_MAX is _not_ defined in the current file (math.h), - * THEN replace the defined value of HUGE_VAL - * ELSE just copy stdin to stdout so the main filter can process it + * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined + * in math.h, this fix applies. */ + select = "define[ \t]*HUGE_VAL[ \t]*DBL_MAX"; + bypass = "define[ \t]*DBL_MAX"; + shell = /* - * Put conditional guards around the HUGE_VAL definition. + * 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. */ "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h " "2>/dev/null`\n\n" - "\tif ( test -n \"${dbl_max_def}\" \\\n" - "\t\t-a -n \"`egrep '#define[ \t]*HUGE_VAL[ \t]+DBL_MAX' $file`\" \\\n" - "\t\t-a -z \"`egrep '#define[ \t]+DBL_MAX[ \t]+' $file`\"\n" - "\t ) > /dev/null 2>&1\n" - "\tthen sed -e '/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/'" - "\n\telse cat ; fi |\n" - - "\tsed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n#ifndef HUGE_VAL\n' " - "-e '/define[ \t]HUGE_VAL[ \t]/a\\\n#endif\n'"; + "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n" + "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/" + "s/DBL_MAX/'\"$dbl_max_def/\"\n" + "\telse cat\n" + "\tfi"; }; +/* + * In any case, put #ifndef .. #endif around #define HUGE_VAL in math.h. + */ +fix = { + hackname = math_huge_val_ifndef; + files = math/math.h; + select = "define[ \t]*HUGE_VAL"; + + sed = "/define[ \t]HUGE_VAL[ \t]/i\\\n#ifndef HUGE_VAL\n"; + sed = "/define[ \t]HUGE_VAL[ \t]/a\\\n#endif\n"; +}; /* * nested comment @@ -1626,6 +1649,7 @@ fix = { hackname = rs6000_param; files = "stdio.h"; files = "unistd.h"; + select = 'const char new'; sed = 's@rename(const char \*old, const char \*new)@' 'rename(const char *_old, const char *_new)@'; @@ -1708,6 +1732,7 @@ fix = { fix = { hackname = stdio_va_list; files = stdio.h; + bypass = "__gnuc_va_list"; /* * Use __gnuc_va_list in arg types in place of va_list. @@ -1907,6 +1932,8 @@ fix = { fix = { hackname = sunos_matherr_decl; files = math.h; + /* If matherr has a prototype already, the header needs no fix. */ + bypass = 'matherr.*struct exception'; /* * Once a declaration for 'struct exception' is found, * stop trying to insert a forward reference for it. @@ -1922,6 +1949,7 @@ fix = { fix = { hackname = sunos_strlen; files = strings.h; + select = "int[ \t]*strlen"; sed = "s/int[ \t]*strlen();/__SIZE_TYPE__ strlen();/"; }; @@ -2314,9 +2342,9 @@ fix = { /* - * Fix return type of exit and abort in <stdlib.h> on SunOS 4.1. - * Also wrap protection around size_t for m88k-sysv3 systems. - * We use a funny name to ensure it follows 'systypes' fix. + * Fix this file to avoid interfering with stddef.h, + * but don't mistakenly match ssize_t present in AIX for the ps/2, + * or typedefs which use (but do not set) size_t. */ fix = { hackname = systypes_for_aix; @@ -2334,8 +2362,9 @@ fix = { /* - * if the #if says _cplusplus, not the double underscore __cplusplus - * that it should be + * Fix return type of exit and abort in <stdlib.h> on SunOS 4.1. + * Also wrap protection around size_t for m88k-sysv3 systems. + * We use a funny name to ensure it follows 'systypes' fix. */ fix = { hackname = sysv68_string; @@ -2410,13 +2439,13 @@ fix = { /* - * Fix this file to avoid interfering with stddef.h, - * but don't mistakenly match ssize_t present in AIX for the ps/2, - * or typedefs which use (but do not set) size_t. + * if the #if says _cplusplus, not the double underscore __cplusplus + * that it should be */ fix = { hackname = tinfo_cplusplus; files = tinfo.h; + select = "[ \t]_cplusplus"; sed = "s/[ \t]_cplusplus/ __cplusplus/"; }; @@ -2448,17 +2477,13 @@ fix = { /* * parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R. - * also get rid of bogus inline definitions in HP-UX 8.0 */ fix = { hackname = ultrix_atof_param; files = math.h; + select = "atof\\([ \t]*char"; sed = "s@atof(\\([ \t]*char[ \t]*\\*[^)]*\\))@atof(const \\1)@"; - 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]*) {.*}@@"; }; diff --git a/gcc/fixinc/inclhack.sh b/gcc/fixinc/inclhack.sh index 2210b4a..dac216d 100755 --- a/gcc/fixinc/inclhack.sh +++ b/gcc/fixinc/inclhack.sh @@ -6,7 +6,7 @@ # files which are fixed to work correctly with ANSI C and placed in a # directory that GNU C will search. # -# This script contains 112 fixup scripts. +# This script contains 114 fixup scripts. # # See README-fixinc for more information. # @@ -519,20 +519,30 @@ _EOF_ # - # Fix 8: Aab_Fd_Zero_Glibc_1_0 + # Fix 8: Aab_Fd_Zero_Asm_Posix_Types_H # case "${file}" in ./asm/posix_types.h ) case "$target_canonical" in i[34567]86-*-linux-gnu* ) - echo "aab_fd_zero_glibc_1_0 replacing file ${file}" >&2 + if ( test -z "`egrep '} while' ${file}`" + ) > /dev/null 2>&1 ; then + echo "aab_fd_zero_asm_posix_types_h replacing file ${file}" >&2 cat > ${DESTFILE} << '_EOF_' -/* This file fixes __FD_ZERO bug for glibc-1.x. */ +/* 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; __asm__ __volatile__("cld ; rep ; stosl" : "=&c" (__d0), "=&D" (__d1) : "a" (0), "0" (__FDSET_LONGS), "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); } while (0) +#define __FD_ZERO(fdsetp) \ + do { \ + int __d0, __d1; \ + __asm__ __volatile__("cld ; rep ; stosl" \ + : "=&c" (__d0), "=&D" (__d1) \ + : "a" (0), "0" (__FDSET_LONGS), \ + "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \ + } while (0) #endif #define _POSIX_TYPES_H_WRAPPER @@ -541,6 +551,7 @@ _EOF_ _EOF_ continue + fi # end of bypass 'if' ;; # case end for machine type test esac ;; # case end for file name test @@ -548,20 +559,27 @@ _EOF_ # - # Fix 9: Aab_Fd_Zero_Glibc_1_X + # Fix 9: Aab_Fd_Zero_Gnu_Types_H # case "${file}" in ./gnu/types.h ) case "$target_canonical" in i[34567]86-*-linux-gnu* ) - echo "aab_fd_zero_glibc_1_x replacing file ${file}" >&2 + echo "aab_fd_zero_gnu_types_h replacing file ${file}" >&2 cat > ${DESTFILE} << '_EOF_' -/* This file fixes __FD_ZERO bug for glibc-1.x. */ +/* 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 -# 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"); } while (0) +# 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"); \ + } while (0) #endif #define _TYPES_H_WRAPPER @@ -577,20 +595,31 @@ _EOF_ # - # Fix 10: Aab_Fd_Zero_Glibc_2_0 + # Fix 10: Aab_Fd_Zero_Selectbits_H # case "${file}" in ./selectbits.h ) case "$target_canonical" in i[34567]86-*-linux-gnu* ) - echo "aab_fd_zero_glibc_2_0 replacing file ${file}" >&2 + echo "aab_fd_zero_selectbits_h replacing file ${file}" >&2 cat > ${DESTFILE} << '_EOF_' -/* This file fixes __FD_ZERO bug for glibc-2.0.x. */ +/* 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 +#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" : "=&c" (__d0), "=&D" (__d1) : "a" (0), "0" (sizeof (__fd_set) / sizeof (__fd_mask)), "1" ((__fd_mask *) (fdsetp)) : "memory"); } while (0) +#define __FD_ZERO(fdsetp) \ + do { \ + int __d0, __d1; \ + __asm__ __volatile__ ("cld; rep; stosl" \ + : "=&c" (__d0), "=&D" (__d1) \ + : "a" (0), "0" (sizeof (__fd_set) \ + / sizeof (__fd_mask)), \ + "1" ((__fd_mask *) (fdsetp)) \ + : "memory"); \ + } while (0) #endif #define _SELECTBITS_H_WRAPPER @@ -683,7 +712,9 @@ htons (unsigned int __arg) return __result; } -#elif ((defined (__i860__) && !defined (__i860_big_endian__)) || defined (__ns32k__) || defined (__vax__) || defined (__spur__) || defined (__arm__)) +#elif ((defined (__i860__) && !defined (__i860_big_endian__)) \ + || defined (__ns32k__) || defined (__vax__) \ + || defined (__spur__) || defined (__arm__)) #ifndef __BYTE_ORDER__ #define __BYTE_ORDER__ __LITTLE_ENDIAN__ @@ -1069,8 +1100,7 @@ struct rusage; case "${file}" in ./assert.h ) if ( test -n "`egrep 'stderr' ${file}`" ) > /dev/null 2>&1 ; then - if ( test -a \ - -z "`egrep 'include.*stdio.h' ${file}`" + if ( test -z "`egrep 'include.*stdio.h' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} broken_assert_stdio" @@ -1096,8 +1126,7 @@ struct rusage; case "${file}" in ./assert.h ) if ( test -n "`egrep 'exit *\\(|abort *\\(' ${file}`" ) > /dev/null 2>&1 ; then - if ( test -a \ - -z "`egrep 'include.*stdlib.h' ${file}`" + if ( test -z "`egrep 'include.*stdlib.h' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} broken_assert_stdlib" @@ -1291,8 +1320,7 @@ extern "C"\ # case "${file}" in ./sys/mman.h | \ ./rpc/types.h ) - if ( test -a \ - -z "`egrep '\"C\"|__BEGIN_DECLS' ${file}`" + if ( test -z "`egrep '\"C\"|__BEGIN_DECLS' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} cxx_unready" @@ -1364,7 +1392,31 @@ extern "C" {\ # - # Fix 37: Hpux11_Uint32_C + # Fix 37: Hpux8_Bogus_Inlines + # + case "${file}" in ./math.h ) + if ( test -n "`egrep 'inline' ${file}`" + ) > /dev/null 2>&1 ; then + fixlist="${fixlist} + hpux8_bogus_inlines" + if [ ! -r ${DESTFILE} ] + then infile=${file} + else infile=${DESTFILE} ; fi + + sed -e 's@inline int abs(int [a-z][a-z]*) {.*}@extern "C" int abs(int);@' \ + -e 's@inline double abs(double [a-z][a-z]*) {.*}@@' \ + -e 's@inline int sqr(int [a-z][a-z]*) {.*}@@' \ + -e 's@inline double sqr(double [a-z][a-z]*) {.*}@@' \ + < $infile > ${DESTDIR}/fixinc.tmp + rm -f ${DESTFILE} + mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' + ;; # case end for file name test + esac + + + # + # Fix 38: Hpux11_Uint32_C # case "${file}" in ./inttypes.h ) if ( test -n "`egrep '^#define UINT32_C\\(__c\\)[ ]*__CONCAT__\\(__CONCAT_U__\\(__c\\),l\\)' ${file}`" @@ -1385,7 +1437,7 @@ extern "C" {\ # - # Fix 38: Interactv_Add1 + # Fix 39: Interactv_Add1 # case "${file}" in ./stdio.h | \ ./math.h | \ @@ -1412,7 +1464,7 @@ extern "C" {\ # - # Fix 39: Interactv_Add2 + # Fix 40: Interactv_Add2 # case "${file}" in ./math.h ) if ( test '(' -d /etc/conf/kconfig.d ')' -a \ @@ -1434,7 +1486,7 @@ extern "C" {\ # - # Fix 40: Interactv_Add3 + # Fix 41: Interactv_Add3 # case "${file}" in ./sys/limits.h ) if ( test '(' -d /etc/conf/kconfig.d ')' -a \ @@ -1457,7 +1509,7 @@ extern "C" {\ # - # Fix 41: Io_Def_Quotes + # Fix 42: Io_Def_Quotes # if ( test -n "`egrep '[ ]*[ ](_|DES)IO[A-Z]*[ ]*\\( *[^,'\\'']' ${file}`" ) > /dev/null 2>&1 ; then @@ -1478,7 +1530,7 @@ extern "C" {\ # - # Fix 42: Ioctl_Fix_Ctrl + # Fix 43: Ioctl_Fix_Ctrl # if ( test -n "`egrep 'CTRL[ ]*\\(' ${file}`" ) > /dev/null 2>&1 ; then @@ -1501,9 +1553,11 @@ extern "C" {\ # - # Fix 43: Ip_Missing_Semi + # Fix 44: Ip_Missing_Semi # case "${file}" in ./netinet/ip.h ) + if ( test -n "`egrep '}$' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} ip_missing_semi" if [ ! -r ${DESTFILE} ] @@ -1514,12 +1568,13 @@ extern "C" {\ < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 44: Irix_Multiline_Cmnt + # Fix 45: Irix_Multiline_Cmnt # case "${file}" in ./sys/types.h ) fixlist="${fixlist} @@ -1538,7 +1593,7 @@ extern "C" {\ # - # Fix 45: Irix_Sockaddr + # Fix 46: Irix_Sockaddr # case "${file}" in ./rpc/auth.h ) if ( test -n "`egrep 'authdes_create.*struct sockaddr' ${file}`" @@ -1561,7 +1616,7 @@ struct sockaddr; # - # Fix 46: Irix_Struct__File + # Fix 47: Irix_Struct__File # case "${file}" in ./rpc/xdr.h ) fixlist="${fixlist} @@ -1581,7 +1636,7 @@ struct __file_s; # - # Fix 47: Irix_Asm_Apostrophe + # Fix 48: Irix_Asm_Apostrophe # case "${file}" in ./sys/asm.h ) if ( test -n "`egrep '^[ ]*#.*[Ww]e'\\''re' ${file}`" @@ -1602,7 +1657,7 @@ struct __file_s; # - # Fix 48: Isc_Fmod + # Fix 49: Isc_Fmod # case "${file}" in ./math.h ) if ( test -n "`egrep 'fmod\\(double\\)' ${file}`" @@ -1623,7 +1678,7 @@ struct __file_s; # - # Fix 49: Motorola_Nested + # Fix 50: Motorola_Nested # case "${file}" in ./limits.h | \ ./sys/limits.h ) @@ -1646,7 +1701,7 @@ struct __file_s; # - # Fix 50: Isc_Sys_Limits + # Fix 51: Isc_Sys_Limits # case "${file}" in ./sys/limits.h ) if ( test -n "`egrep 'CHILD_MAX' ${file}`" @@ -1668,7 +1723,7 @@ struct __file_s; # - # Fix 51: Kandr_Concat + # Fix 52: Kandr_Concat # case "${file}" in ./sparc/asm_linkage.h | \ ./sun3/asm_linkage.h | \ @@ -1706,12 +1761,11 @@ struct __file_s; # - # Fix 52: Limits_Ifndefs + # Fix 53: Limits_Ifndefs # case "${file}" in ./limits.h | \ ./sys/limits.h ) - if ( test -a \ - -z "`egrep 'ifndef[ ]+FLT_MIN' ${file}`" + if ( test -z "`egrep 'ifndef[ ]+FLT_MIN' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} limits_ifndefs" @@ -1765,7 +1819,7 @@ struct __file_s; # - # Fix 53: Lynx_Void_Int + # Fix 54: Lynx_Void_Int # case "${file}" in ./curses.h ) if ( test -n "`egrep '#[ ]*define[ ]+void[ ]+int' ${file}`" @@ -1786,7 +1840,7 @@ struct __file_s; # - # Fix 54: Lynxos_Fcntl_Proto + # Fix 55: Lynxos_Fcntl_Proto # case "${file}" in ./fcntl.h ) if ( test -n "`egrep 'fcntl.*\\(int, int, int\\)' ${file}`" @@ -1807,7 +1861,7 @@ struct __file_s; # - # Fix 55: M88k_Bad_Hypot_Opt + # Fix 56: M88k_Bad_Hypot_Opt # case "${file}" in ./math.h ) case "$target_canonical" in m88k-motorola-sysv3* ) @@ -1842,7 +1896,7 @@ static __inline__ double fake_hypot (x, y)\ # - # Fix 56: M88k_Bad_S_If + # Fix 57: M88k_Bad_S_If # case "${file}" in ./sys/stat.h ) case "$target_canonical" in m88k-*-sysv3* ) @@ -1867,12 +1921,11 @@ static __inline__ double fake_hypot (x, y)\ # - # Fix 57: M88k_Multi_Incl + # Fix 58: M88k_Multi_Incl # case "${file}" in ./time.h ) case "$target_canonical" in m88k-tektronix-sysv3* ) - if ( test -a \ - -z "`egrep '#ifndef' ${file}`" + if ( test -z "`egrep '#ifndef' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} m88k_multi_incl" @@ -1901,7 +1954,7 @@ static __inline__ double fake_hypot (x, y)\ # - # Fix 58: Machine_Name + # Fix 59: Machine_Name # if ( test -n "`egrep '^#[ ]*(if|elif).*[^a-zA-Z0-9_](_*[MSRrhim]|[Mbimnpstuv])[a-zA-Z0-9_]' ${file}`" ) > /dev/null 2>&1 ; then @@ -1953,11 +2006,13 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 59: Math_Exception + # Fix 60: Math_Exception # case "${file}" in ./math.h ) if ( test -n "`egrep 'struct exception' ${file}`" ) > /dev/null 2>&1 ; then + if ( test -z "`egrep 'We have a problem when using C++' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} math_exception" if [ ! -r ${DESTFILE} ] @@ -1974,46 +2029,34 @@ s/\\+++fixinc_eol+++/\\/g #undef exception\ #endif ' \ - -e '/matherr/i\ -#ifdef __cplusplus\ -#define exception __math_exception\ -#endif -' \ - -e '/matherr/a\ -#ifdef __cplusplus\ -#undef exception\ -#endif -' \ < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of bypass 'if' fi # end of select 'if' ;; # case end for file name test esac # - # Fix 60: Math_Gcc_Ifndefs + # Fix 61: Math_Huge_Val_From_Dbl_Max # case "${file}" in ./math.h ) + if ( test -n "`egrep 'define[ ]*HUGE_VAL[ ]*DBL_MAX' ${file}`" + ) > /dev/null 2>&1 ; then + if ( test -z "`egrep 'define[ ]*DBL_MAX' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} - math_gcc_ifndefs" + math_huge_val_from_dbl_max" if [ ! -r ${DESTFILE} ] then infile=${file} else infile=${DESTFILE} ; fi ( dbl_max_def=`egrep 'define[ ]+DBL_MAX[ ]+.*' float.h 2>/dev/null` - if ( test -n "${dbl_max_def}" \ - -a -n "`egrep '#define[ ]*HUGE_VAL[ ]+DBL_MAX' $file`" \ - -a -z "`egrep '#define[ ]+DBL_MAX[ ]+' $file`" - ) > /dev/null 2>&1 - then sed -e '/define[ ]HUGE_VAL[ ]DBL_MAX/s/DBL_MAX/$dbl_max_def/' - else cat ; fi | - sed -e '/define[ ]HUGE_VAL[ ]/i\ -#ifndef HUGE_VAL -' -e '/define[ ]HUGE_VAL[ ]/a\ -#endif -' ) < $infile > ${DESTDIR}/fixinc.tmp + if ( test -n "${dbl_max_def}" ) > /dev/null 2>&1 + then sed -e '/define[ ]*HUGE_VAL[ ]*DBL_MAX/s/DBL_MAX/'"$dbl_max_def/" + else cat + fi ) < $infile > ${DESTDIR}/fixinc.tmp # Shell scripts have the potential of removing the output # We interpret that to mean the file is not to be altered @@ -2022,12 +2065,40 @@ s/\\+++fixinc_eol+++/\\/g then continue ; fi rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of bypass 'if' + fi # end of select 'if' + ;; # case end for file name test + esac + + + # + # Fix 62: Math_Huge_Val_Ifndef + # + case "${file}" in ./math/math.h ) + if ( test -n "`egrep 'define[ ]*HUGE_VAL' ${file}`" + ) > /dev/null 2>&1 ; then + fixlist="${fixlist} + math_huge_val_ifndef" + if [ ! -r ${DESTFILE} ] + then infile=${file} + else infile=${DESTFILE} ; fi + + sed -e '/define[ ]HUGE_VAL[ ]/i\ +#ifndef HUGE_VAL +' \ + -e '/define[ ]HUGE_VAL[ ]/a\ +#endif +' \ + < $infile > ${DESTDIR}/fixinc.tmp + rm -f ${DESTFILE} + mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 61: Nested_Comment + # Fix 63: Nested_Comment # case "${file}" in ./rpc/rpc.h ) fixlist="${fixlist} @@ -2045,7 +2116,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 62: News_Os_Recursion + # Fix 64: News_Os_Recursion # case "${file}" in ./stdlib.h ) if ( test -n "`egrep '#include <stdlib.h>' ${file}`" @@ -2071,7 +2142,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 63: Next_Math_Prefix + # Fix 65: Next_Math_Prefix # case "${file}" in ./ansi/math.h ) if ( test -n "`egrep '^extern.*double.*__const__.*' ${file}`" @@ -2096,7 +2167,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 64: Next_Template + # Fix 66: Next_Template # case "${file}" in ./bsd/libc.h ) if ( test -n "`egrep 'template' ${file}`" @@ -2118,7 +2189,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 65: Next_Volitile + # Fix 67: Next_Volitile # case "${file}" in ./ansi/stdlib.h ) if ( test -n "`egrep 'volatile' ${file}`" @@ -2140,7 +2211,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 66: Next_Wait_Union + # Fix 68: Next_Wait_Union # case "${file}" in ./sys/wait.h ) if ( test -n "`egrep 'wait\\(union wait' ${file}`" @@ -2161,7 +2232,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 67: Nodeent_Syntax + # Fix 69: Nodeent_Syntax # case "${file}" in ./netdnet/dnetdb.h ) fixlist="${fixlist} @@ -2179,7 +2250,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 68: Osf_Namespace_A + # Fix 70: Osf_Namespace_A # case "${file}" in ./reg_types.h | \ ./sys/lc_core.h ) @@ -2206,7 +2277,7 @@ s/\\+++fixinc_eol+++/\\/g # - # Fix 69: Osf_Namespace_B + # Fix 71: Osf_Namespace_B # case "${file}" in ./regex.h ) if ( test '(' -r reg_types.h ')' -a \ @@ -2234,7 +2305,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 70: Pthread_Page_Size + # Fix 72: Pthread_Page_Size # case "${file}" in ./pthread.h ) if ( test -n "`egrep '^int __page_size' ${file}`" @@ -2255,7 +2326,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 71: Read_Ret_Type + # Fix 73: Read_Ret_Type # case "${file}" in ./stdio.h ) if ( test -n "`egrep 'extern int .*, fread\\(\\), fwrite\\(\\)' ${file}`" @@ -2277,7 +2348,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 72: Rs6000_Double + # Fix 74: Rs6000_Double # case "${file}" in ./math.h ) if ( test -n "`egrep '[^a-zA-Z_]class\\(' ${file}`" @@ -2303,7 +2374,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 73: Rs6000_Fchmod + # Fix 75: Rs6000_Fchmod # case "${file}" in ./sys/stat.h ) if ( test -n "`egrep 'fchmod\\(char' ${file}`" @@ -2324,10 +2395,12 @@ typedef __regmatch_t regmatch_t; # - # Fix 74: Rs6000_Param + # Fix 76: Rs6000_Param # case "${file}" in ./stdio.h | \ ./unistd.h ) + if ( test -n "`egrep 'const char new' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} rs6000_param" if [ ! -r ${DESTFILE} ] @@ -2338,12 +2411,13 @@ typedef __regmatch_t regmatch_t; < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 75: Sony_Include + # Fix 77: Sony_Include # case "${file}" in ./machine/machparam.h ) if ( test -n "`egrep '\"\\.\\./machine/endian.h\"' ${file}`" @@ -2364,7 +2438,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 76: Statsswtch + # Fix 78: Statsswtch # case "${file}" in ./rpcsvc/rstat.h ) if ( test -n "`egrep 'boottime$' ${file}`" @@ -2385,9 +2459,11 @@ typedef __regmatch_t regmatch_t; # - # Fix 77: Stdio_Va_List + # Fix 79: Stdio_Va_List # case "${file}" in ./stdio.h ) + if ( test -z "`egrep '__gnuc_va_list' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} stdio_va_list" if [ ! -r ${DESTFILE} ] @@ -2419,12 +2495,13 @@ typedef __regmatch_t regmatch_t; then continue ; fi rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of bypass 'if' ;; # case end for file name test esac # - # Fix 78: Sun_Bogus_Ifdef + # Fix 80: Sun_Bogus_Ifdef # case "${file}" in ./hsfs/hsfs_spec.h | \ ./hsfs/iso_spec.h ) @@ -2446,7 +2523,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 79: Sun_Bogus_Ifdef_Sun4c + # Fix 81: Sun_Bogus_Ifdef_Sun4c # case "${file}" in ./hsfs/hsnode.h ) if ( test -n "`egrep '#ifdef __i386__ || __sun4c__' ${file}`" @@ -2467,7 +2544,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 80: Sun_Catmacro + # Fix 82: Sun_Catmacro # case "${file}" in ./pixrect/memvar.h ) if ( test -n "`egrep '^#define[ ]+CAT\\(a,b\\)' ${file}`" @@ -2495,7 +2572,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 81: Sun_Malloc + # Fix 83: Sun_Malloc # case "${file}" in ./malloc.h ) fixlist="${fixlist} @@ -2516,7 +2593,7 @@ typedef __regmatch_t regmatch_t; # - # Fix 82: Sun_Memcpy + # Fix 84: Sun_Memcpy # case "${file}" in ./memory.h ) if ( test -n "`egrep '/\\* @\\(#\\)(head/memory.h 50.1 |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2 )\\*/' ${file}`" @@ -2558,7 +2635,7 @@ extern int memcmp();\ # - # Fix 83: Sun_Rusers_Semi + # Fix 85: Sun_Rusers_Semi # case "${file}" in ./rpcsvc/rusers.h ) if ( test -n "`egrep '_cnt$' ${file}`" @@ -2579,7 +2656,7 @@ extern int memcmp();\ # - # Fix 84: Sun_Signal + # Fix 86: Sun_Signal # case "${file}" in ./sys/signal.h | \ ./signal.h ) @@ -2608,7 +2685,7 @@ void (*signal(...))(...);\ # - # Fix 85: Sun_Auth_Proto + # Fix 87: Sun_Auth_Proto # case "${file}" in ./rpc/auth.h | \ ./rpc/clnt.h | \ @@ -2637,9 +2714,11 @@ void (*signal(...))(...);\ # - # Fix 86: Sunos_Matherr_Decl + # Fix 88: Sunos_Matherr_Decl # case "${file}" in ./math.h ) + if ( test -z "`egrep 'matherr.*struct exception' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} sunos_matherr_decl" if [ ! -r ${DESTFILE} ] @@ -2653,14 +2732,17 @@ struct exception; < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of bypass 'if' ;; # case end for file name test esac # - # Fix 87: Sunos_Strlen + # Fix 89: Sunos_Strlen # case "${file}" in ./strings.h ) + if ( test -n "`egrep 'int[ ]*strlen' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} sunos_strlen" if [ ! -r ${DESTFILE} ] @@ -2671,12 +2753,13 @@ struct exception; < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 88: Systypes + # Fix 90: Systypes # case "${file}" in ./sys/types.h | \ ./stdlib.h | \ @@ -2730,13 +2813,12 @@ typedef __SIZE_TYPE__ size_t;\ # - # Fix 89: Systypes_For_Aix + # Fix 91: Systypes_For_Aix # case "${file}" in ./sys/types.h ) if ( test -n "`egrep 'typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t' ${file}`" ) > /dev/null 2>&1 ; then - if ( test -a \ - -z "`egrep '_GCC_SIZE_T' ${file}`" + if ( test -z "`egrep '_GCC_SIZE_T' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} systypes_for_aix" @@ -2761,7 +2843,7 @@ typedef __SIZE_TYPE__ size_t;\ # - # Fix 90: Sysv68_String + # Fix 92: Sysv68_String # case "${file}" in ./string.h ) fixlist="${fixlist} @@ -2789,7 +2871,7 @@ extern unsigned int\ # - # Fix 91: Sysz_Stdlib_For_Sun + # Fix 93: Sysz_Stdlib_For_Sun # case "${file}" in ./stdlib.h ) fixlist="${fixlist} @@ -2820,7 +2902,7 @@ extern unsigned int\ # - # Fix 92: Sysz_Stdtypes_For_Sun + # Fix 94: Sysz_Stdtypes_For_Sun # case "${file}" in ./sys/stdtypes.h ) fixlist="${fixlist} @@ -2858,9 +2940,11 @@ extern unsigned int\ # - # Fix 93: Tinfo_Cplusplus + # Fix 95: Tinfo_Cplusplus # case "${file}" in ./tinfo.h ) + if ( test -n "`egrep '[ ]_cplusplus' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} tinfo_cplusplus" if [ ! -r ${DESTFILE} ] @@ -2871,12 +2955,13 @@ extern unsigned int\ < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 94: Ultrix_Ansi_Compat + # Fix 96: Ultrix_Ansi_Compat # case "${file}" in ./ansi_compat.h ) if ( test -n "`egrep 'ULTRIX' ${file}`" @@ -2900,7 +2985,7 @@ extern unsigned int\ # - # Fix 95: Ultrix_Fix_Fixproto + # Fix 97: Ultrix_Fix_Fixproto # case "${file}" in ./sys/utsname.h ) if ( test -n "`egrep 'ULTRIX' ${file}`" @@ -2923,9 +3008,11 @@ struct utsname; # - # Fix 96: Ultrix_Atof_Param + # Fix 98: Ultrix_Atof_Param # case "${file}" in ./math.h ) + if ( test -n "`egrep 'atof\\([ ]*char' ${file}`" + ) > /dev/null 2>&1 ; then fixlist="${fixlist} ultrix_atof_param" if [ ! -r ${DESTFILE} ] @@ -2933,19 +3020,16 @@ struct utsname; else infile=${DESTFILE} ; fi sed -e 's@atof(\([ ]*char[ ]*\*[^)]*\))@atof(const \1)@' \ - -e 's@inline int abs(int [a-z][a-z]*) {.*}@extern "C" int abs(int);@' \ - -e 's@inline double abs(double [a-z][a-z]*) {.*}@@' \ - -e 's@inline int sqr(int [a-z][a-z]*) {.*}@@' \ - -e 's@inline double sqr(double [a-z][a-z]*) {.*}@@' \ < $infile > ${DESTDIR}/fixinc.tmp rm -f ${DESTFILE} mv -f ${DESTDIR}/fixinc.tmp ${DESTFILE} + fi # end of select 'if' ;; # case end for file name test esac # - # Fix 97: Ultrix_Const + # Fix 99: Ultrix_Const # case "${file}" in ./stdio.h ) fixlist="${fixlist} @@ -2971,7 +3055,7 @@ struct utsname; # - # Fix 98: Ultrix_Ifdef + # Fix 100: Ultrix_Ifdef # case "${file}" in ./sys/file.h ) if ( test -n "`egrep '#ifdef KERNEL' ${file}`" @@ -2992,7 +3076,7 @@ struct utsname; # - # Fix 99: Ultrix_Nested_Cmnt + # Fix 101: Ultrix_Nested_Cmnt # case "${file}" in ./rpc/svc.h ) fixlist="${fixlist} @@ -3010,7 +3094,7 @@ struct utsname; # - # Fix 100: Ultrix_Static + # Fix 102: Ultrix_Static # case "${file}" in ./machine/cpu.h ) if ( test -n "`egrep '#include \"r[34]_cpu' ${file}`" @@ -3033,12 +3117,11 @@ struct utsname; # - # Fix 101: Undefine_Null + # Fix 103: Undefine_Null # if ( test -n "`egrep '^#[ ]*define[ ]*[ ]NULL[ ]' ${file}`" ) > /dev/null 2>&1 ; then - if ( test -a \ - -z "`egrep '#[ ]*(ifn|un)def[ ]*[ ]NULL($|[ ])' ${file}`" + if ( test -z "`egrep '#[ ]*(ifn|un)def[ ]*[ ]NULL($|[ ])' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} undefine_null" @@ -3057,7 +3140,7 @@ struct utsname; # - # Fix 102: Unixware7_Byteorder_Fix + # Fix 104: Unixware7_Byteorder_Fix # case "${file}" in ./arpa/inet.h ) case "$target_canonical" in *-*-sysv4* | \ @@ -3087,7 +3170,7 @@ struct utsname; # - # Fix 103: Va_I960_Macro + # Fix 105: Va_I960_Macro # case "${file}" in ./arch/i960/archI960.h ) if ( test -n "`egrep '__(vsiz|vali|vpad|alignof__)' ${file}`" @@ -3111,7 +3194,7 @@ struct utsname; # - # Fix 104: Void_Null + # Fix 106: Void_Null # case "${file}" in ./curses.h | \ ./dbm.h | \ @@ -3142,7 +3225,7 @@ struct utsname; # - # Fix 105: Vxworks_Gcc_Problem + # Fix 107: Vxworks_Gcc_Problem # case "${file}" in ./types/vxTypesBase.h ) if ( test -n "`egrep '__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__' ${file}`" @@ -3184,7 +3267,7 @@ struct utsname; # - # Fix 106: Vxworks_Needs_Vxtypes + # Fix 108: Vxworks_Needs_Vxtypes # case "${file}" in ./time.h ) if ( test -n "`egrep 'uint_t[ ][ ]*_clocks_per_sec' ${file}`" @@ -3205,7 +3288,7 @@ struct utsname; # - # Fix 107: Vxworks_Needs_Vxworks + # Fix 109: Vxworks_Needs_Vxworks # case "${file}" in ./sys/stat.h ) if ( test -n "`egrep '#[ ]define[ ][ ]*__INCstath' ${file}`" @@ -3233,7 +3316,7 @@ struct utsname; # - # Fix 108: Vxworks_Time + # Fix 110: Vxworks_Time # case "${file}" in ./time.h ) if ( test -n "`egrep 'VOIDFUNCPTR' ${file}`" @@ -3267,11 +3350,10 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\ # - # Fix 109: X11_Class + # Fix 111: X11_Class # case "${file}" in ./X11/ShellP.h ) - if ( test -a \ - -z "`egrep '__cplusplus' ${file}`" + if ( test -z "`egrep '__cplusplus' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} x11_class" @@ -3296,11 +3378,10 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\ # - # Fix 110: X11_Class_Usage + # Fix 112: X11_Class_Usage # case "${file}" in ./Xm/BaseClassI.h ) - if ( test -a \ - -z "`egrep '__cplusplus' ${file}`" + if ( test -z "`egrep '__cplusplus' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} x11_class_usage" @@ -3318,11 +3399,10 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\ # - # Fix 111: X11_New + # Fix 113: X11_New # case "${file}" in ./Xm/Traversal.h ) - if ( test -a \ - -z "`egrep '__cplusplus' ${file}`" + if ( test -z "`egrep '__cplusplus' ${file}`" ) > /dev/null 2>&1 ; then fixlist="${fixlist} x11_new" @@ -3348,7 +3428,7 @@ typedef void (*__gcc_VOIDFUNCPTR) ();\ # - # Fix 112: X11_Sprintf + # Fix 114: X11_Sprintf # case "${file}" in ./X11*/Xmu.h ) fixlist="${fixlist} |