OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [fixincludes/] [inclhack.def] - Diff between revs 266 and 338

Only display areas with differences | Details | Blame | View Log

Rev 266 Rev 338
/* -*- Mode: C -*-  */
/* -*- Mode: C -*-  */
autogen definitions fixincl;
autogen definitions fixincl;
/* Define all the fixes we know about for repairing damaged headers.
/* Define all the fixes we know about for repairing damaged headers.
   Please see the README before adding or changing entries in this file.
   Please see the README before adding or changing entries in this file.
   This is the sort command:
   This is the sort command:
   blocksort output=inclhack.sorted \
   blocksort output=inclhack.sorted \
          pattern='^/\*$' \
          pattern='^/\*$' \
          trailer='^/\*EOF\*[/]' \
          trailer='^/\*EOF\*[/]' \
          input=inclhack.def \
          input=inclhack.def \
          key='hackname[        ]*=[    ]*(.*);'
          key='hackname[        ]*=[    ]*(.*);'
   Set up a debug test so we can make the templates emit special
   Set up a debug test so we can make the templates emit special
   code while debugging these fixes:  */
   code while debugging these fixes:  */
#ifdef DEBUG
#ifdef DEBUG
FIXINC_DEBUG = yes;
FIXINC_DEBUG = yes;
#endif
#endif
/* On AIX when _LARGE_FILES is defined stdio.h defines fopen to
/* On AIX when _LARGE_FILES is defined stdio.h defines fopen to
 * fopen64 etc. and this causes problems when building with g++
 * fopen64 etc. and this causes problems when building with g++
 * because cstdio udefs everything from stdio.h, leaving us with
 * because cstdio udefs everything from stdio.h, leaving us with
 * ::fopen has not been declared errors. This fixes stdio.h to
 * ::fopen has not been declared errors. This fixes stdio.h to
 * undef those defines and use __asm__ to alias the symbols if
 * undef those defines and use __asm__ to alias the symbols if
 * building with g++ and -D_LARGE_FILES
 * building with g++ and -D_LARGE_FILES
 */
 */
fix = {
fix = {
    hackname  = AAB_aix_stdio;
    hackname  = AAB_aix_stdio;
    files     = stdio.h;
    files     = stdio.h;
    select    = "define fopen fopen64";
    select    = "define fopen fopen64";
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    test-text = ''; /* no way to test */
    test-text = ''; /* no way to test */
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "";
    c_fix_arg = "";
    c_fix_arg = <<- _EOArg_
    c_fix_arg = <<- _EOArg_
        #if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus
        #if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus
        #define __need__aix_stdio_h_fix
        #define __need__aix_stdio_h_fix
        #ifdef __need__aix_stdio_h_fix
        #ifdef __need__aix_stdio_h_fix
        #undef fseeko
        #undef fseeko
        #undef ftello
        #undef ftello
        #undef fgetpos
        #undef fgetpos
        #undef fsetpos
        #undef fsetpos
        #undef fopen
        #undef fopen
        #undef freopen
        #undef freopen
        /* Alias the symbols using asm */
        /* Alias the symbols using asm */
        extern "C" {
        extern "C" {
        extern int fgetpos(FILE *, fpos64_t *) __asm__("fgetpos64");
        extern int fgetpos(FILE *, fpos64_t *) __asm__("fgetpos64");
        extern FILE *fopen(const char *, const char *) __asm__("fopen64");
        extern FILE *fopen(const char *, const char *) __asm__("fopen64");
        extern FILE *freopen(const char *, const char *, FILE *) __asm__("freopen64");
        extern FILE *freopen(const char *, const char *, FILE *) __asm__("freopen64");
        extern int fseeko(FILE *, off64_t, int) __asm__("fseeko64");
        extern int fseeko(FILE *, off64_t, int) __asm__("fseeko64");
        extern int fsetpos(FILE *, const fpos64_t *) __asm__("fsetpos64");
        extern int fsetpos(FILE *, const fpos64_t *) __asm__("fsetpos64");
        extern off64_t ftello(FILE *) __asm__("ftello64");
        extern off64_t ftello(FILE *) __asm__("ftello64");
        }
        }
        #endif
        #endif
        #endif
        #endif
        _EOArg_;
        _EOArg_;
};
};
/*
/*
 *  On Mac OS 10.3.9, the 'long double' functions are available in
 *  On Mac OS 10.3.9, the 'long double' functions are available in
 *  libSystem, but are not prototyped in math.h.
 *  libSystem, but are not prototyped in math.h.
 */
 */
fix = {
fix = {
  hackname  = AAB_darwin7_9_long_double_funcs;
  hackname  = AAB_darwin7_9_long_double_funcs;
  mach      = "*-*-darwin7.9*";
  mach      = "*-*-darwin7.9*";
  files     = architecture/ppc/math.h;
  files     = architecture/ppc/math.h;
  bypass    = "powl";
  bypass    = "powl";
  replace = <<- _EndOfHeader_
  replace = <<- _EndOfHeader_
        /* This file prototypes the long double functions available on Mac OS
        /* This file prototypes the long double functions available on Mac OS
           10.3.9.  */
           10.3.9.  */
        #ifndef __MATH__
        #ifndef __MATH__
        # undef __APPLE_CC__
        # undef __APPLE_CC__
        # define __APPLE_CC__  1345
        # define __APPLE_CC__  1345
        # include_next 
        # include_next 
        # undef __APPLE_CC__
        # undef __APPLE_CC__
        # define __APPLE_CC__ 1
        # define __APPLE_CC__ 1
        # ifndef __LIBMLDBL_COMPAT
        # ifndef __LIBMLDBL_COMPAT
        #  ifdef __LONG_DOUBLE_128__
        #  ifdef __LONG_DOUBLE_128__
        #   define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128")
        #   define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128")
        #  else
        #  else
        #   define __LIBMLDBL_COMPAT(sym)
        #   define __LIBMLDBL_COMPAT(sym)
        #  endif /* __LONG_DOUBLE_128__ */
        #  endif /* __LONG_DOUBLE_128__ */
        # endif /* __LIBMLDBL_COMPAT */
        # endif /* __LIBMLDBL_COMPAT */
        # ifdef __cplusplus
        # ifdef __cplusplus
           extern "C" {
           extern "C" {
        # endif
        # endif
          extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);
          extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);
          extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);
          extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);
          extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);
          extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);
          extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);
          extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);
          extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);
          extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);
          extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);
          extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);
          extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);
          extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);
          extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);
          extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);
          extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);
          extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);
          extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);
          extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);
          extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);
          extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);
          extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);
          extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);
          extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);
          extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);
          extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);
          extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);
          extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);
          extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);
          extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);
          extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);
          extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);
          extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);
          extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);
          extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);
          extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);
          extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);
          extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);
          extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);
          extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);
          extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);
          extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);
          extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);
          extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);
          extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);
          extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);
          extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);
          extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);
          extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);
          extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);
          extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);
          extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);
          extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);
          extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);
          extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);
          extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);
          extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);
          extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl);
          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 powl( long double, long double ) __LIBMLDBL_COMPAT(powl);
          extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);
          extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);
          extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);
          extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);
          extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);
          extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);
          extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);
          extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);
          extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);
          extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);
          extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);
          extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);
          extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);
          extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);
          extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);
          extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);
          extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);
          extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);
          extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);
          extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);
          extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);
          extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);
          extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);
          extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);
          extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);
          extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);
          extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);
          extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);
          extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);
          extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);
          extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl);
          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 remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl);
          extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol);
          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 copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl);
          extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);
          extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);
          extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl);
          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 nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl);
          extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml);
          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 fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl);
          extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);
          extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);
          extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);
          extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);
        # ifdef __cplusplus
        # ifdef __cplusplus
           }
           }
        # endif
        # endif
        #endif /* __MATH__ */
        #endif /* __MATH__ */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  ... and for the previous fix to be useful, you have to not use ""
 *  ... and for the previous fix to be useful, you have to not use ""
 *  includes.
 *  includes.
 */
 */
fix = {
fix = {
  hackname  = AAB_darwin7_9_long_double_funcs_2;
  hackname  = AAB_darwin7_9_long_double_funcs_2;
  mach      = "*-*-darwin7.9*";
  mach      = "*-*-darwin7.9*";
  files     = math.h;
  files     = math.h;
  select    = '#include[ \t]+\"';
  select    = '#include[ \t]+\"';
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "%1<%2.h>";
  c_fix_arg = "%1<%2.h>";
  c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
  c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
  test_text = '#include "architecture/ppc/math.h"';
  test_text = '#include "architecture/ppc/math.h"';
};
};
/*
/*
 *  This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
 *  This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_asm_posix_types_h;
    hackname = AAB_fd_zero_asm_posix_types_h;
    files    = asm/posix_types.h;
    files    = asm/posix_types.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    bypass   = '} while';
    bypass   = '} while';
    bypass   = 'x86_64';
    bypass   = 'x86_64';
    bypass   = 'posix_types_64';
    bypass   = 'posix_types_64';
    /*
    /*
     * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
     * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro
        /* This file fixes a bug in the __FD_ZERO macro
           for older versions of the Linux kernel. */
           for older versions of the Linux kernel. */
        #ifndef _POSIX_TYPES_H_WRAPPER
        #ifndef _POSIX_TYPES_H_WRAPPER
        #include 
        #include 
         #include_next 
         #include_next 
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #undef __FD_ZERO
        #undef __FD_ZERO
        #define __FD_ZERO(fdsetp) \
        #define __FD_ZERO(fdsetp) \
          do { \
          do { \
            int __d0, __d1; \
            int __d0, __d1; \
                __asm__ __volatile__("cld ; rep ; stosl" \
                __asm__ __volatile__("cld ; rep ; stosl" \
                        : "=&c" (__d0), "=&D" (__d1) \
                        : "=&c" (__d0), "=&D" (__d1) \
                        : "a" (0), "0" (__FDSET_LONGS), \
                        : "a" (0), "0" (__FDSET_LONGS), \
                          "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
                          "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
          } while (0)
          } while (0)
        #endif
        #endif
        #define _POSIX_TYPES_H_WRAPPER
        #define _POSIX_TYPES_H_WRAPPER
        #endif /* _POSIX_TYPES_H_WRAPPER */
        #endif /* _POSIX_TYPES_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  This fixes __FD_ZERO bug for glibc-1.x
 *  This fixes __FD_ZERO bug for glibc-1.x
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_gnu_types_h;
    hackname = AAB_fd_zero_gnu_types_h;
    files    = gnu/types.h;
    files    = gnu/types.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    /*
    /*
     * Define _TYPES_H_WRAPPER at the end of the wrapper, not
     * Define _TYPES_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */
        #ifndef _TYPES_H_WRAPPER
        #ifndef _TYPES_H_WRAPPER
        #include 
        #include 
        #include_next 
        #include_next 
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #undef __FD_ZERO
        #undef __FD_ZERO
        # define __FD_ZERO(fdsetp) \
        # define __FD_ZERO(fdsetp) \
          do { \
          do { \
            int __d0, __d1; \
            int __d0, __d1; \
                __asm__ __volatile__("cld ; rep ; stosl" \
                __asm__ __volatile__("cld ; rep ; stosl" \
                : "=&c" (__d0), "=&D" (__d1) \
                : "=&c" (__d0), "=&D" (__d1) \
                : "a" (0), "0" (__FDSET_LONGS), \
                : "a" (0), "0" (__FDSET_LONGS), \
                  "1" ((__fd_set *) (fdsetp)) :"memory"); \
                  "1" ((__fd_set *) (fdsetp)) :"memory"); \
          } while (0)
          } while (0)
        #endif
        #endif
        #define _TYPES_H_WRAPPER
        #define _TYPES_H_WRAPPER
        #endif /* _TYPES_H_WRAPPER */
        #endif /* _TYPES_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  This fixes __FD_ZERO bug for glibc-2.0.x
 *  This fixes __FD_ZERO bug for glibc-2.0.x
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_selectbits_h;
    hackname = AAB_fd_zero_selectbits_h;
    files    = selectbits.h;
    files    = selectbits.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    /*
    /*
     * Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
     * Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */
        #ifndef _SELECTBITS_H_WRAPPER
        #ifndef _SELECTBITS_H_WRAPPER
          #include 
          #include 
          #include_next 
          #include_next 
          #if defined(__FD_ZERO) && defined(__GLIBC__) \\
          #if defined(__FD_ZERO) && defined(__GLIBC__) \\
          && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\
          && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\
          && __GLIBC_MINOR__ == 0
          && __GLIBC_MINOR__ == 0
             #undef __FD_ZERO
             #undef __FD_ZERO
             #define __FD_ZERO(fdsetp) \\
             #define __FD_ZERO(fdsetp) \\
             do { \\
             do { \\
                int __d0, __d1; \\
                int __d0, __d1; \\
              __asm__ __volatile__ ("cld; rep; stosl" \\
              __asm__ __volatile__ ("cld; rep; stosl" \\
                        : "=&c" (__d0), "=&D" (__d1) \\
                        : "=&c" (__d0), "=&D" (__d1) \\
                        : "a" (0), "0" (sizeof (__fd_set) \\
                        : "a" (0), "0" (sizeof (__fd_set) \\
                                        / sizeof (__fd_mask)), \\
                                        / sizeof (__fd_mask)), \\
                          "1" ((__fd_mask *) (fdsetp)) \\
                          "1" ((__fd_mask *) (fdsetp)) \\
                        : "memory"); \\
                        : "memory"); \\
              } while (0)
              } while (0)
          #endif
          #endif
          #define _SELECTBITS_H_WRAPPER
          #define _SELECTBITS_H_WRAPPER
        #endif /* _SELECTBITS_H_WRAPPER */
        #endif /* _SELECTBITS_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 * Solaris  is a DDK (aka kernel-land) header providing
 * Solaris  is a DDK (aka kernel-land) header providing
 * the same interface as .  No idea why they couldn't have just
 * the same interface as .  No idea why they couldn't have just
 * used the standard header.
 * used the standard header.
 */
 */
fix = {
fix = {
    hackname = AAB_solaris_sys_varargs_h;
    hackname = AAB_solaris_sys_varargs_h;
    files    = "sys/varargs.h";
    files    = "sys/varargs.h";
    mach     = '*-*-solaris*';
    mach     = '*-*-solaris*';
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifdef __STDC__
        #ifdef __STDC__
          #include 
          #include 
        #else
        #else
          #include 
          #include 
        #endif
        #endif
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
 *  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
 *  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.
 *  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.
 *  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 also on sysV68 R3V7.1 (head/memory.h\t50.1\t )
 */
 */
fix = {
fix = {
    hackname = AAB_sun_memcpy;
    hackname = AAB_sun_memcpy;
    files    = memory.h;
    files    = memory.h;
    select   = "/\\*\t@\\(#\\)"
    select   = "/\\*\t@\\(#\\)"
             "(head/memory.h\t50.1\t "
             "(head/memory.h\t50.1\t "
             "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
             "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
    replace = <<-  _EndOfHeader_
    replace = <<-  _EndOfHeader_
        /* This file was generated by fixincludes */
        /* This file was generated by fixincludes */
        #ifndef __memory_h__
        #ifndef __memory_h__
          #define __memory_h__
          #define __memory_h__
          #ifdef __STDC__
          #ifdef __STDC__
            extern void *memccpy();
            extern void *memccpy();
            extern void *memchr();
            extern void *memchr();
            extern void *memcpy();
            extern void *memcpy();
            extern void *memset();
            extern void *memset();
          #else
          #else
            extern char *memccpy();
            extern char *memccpy();
            extern char *memchr();
            extern char *memchr();
            extern char *memcpy();
            extern char *memcpy();
            extern char *memset();
            extern char *memset();
          #endif /* __STDC__ */
          #endif /* __STDC__ */
          extern int memcmp();
          extern int memcmp();
        #endif /* __memory_h__ */
        #endif /* __memory_h__ */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 * complex.h on AIX 5 and AIX 6 define _Complex_I and I in terms of __I,
 * 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.
 * which only is provided by AIX xlc C99.
 */
 */
fix = {
fix = {
    hackname  = aix_complex;
    hackname  = aix_complex;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = complex.h;
    files     = complex.h;
    select    = "#define[ \t]_Complex_I[ \t]__I";
    select    = "#define[ \t]_Complex_I[ \t]__I";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
    c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
    test_text = "#define _Complex_I     __I\n";
    test_text = "#define _Complex_I     __I\n";
};
};
/*
/*
 *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
 *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
 *  which violates a requirement of ISO C.
 *  which violates a requirement of ISO C.
 */
 */
fix = {
fix = {
    hackname  = aix_pthread;
    hackname  = aix_pthread;
    files     = "pthread.h";
    files     = "pthread.h";
    select    = "(#define [A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])";
    select    = "(#define [A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 %2";
    c_fix_arg = "%1 %2";
    test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n"
    test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n"
                "{...init stuff...}";
                "{...init stuff...}";
};
};
/*
/*
 *  AIX stdint.h fixes.
 *  AIX stdint.h fixes.
 */
 */
fix = {
fix = {
    hackname  = aix_stdint_1;
    hackname  = aix_stdint_1;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = stdint-aix.h, stdint.h;
    files     = stdint-aix.h, stdint.h;
    select    = "#define[ \t]UINT8_MAX[ \t]\\(255U\\)\n"
    select    = "#define[ \t]UINT8_MAX[ \t]\\(255U\\)\n"
                "#define[ \t]UINT16_MAX[ \t]\\(65535U\\)";
                "#define[ \t]UINT16_MAX[ \t]\\(65535U\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define UINT8_MAX      (255)\n"
    c_fix_arg = "#define UINT8_MAX      (255)\n"
                "#define UINT16_MAX     (65535)";
                "#define UINT16_MAX     (65535)";
    test_text = "#define UINT8_MAX      (255U)\n"
    test_text = "#define UINT8_MAX      (255U)\n"
                "#define UINT16_MAX     (65535U)";
                "#define UINT16_MAX     (65535U)";
};
};
fix = {
fix = {
    hackname  = aix_stdint_2;
    hackname  = aix_stdint_2;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = stdint-aix.h, stdint.h;
    files     = stdint-aix.h, stdint.h;
    select    = "#define[ \t]INTPTR_MIN[ \t]INT64_MIN\n"
    select    = "#define[ \t]INTPTR_MIN[ \t]INT64_MIN\n"
                "#define[ \t]INTPTR_MAX[ \t]INT64_MAX\n"
                "#define[ \t]INTPTR_MAX[ \t]INT64_MAX\n"
                "#define[ \t]UINTPTR_MAX[ \t]UINT64_MAX\n"
                "#define[ \t]UINTPTR_MAX[ \t]UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define[ \t]INTPTR_MIN[ \t]INT32_MIN\n"
                "#define[ \t]INTPTR_MIN[ \t]INT32_MIN\n"
                "#define[ \t]INTPTR_MAX[ \t]INT32_MAX\n"
                "#define[ \t]INTPTR_MAX[ \t]INT32_MAX\n"
                "#define[ \t]UINTPTR_MAX[ \t]UINT32_MAX";
                "#define[ \t]UINTPTR_MAX[ \t]UINT32_MAX";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define INTPTR_MIN     (-INTPTR_MAX-1)\n"
    c_fix_arg = "#define INTPTR_MIN     (-INTPTR_MAX-1)\n"
                "#define INTPTR_MAX     9223372036854775807L\n"
                "#define INTPTR_MAX     9223372036854775807L\n"
                "#define UINTPTR_MAX    18446744073709551615UL\n"
                "#define UINTPTR_MAX    18446744073709551615UL\n"
                "#else\n"
                "#else\n"
                "#define INTPTR_MIN     (-INTPTR_MAX-1)\n"
                "#define INTPTR_MIN     (-INTPTR_MAX-1)\n"
                "#define INTPTR_MAX     2147483647L\n"
                "#define INTPTR_MAX     2147483647L\n"
                "#define UINTPTR_MAX    4294967295UL";
                "#define UINTPTR_MAX    4294967295UL";
    test_text = "#define INTPTR_MIN     INT64_MIN\n"
    test_text = "#define INTPTR_MIN     INT64_MIN\n"
                "#define INTPTR_MAX     INT64_MAX\n"
                "#define INTPTR_MAX     INT64_MAX\n"
                "#define UINTPTR_MAX    UINT64_MAX\n"
                "#define UINTPTR_MAX    UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define INTPTR_MIN     INT32_MIN\n"
                "#define INTPTR_MIN     INT32_MIN\n"
                "#define INTPTR_MAX     INT32_MAX\n"
                "#define INTPTR_MAX     INT32_MAX\n"
                "#define UINTPTR_MAX    UINT32_MAX";
                "#define UINTPTR_MAX    UINT32_MAX";
};
};
fix = {
fix = {
    hackname  = aix_stdint_3;
    hackname  = aix_stdint_3;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = stdint-aix.h, stdint.h;
    files     = stdint-aix.h, stdint.h;
    select    = "#define[ \t]PTRDIFF_MIN[ \t]INT64_MIN\n"
    select    = "#define[ \t]PTRDIFF_MIN[ \t]INT64_MIN\n"
                "#define[ \t]PTRDIFF_MAX[ \t]INT64_MAX\n"
                "#define[ \t]PTRDIFF_MAX[ \t]INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define[ \t]PTRDIFF_MIN[ \t]*INT32_MIN\n"
                "#define[ \t]PTRDIFF_MIN[ \t]*INT32_MIN\n"
                "#define[ \t]PTRDIFF_MAX[ \t]*INT32_MAX";
                "#define[ \t]PTRDIFF_MAX[ \t]*INT32_MAX";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define PTRDIFF_MIN    (-9223372036854775807L - 1)\n"
    c_fix_arg = "#define PTRDIFF_MIN    (-9223372036854775807L - 1)\n"
                "#define PTRDIFF_MAX    9223372036854775807L\n"
                "#define PTRDIFF_MAX    9223372036854775807L\n"
                "#else\n"
                "#else\n"
                "#define PTRDIFF_MIN    (-2147483647L - 1)\n"
                "#define PTRDIFF_MIN    (-2147483647L - 1)\n"
                "#define PTRDIFF_MAX    2147483647L";
                "#define PTRDIFF_MAX    2147483647L";
    test_text = "#define PTRDIFF_MIN    INT64_MIN\n"
    test_text = "#define PTRDIFF_MIN    INT64_MIN\n"
                "#define PTRDIFF_MAX    INT64_MAX\n"
                "#define PTRDIFF_MAX    INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define PTRDIFF_MIN     INT32_MIN\n"
                "#define PTRDIFF_MIN     INT32_MIN\n"
                "#define PTRDIFF_MAX    INT32_MAX";
                "#define PTRDIFF_MAX    INT32_MAX";
};
};
fix = {
fix = {
    hackname  = aix_stdint_4;
    hackname  = aix_stdint_4;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = stdint-aix.h, stdint.h;
    files     = stdint-aix.h, stdint.h;
    select    = "#define[ \t]SIZE_MAX[ \t]UINT64_MAX\n"
    select    = "#define[ \t]SIZE_MAX[ \t]UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define[ \t]SIZE_MAX[ \t]*UINT32_MAX";
                "#define[ \t]SIZE_MAX[ \t]*UINT32_MAX";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define SIZE_MAX       18446744073709551615UL\n"
    c_fix_arg = "#define SIZE_MAX       18446744073709551615UL\n"
                "#else\n"
                "#else\n"
                "#define SIZE_MAX       4294967295UL";
                "#define SIZE_MAX       4294967295UL";
    test_text = "#define SIZE_MAX       UINT64_MAX\n"
    test_text = "#define SIZE_MAX       UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define SIZE_MAX        UINT32_MAX";
                "#define SIZE_MAX        UINT32_MAX";
};
};
fix = {
fix = {
    hackname  = aix_stdint_5;
    hackname  = aix_stdint_5;
    mach      = "*-*-aix*";
    mach      = "*-*-aix*";
    files     = stdint-aix.h, stdint.h;
    files     = stdint-aix.h, stdint.h;
    select    = "#define[ \t]UINT8_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)\n"
    select    = "#define[ \t]UINT8_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)\n"
                "#define[ \t]UINT16_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)";
                "#define[ \t]UINT16_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define UINT8_C(c)     c\n"
    c_fix_arg = "#define UINT8_C(c)     c\n"
                "#define UINT16_C(c)    c";
                "#define UINT16_C(c)    c";
    test_text = "#define UINT8_C(c)     __CONCAT__(c,U)\n"
    test_text = "#define UINT8_C(c)     __CONCAT__(c,U)\n"
                "#define UINT16_C(c)    __CONCAT__(c,U)";
                "#define UINT16_C(c)    __CONCAT__(c,U)";
};
};
/*
/*
 *  sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline
 *  sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline
 *  in an otherwise harmless (and #ifed out) macro definition
 *  in an otherwise harmless (and #ifed out) macro definition
 */
 */
fix = {
fix = {
    hackname  = aix_sysmachine;
    hackname  = aix_sysmachine;
    files     = sys/machine.h;
    files     = sys/machine.h;
    select    = "\\\\ +\n";
    select    = "\\\\ +\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "\\\n";
    c_fix_arg = "\\\n";
    test_text = "#define FOO \\\n"
    test_text = "#define FOO \\\n"
    " bar \\ \n baz \\ \n bat";
    " bar \\ \n baz \\ \n bat";
};
};
/*
/*
 *  sys/wait.h on AIX 5.2 defines macros that have both signed and
 *  sys/wait.h on AIX 5.2 defines macros that have both signed and
 *  unsigned types in conditional expressions.
 *  unsigned types in conditional expressions.
 */
 */
fix = {
fix = {
    hackname  = aix_syswait_2;
    hackname  = aix_syswait_2;
    files     = sys/wait.h;
    files     = sys/wait.h;
    select    = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
    select    = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "? (int)%1";
    c_fix_arg = "? (int)%1";
    test_text = "#define WSTOPSIG(__x)    (int)(WIFSTOPPED(__x) ? ((((unsigned int)__x) >> 8) & 0xff) : -1)";
    test_text = "#define WSTOPSIG(__x)    (int)(WIFSTOPPED(__x) ? ((((unsigned int)__x) >> 8) & 0xff) : -1)";
};
};
/*
/*
 *  sys/signal.h on some versions of AIX uses volatile in the typedef of
 *  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
 *  sig_atomic_t, which causes gcc to generate a warning about duplicate
 *  volatile when a sig_atomic_t variable is declared volatile, as
 *  volatile when a sig_atomic_t variable is declared volatile, as
 *  required by ANSI C.
 *  required by ANSI C.
 */
 */
fix = {
fix = {
    hackname  = aix_volatile;
    hackname  = aix_volatile;
    files     = sys/signal.h;
    files     = sys/signal.h;
    select    = "typedef volatile int sig_atomic_t";
    select    = "typedef volatile int sig_atomic_t";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "typedef int sig_atomic_t";
    c_fix_arg = "typedef int sig_atomic_t";
    test_text = "typedef volatile int sig_atomic_t;";
    test_text = "typedef volatile int sig_atomic_t;";
};
};
/*
/*
 *  Fix __assert declaration in assert.h on Alpha OSF/1.
 *  Fix __assert declaration in assert.h on Alpha OSF/1.
 */
 */
fix = {
fix = {
    hackname  = alpha___assert;
    hackname  = alpha___assert;
    files     = "assert.h";
    files     = "assert.h";
    select    = '__assert\(char \*, char \*, int\)';
    select    = '__assert\(char \*, char \*, int\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__assert(const char *, const char *, int)";
    c_fix_arg = "__assert(const char *, const char *, int)";
    test_text = 'extern void __assert(char *, char *, int);';
    test_text = 'extern void __assert(char *, char *, int);';
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers.
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers.
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix;
    hackname  = alpha___extern_prefix;
    select    = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n"
    select    = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n"
                "(#[ \t]*pragma[ \t]*extern_prefix.*)";
                "(#[ \t]*pragma[ \t]*extern_prefix.*)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3";
    c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3";
    test_text = "#ifdef  __DECC\n"
    test_text = "#ifdef  __DECC\n"
                "#pragma extern_prefix \"_P\"\n"
                "#pragma extern_prefix \"_P\"\n"
                "#   if defined(__DECC)\n"
                "#   if defined(__DECC)\n"
                "#     pragma extern_prefix \"_E\"\n"
                "#     pragma extern_prefix \"_E\"\n"
                "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n"
                "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n"
                "#  pragma extern_prefix \"\"";
                "#  pragma extern_prefix \"\"";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 .
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 .
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix_standards;
    hackname  = alpha___extern_prefix_standards;
    files     = standards.h;
    files     = standards.h;
    select    = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
    select    = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)";
    c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)";
    test_text = "#if (_ISO_C_SOURCE>=19990L) "
    test_text = "#if (_ISO_C_SOURCE>=19990L) "
                "&& !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)";
                "&& !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5  and
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5  and
 *  .  The tests for __DECC are special in various ways, so
 *  .  The tests for __DECC are special in various ways, so
 *  alpha__extern_prefix cannot be used.
 *  alpha__extern_prefix cannot be used.
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix_sys_stat;
    hackname  = alpha___extern_prefix_sys_stat;
    files     = sys/stat.h;
    files     = sys/stat.h;
    files     = sys/mount.h;
    files     = sys/mount.h;
    select    = "#[ \t]*if[ \t]*defined\\(__DECC\\)";
    select    = "#[ \t]*if[ \t]*defined\\(__DECC\\)";
    mach      = "alpha*-dec-osf5*";
    mach      = "alpha*-dec-osf5*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)";
    c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)";
    test_text = "#   if defined(__DECC)";
    test_text = "#   if defined(__DECC)";
};
};
/*
/*
 *  Fix assert macro in assert.h on Alpha OSF/1.
 *  Fix assert macro in assert.h on Alpha OSF/1.
 *  The superfluous int cast breaks C++.
 *  The superfluous int cast breaks C++.
 */
 */
fix = {
fix = {
    hackname  = alpha_assert;
    hackname  = alpha_assert;
    files     = "assert.h";
    files     = "assert.h";
    select    = "(#[ \t]*" 'define assert\(EX\).*)\(\(int\) \(EX\)\)';
    select    = "(#[ \t]*" 'define assert\(EX\).*)\(\(int\) \(EX\)\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1(EX)";
    c_fix_arg = "%1(EX)";
    test_text = '#define assert(EX) (((int) (EX)) ? (void)0 '
    test_text = '#define assert(EX) (((int) (EX)) ? (void)0 '
                ': __assert(#EX, __FILE__, __LINE__))';
                ': __assert(#EX, __FILE__, __LINE__))';
};
};
/*
/*
 *  Fix #defines under Alpha OSF/1:
 *  Fix #defines under Alpha OSF/1:
 *  The following files contain '#pragma extern_prefix "_FOO"' followed by
 *  The following files contain '#pragma extern_prefix "_FOO"' followed by
 *  a '#define something(x,y,z) _FOOsomething(x,y,z)'.  The intent of these
 *  a '#define something(x,y,z) _FOOsomething(x,y,z)'.  The intent of these
 *  statements is to reduce namespace pollution.  While these macros work
 *  statements is to reduce namespace pollution.  While these macros work
 *  properly in most cases, they don't allow you to take a pointer to the
 *  properly in most cases, they don't allow you to take a pointer to the
 *  "something" being modified.  To get around this limitation, change these
 *  "something" being modified.  To get around this limitation, change these
 *  statements to be of the form '#define something _FOOsomething'.
 *  statements to be of the form '#define something _FOOsomething'.
 *
 *
 *  sed ain't egrep, lesson 2463:  sed can use self-referential
 *  sed ain't egrep, lesson 2463:  sed can use self-referential
 *  regular expressions.  In the substitute expression below,
 *  regular expressions.  In the substitute expression below,
 *  "\\1" and "\\2" refer to subexpressions found earlier in the
 *  "\\1" and "\\2" refer to subexpressions found earlier in the
 *  same match.  So, we continue to use sed.  "extern_prefix" will
 *  same match.  So, we continue to use sed.  "extern_prefix" will
 *  be a rare match anyway...
 *  be a rare match anyway...
 */
 */
fix = {
fix = {
    hackname = alpha_bad_lval;
    hackname = alpha_bad_lval;
    select   = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
    select   = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    sed      =
    sed      =
        "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
        "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
               "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
               "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
    test_text = '#pragma extern_prefix "_FOO"'"\n"
    test_text = '#pragma extern_prefix "_FOO"'"\n"
                "#define something(x,y,z) _FOOsomething(x,y,z)\n"
                "#define something(x,y,z) _FOOsomething(x,y,z)\n"
                "#define mumble _FOOmumble";
                "#define mumble _FOOmumble";
};
};
/*
/*
 *  Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
 *  Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
 */
 */
fix = {
fix = {
    hackname  = alpha_getopt;
    hackname  = alpha_getopt;
    files     = "stdio.h";
    files     = "stdio.h";
    files     = "stdlib.h";
    files     = "stdlib.h";
    select    = 'getopt\(int, char \*\[\], *char \*\)';
    select    = 'getopt\(int, char \*\[\], *char \*\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "getopt(int, char *const[], const char *)";
    c_fix_arg = "getopt(int, char *const[], const char *)";
    test_text = 'extern int getopt(int, char *[], char *);';
    test_text = 'extern int getopt(int, char *[], char *);';
};
};
/*
/*
 *  Fix missing semicolon on Alpha OSF/4 in 
 *  Fix missing semicolon on Alpha OSF/4 in 
 */
 */
fix = {
fix = {
    hackname  = alpha_if_semicolon;
    hackname  = alpha_if_semicolon;
    files     = net/if.h;
    files     = net/if.h;
    select    = "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*";
    select    = "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct sockaddr vmif_paddr;\t/*";
    c_fix_arg = "struct sockaddr vmif_paddr;\t/*";
    test_text = '     struct  sockaddr vmif_paddr     /* protocol address */';
    test_text = '     struct  sockaddr vmif_paddr     /* protocol address */';
};
};
/*
/*
 * Remove erroneous parentheses in sym.h on Alpha OSF/1.
 * Remove erroneous parentheses in sym.h on Alpha OSF/1.
 */
 */
fix = {
fix = {
    hackname  = alpha_parens;
    hackname  = alpha_parens;
    files     = sym.h;
    files     = sym.h;
    select    = '#ifndef\(__mips64\)';
    select    = '#ifndef\(__mips64\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __mips64";
    c_fix_arg = "#ifndef __mips64";
    test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif";
    test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX .
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX .
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread;
    hackname  = alpha_pthread;
    files     = pthread.h;
    files     = pthread.h;
    select    = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)"
    select    = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)"
                "|def _PTHREAD_ENV_DECC)(.*))\n"
                "|def _PTHREAD_ENV_DECC)(.*))\n"
                "(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
                "(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%2 defined (_PTHREAD_ENV_DECC)%4 "
    c_fix_arg = "%2 defined (_PTHREAD_ENV_DECC)%4 "
                "|| defined (__PRAGMA_EXTERN_PREFIX)\n%5";
                "|| defined (__PRAGMA_EXTERN_PREFIX)\n%5";
    test_text = "#  if defined (_PTHREAD_ENV_DECC) "
    test_text = "#  if defined (_PTHREAD_ENV_DECC) "
                      "|| defined (_PTHREAD_ENV_EPCC)\n"
                      "|| defined (_PTHREAD_ENV_EPCC)\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#  endif\n"
                "#  endif\n"
                "#  ifdef _PTHREAD_ENV_DECC\n"
                "#  ifdef _PTHREAD_ENV_DECC\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#  endif";
                "#  endif";
};
};
/*
/*
 *  Recognize GCC in Tru64 UNIX V5.1B .
 *  Recognize GCC in Tru64 UNIX V5.1B .
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread_gcc;
    hackname  = alpha_pthread_gcc;
    files     = pthread.h;
    files     = pthread.h;
    select    = "#else\n# error : unrecognized compiler.";
    select    = "#else\n# error : unrecognized compiler.";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#elif defined (__GNUC__)\n"
    c_fix_arg = "#elif defined (__GNUC__)\n"
                "# define _PTHREAD_ENV_GCC\n"
                "# define _PTHREAD_ENV_GCC\n"
                "%0";
                "%0";
    test_text = "# define _PTHREAD_ENV_INTELC\n"
    test_text = "# define _PTHREAD_ENV_INTELC\n"
                "#else\n"
                "#else\n"
                "# error : unrecognized compiler.\n"
                "# error : unrecognized compiler.\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Compaq Tru64 v5.1 defines all of its PTHREAD_*_INITIALIZER macros
 * Compaq Tru64 v5.1 defines all of its PTHREAD_*_INITIALIZER macros
 * incorrectly, specifying less fields in the initializers than are
 * incorrectly, specifying less fields in the initializers than are
 * defined in the corresponding structure types.  Use of these macros
 * defined in the corresponding structure types.  Use of these macros
 * in user code results in spurious warnings.
 * in user code results in spurious warnings.
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread_init;
    hackname  = alpha_pthread_init;
    files     = pthread.h;
    files     = pthread.h;
    select    = ' \* @\(#\).RCSfile: pthread\.h,v \$'
    select    = ' \* @\(#\).RCSfile: pthread\.h,v \$'
                ' .Revision: 1\.1\.33\.21 \$ \(DEC\)'
                ' .Revision: 1\.1\.33\.21 \$ \(DEC\)'
                ' .Date: 2000/08/15 15:30:13 \$';
                ' .Date: 2000/08/15 15:30:13 \$';
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    sed       = "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n"
    sed       = "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n"
                "s@MVALID\\(.*\\)_}@MVALID\\1_, 0, 0, 0, 0 }@\n"
                "s@MVALID\\(.*\\)_}@MVALID\\1_, 0, 0, 0, 0 }@\n"
                "s@CVALID\\(.*\\)A}@CVALID\\1A, 0, 0, 0, 0 }@\n"
                "s@CVALID\\(.*\\)A}@CVALID\\1A, 0, 0, 0, 0 }@\n"
                "s@CVALID\\(.*\\)_}@CVALID\\1_, 0, 0 }@\n"
                "s@CVALID\\(.*\\)_}@CVALID\\1_, 0, 0 }@\n"
                "s@WVALID\\(.*\\)A}@WVALID\\1A, 0, 0, 0, 0, 0, 0, 0, 0, 0 }@\n"
                "s@WVALID\\(.*\\)A}@WVALID\\1A, 0, 0, 0, 0, 0, 0, 0, 0, 0 }@\n"
                "s@WVALID\\(.*\\)_}@WVALID\\1_, 0, 0, 0, 0, 0, 0, 0 }@\n";
                "s@WVALID\\(.*\\)_}@WVALID\\1_, 0, 0, 0, 0, 0, 0, 0 }@\n";
    test_text = <<- _EOText_
    test_text = <<- _EOText_
        /*
        /*
         * @(#)_RCSfile: pthread.h,v $ _Revision: 1.1.33.21 $ (DEC) _Date: 2000/08/15 15:30:13 $
         * @(#)_RCSfile: pthread.h,v $ _Revision: 1.1.33.21 $ (DEC) _Date: 2000/08/15 15:30:13 $
         */
         */
        #ifndef _PTHREAD_NOMETER_STATIC
        #ifndef _PTHREAD_NOMETER_STATIC
        # define PTHREAD_MUTEX_INITIALIZER \
        # define PTHREAD_MUTEX_INITIALIZER \
            {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA}
            {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA}
        # define PTHREAD_COND_INITIALIZER \
        # define PTHREAD_COND_INITIALIZER \
            {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA}
            {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA}
        # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \
        # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \
            {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}
            {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}
        # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \
        # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \
            {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}
            {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}
        #else
        #else
        # define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA}
        # define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA}
        # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \
        # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \
            {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}
            {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}
        # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \
        # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \
            {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}
            {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}
        #endif
        #endif
        #define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA}
        #define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA}
        #define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) \
        #define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) \
                {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_}
                {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_}
        _EOText_;
        _EOText_;
};
};
/*
/*
 *  Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
 *  Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
 *  And OpenBSD.
 *  And OpenBSD.
 */
 */
fix = {
fix = {
    hackname = alpha_sbrk;
    hackname = alpha_sbrk;
    files    = unistd.h;
    files    = unistd.h;
    select   = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
    select   = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void *sbrk(";
    c_fix_arg = "void *sbrk(";
    test_text = "extern char* sbrk(ptrdiff_t increment);";
    test_text = "extern char* sbrk(ptrdiff_t increment);";
};
};
/*
/*
 *  Change external names of wcstok/wcsftime via asm instead of macros on
 *  Change external names of wcstok/wcsftime via asm instead of macros on
 *  Tru64 UNIX V4.0.
 *  Tru64 UNIX V4.0.
 */
 */
fix = {
fix = {
    hackname = alpha_wchar;
    hackname = alpha_wchar;
    files    = wchar.h;
    files    = wchar.h;
    mach     = "alpha*-dec-osf4*";
    mach     = "alpha*-dec-osf4*";
    select   = "#define wcstok wcstok_r";
    select   = "#define wcstok wcstok_r";
    sed      = "s@#define wcstok wcstok_r@"
    sed      = "s@#define wcstok wcstok_r@"
                "extern wchar_t *wcstok __((wchar_t *, const wchar_t *, "
                "extern wchar_t *wcstok __((wchar_t *, const wchar_t *, "
                          "wchar_t **)) __asm__(\"wcstok_r\");@";
                          "wchar_t **)) __asm__(\"wcstok_r\");@";
    sed      = "s@#define wcsftime __wcsftime_isoc@"
    sed      = "s@#define wcsftime __wcsftime_isoc@"
                "extern size_t   wcsftime __((wchar_t *, size_t, const wchar_t *"
                "extern size_t   wcsftime __((wchar_t *, size_t, const wchar_t *"
                          ", const struct tm *)) __asm__(\"__wcsftime_isoc\");@";
                          ", const struct tm *)) __asm__(\"__wcsftime_isoc\");@";
    test_text = "#define wcstok wcstok_r\n"
    test_text = "#define wcstok wcstok_r\n"
                "#define wcsftime __wcsftime_isoc";
                "#define wcsftime __wcsftime_isoc";
};
};
/*
/*
 *  For C++, avoid any typedef or macro definition of bool,
 *  For C++, avoid any typedef or macro definition of bool,
 *  and use the built in type instead.
 *  and use the built in type instead.
 *  HP/UX 10.20 also has it in curses_colr/curses.h.
 *  HP/UX 10.20 also has it in curses_colr/curses.h.
 */
 */
fix = {
fix = {
    hackname  = avoid_bool_define;
    hackname  = avoid_bool_define;
    files     = curses.h;
    files     = curses.h;
    files     = curses_colr/curses.h;
    files     = curses_colr/curses.h;
    files     = term.h;
    files     = term.h;
    files     = tinfo.h;
    files     = tinfo.h;
    select    = "#[ \t]*define[ \t]+bool[ \t]";
    select    = "#[ \t]*define[ \t]+bool[ \t]";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*";
    c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*";
    test_text = "# define bool\t char \n";
    test_text = "# define bool\t char \n";
};
};
fix = {
fix = {
    hackname = avoid_bool_type;
    hackname = avoid_bool_type;
    files    = curses.h;
    files    = curses.h;
    files    = curses_colr/curses.h;
    files    = curses_colr/curses.h;
    files    = term.h;
    files    = term.h;
    files    = tinfo.h;
    files    = tinfo.h;
    select    = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;";
    select    = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text = "typedef unsigned int\tbool \t; /* bool\n type */";
    test_text = "typedef unsigned int\tbool \t; /* bool\n type */";
};
};
/*
/*
 *  For C++, avoid any typedef definition of wchar_t,
 *  For C++, avoid any typedef definition of wchar_t,
 *  and use the built in type instead.
 *  and use the built in type instead.
 *  Don't do this for headers that are smart enough to do the right
 *  Don't do this for headers that are smart enough to do the right
 *  thing (recent [n]curses.h and Xlib.h).
 *  thing (recent [n]curses.h and Xlib.h).
 *  Don't do it for  which is never used from C++ anyway,
 *  Don't do it for  which is never used from C++ anyway,
 *  and will be broken by the edit.
 *  and will be broken by the edit.
 */
 */
fix = {
fix = {
    hackname = avoid_wchar_t_type;
    hackname = avoid_wchar_t_type;
    select    = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;";
    select    = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    bypass    = "_LINUX_NLS_H";
    bypass    = "_LINUX_NLS_H";
    bypass    = "XFree86: xc/lib/X11/Xlib\\.h";
    bypass    = "XFree86: xc/lib/X11/Xlib\\.h";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */";
    test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */";
};
};
/*
/*
 *  Fix `typedef struct term;' on hppa1.1-hp-hpux9.
 *  Fix `typedef struct term;' on hppa1.1-hp-hpux9.
 */
 */
fix = {
fix = {
    hackname  = bad_struct_term;
    hackname  = bad_struct_term;
    files     = curses.h;
    files     = curses.h;
    select    = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
    select    = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct term;";
    c_fix_arg = "struct term;";
    test_text = 'typedef struct term;';
    test_text = 'typedef struct term;';
};
};
/*
/*
 *  Fix one other error in this file:
 *  Fix one other error in this file:
 *  a mismatched quote not inside a C comment.
 *  a mismatched quote not inside a C comment.
 */
 */
fix = {
fix = {
    hackname  = badquote;
    hackname  = badquote;
    files     = sundev/vuid_event.h;
    files     = sundev/vuid_event.h;
    select    = "doesn't";
    select    = "doesn't";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "does not";
    c_fix_arg = "does not";
    test_text = "/* doesn't have matched single quotes */";
    test_text = "/* doesn't have matched single quotes */";
};
};
/*
/*
 *  check for broken assert.h that needs stdio.h
 *  check for broken assert.h that needs stdio.h
 */
 */
fix = {
fix = {
    hackname  = broken_assert_stdio;
    hackname  = broken_assert_stdio;
    files     = assert.h;
    files     = assert.h;
    select    = stderr;
    select    = stderr;
    bypass    = "include.*stdio\\.h";
    bypass    = "include.*stdio\\.h";
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#include \n";
    c_fix_arg = "#include \n";
    test_text = "extern FILE* stderr;";
    test_text = "extern FILE* stderr;";
};
};
/*
/*
 *  check for broken assert.h that needs stdlib.h
 *  check for broken assert.h that needs stdlib.h
 */
 */
fix = {
fix = {
    hackname  = broken_assert_stdlib;
    hackname  = broken_assert_stdlib;
    files     = assert.h;
    files     = assert.h;
    select    = 'exit *\(|abort *\(';
    select    = 'exit *\(|abort *\(';
    bypass    = "include.*stdlib\\.h";
    bypass    = "include.*stdlib\\.h";
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#include \n"
                "#include \n"
                "#endif\n";
                "#endif\n";
    test_text = "extern void exit ( int );";
    test_text = "extern void exit ( int );";
};
};
/*
/*
 *  Remove `extern double cabs' declarations from math.h.
 *  Remove `extern double cabs' declarations from math.h.
 *  This conflicts with C99.  Discovered on AIX.
 *  This conflicts with C99.  Discovered on AIX.
 *  IRIX 5 and IRIX 6 before 6.5.18 (where C99 support was introduced)
 *  IRIX 5 and IRIX 6 before 6.5.18 (where C99 support was introduced)
 *  declares cabs() to take a struct __cabs_s argument.
 *  declares cabs() to take a struct __cabs_s argument.
 *  SunOS4 has its cabs() declaration followed by a comment which
 *  SunOS4 has its cabs() declaration followed by a comment which
 *  terminates on the following line.
 *  terminates on the following line.
 *  Darwin hides its broken cabs in architecture-specific subdirs.
 *  Darwin hides its broken cabs in architecture-specific subdirs.
 */
 */
fix = {
fix = {
    hackname = broken_cabs;
    hackname = broken_cabs;
    files    = math.h, "architecture/*/math.h";
    files    = math.h, "architecture/*/math.h";
    select   = "^extern[ \t]+double[ \t]+cabs";
    select   = "^extern[ \t]+double[ \t]+cabs";
    sed       = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//";
    test_text = "#ifdef __STDC__\n"
    test_text = "#ifdef __STDC__\n"
                "extern     double   cabs(struct dbl_hypot);\n"
                "extern     double   cabs(struct dbl_hypot);\n"
                "#else\n"
                "#else\n"
                "extern     double   cabs();\n"
                "extern     double   cabs();\n"
                "#endif\n"
                "#endif\n"
                "extern double cabs ( _Complex z );\n"
                "extern double cabs ( _Complex z );\n"
                "extern double cabs(); /* This is a comment\n"
                "extern double cabs(); /* This is a comment\n"
                "                         and it ends here. */\n"
                "                         and it ends here. */\n"
                "extern double  cabs(struct __cabs_s);\n"
                "extern double  cabs(struct __cabs_s);\n"
                "extern long double cabsl( struct __cabsl_s );";
                "extern long double cabsl( struct __cabsl_s );";
};
};
/*
/*
 * Fixup Darwin's broken check for __builtin_nanf.
 * Fixup Darwin's broken check for __builtin_nanf.
 */
 */
fix = {
fix = {
    hackname  = broken_nan;
    hackname  = broken_nan;
    /*
    /*
     *  It is tempting to omit the first "files" entry.  Do not.
     *  It is tempting to omit the first "files" entry.  Do not.
     *  The testing machinery will take the first "files" entry as the name
     *  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
     *  of a test file to play with.  It would be a nuisance to have a directory
     *  with the name "*".
     *  with the name "*".
     */
     */
    files     = "architecture/ppc/math.h";
    files     = "architecture/ppc/math.h";
    files     = "architecture/*/math.h";
    files     = "architecture/*/math.h";
    select    = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    select    = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    bypass    = "powl";
    bypass    = "powl";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if 1";
    c_fix_arg = "#if 1";
    test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
};
};
/*
/*
 *  Various systems derived from BSD4.4 contain a macro definition
 *  Various systems derived from BSD4.4 contain a macro definition
 *  for vfscanf that interacts badly with requirements of builtin-attrs.def.
 *  for vfscanf that interacts badly with requirements of builtin-attrs.def.
 *  Known to be fixed in FreeBSD 5 system headers.
 *  Known to be fixed in FreeBSD 5 system headers.
 */
 */
fix = {
fix = {
    hackname  = bsd_stdio_attrs_conflict;
    hackname  = bsd_stdio_attrs_conflict;
    mach      = "*-*-*bsd*";
    mach      = "*-*-*bsd*";
    mach      = "*-*-*darwin*";
    mach      = "*-*-*darwin*";
    files     = stdio.h;
    files     = stdio.h;
    select    = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$";
    select    = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n"
    c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n"
                '#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n"
                '#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n"
                'int vfscanf(FILE *, const char *, __builtin_va_list) '
                'int vfscanf(FILE *, const char *, __builtin_va_list) '
                '__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");';
                '__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");';
    test_text = '#define  vfscanf       __svfscanf';
    test_text = '#define  vfscanf       __svfscanf';
};
};
/*
/*
 *  Fix various macros used to define ioctl numbers.
 *  Fix various macros used to define ioctl numbers.
 *  The traditional syntax was:
 *  The traditional syntax was:
 *
 *
 *    #define _CTRL(n, x) (('n'<<8)+x)
 *    #define _CTRL(n, x) (('n'<<8)+x)
 *    #define TCTRLCFOO _CTRL(T, 1)
 *    #define TCTRLCFOO _CTRL(T, 1)
 *
 *
 *  but this does not work with the C standard, which disallows macro
 *  but this does not work with the C standard, which disallows macro
 *  expansion inside strings.  We have to rewrite it thus:
 *  expansion inside strings.  We have to rewrite it thus:
 *
 *
 *    #define _CTRL(n, x) ((n<<8)+x)
 *    #define _CTRL(n, x) ((n<<8)+x)
 *    #define TCTRLCFOO  _CTRL('T', 1)
 *    #define TCTRLCFOO  _CTRL('T', 1)
 *
 *
 *  The select expressions match too much, but the c_fix code is cautious.
 *  The select expressions match too much, but the c_fix code is cautious.
 *
 *
 *  CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ...
 *  CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ...
 */
 */
fix = {
fix = {
    hackname  = ctrl_quotes_def;
    hackname  = ctrl_quotes_def;
    select    = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
    select    = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
    c_fix     = char_macro_def;
    c_fix     = char_macro_def;
    c_fix_arg = "CTRL";
    c_fix_arg = "CTRL";
    /*
    /*
     *  This is two tests in order to ensure that the "CTRL(c)" can
     *  This is two tests in order to ensure that the "CTRL(c)" can
     *  be selected in isolation from the multi-arg format
     *  be selected in isolation from the multi-arg format
     */
     */
    test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n";
    test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n";
    test_text = "#define _CTRL(c) ('c'&037)";
    test_text = "#define _CTRL(c) ('c'&037)";
};
};
fix = {
fix = {
    hackname  = ctrl_quotes_use;
    hackname  = ctrl_quotes_use;
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
    c_fix     = char_macro_use;
    c_fix     = char_macro_use;
    c_fix_arg = "CTRL";
    c_fix_arg = "CTRL";
    test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)";
    test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)";
};
};
/*
/*
 *  sys/mman.h on HP/UX is not C++ ready,
 *  sys/mman.h on HP/UX is not C++ ready,
 *  even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
 *  even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
 *
 *
 *  rpc/types.h on OSF1/2.0 is not C++ ready,
 *  rpc/types.h on OSF1/2.0 is not C++ ready,
 *  even though NO_IMPLICIT_EXTERN_C is defined for the alpha.
 *  even though NO_IMPLICIT_EXTERN_C is defined for the alpha.
 *
 *
 *  The problem is the declaration of malloc.
 *  The problem is the declaration of malloc.
 */
 */
fix = {
fix = {
    hackname = cxx_unready;
    hackname = cxx_unready;
    files    = sys/mman.h;
    files    = sys/mman.h;
    files    = rpc/types.h;
    files    = rpc/types.h;
    select   = '[^#]+malloc.*;';  /* Catch any form of declaration
    select   = '[^#]+malloc.*;';  /* Catch any form of declaration
                                     not within a macro.  */
                                     not within a macro.  */
    bypass   = '"C"|__BEGIN_DECLS';
    bypass   = '"C"|__BEGIN_DECLS';
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "extern \"C\" {\n"
                "extern \"C\" {\n"
                "#endif\n";
                "#endif\n";
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "}\n"
                "}\n"
                "#endif\n";
                "#endif\n";
    test_text = "extern void* malloc( size_t );";
    test_text = "extern void* malloc( size_t );";
};
};
/*
/*
 *  On darwin8 and earlier, mach-o/swap.h isn't properly guarded
 *  On darwin8 and earlier, mach-o/swap.h isn't properly guarded
 *  by 'extern "C"'.  On darwin7 some mach/ headers aren't properly guarded.
 *  by 'extern "C"'.  On darwin7 some mach/ headers aren't properly guarded.
 */
 */
fix = {
fix = {
  hackname  = darwin_externc;
  hackname  = darwin_externc;
  mach      = "*-*-darwin*";
  mach      = "*-*-darwin*";
  files     = mach-o/swap.h;
  files     = mach-o/swap.h;
  files     = mach/mach_time.h;
  files     = mach/mach_time.h;
  files     = mach/mach_traps.h;
  files     = mach/mach_traps.h;
  files     = mach/message.h;
  files     = mach/message.h;
  files     = mach/mig.h;
  files     = mach/mig.h;
  files     = mach/semaphore.h;
  files     = mach/semaphore.h;
  bypass    = "extern \"C\"";
  bypass    = "extern \"C\"";
  bypass    = "__BEGIN_DECLS";
  bypass    = "__BEGIN_DECLS";
  c_fix     = wrap;
  c_fix     = wrap;
  c_fix_arg = "#ifdef __cplusplus\n"
  c_fix_arg = "#ifdef __cplusplus\n"
              "extern \"C\" {\n"
              "extern \"C\" {\n"
              "#endif\n";
              "#endif\n";
  c_fix_arg = "#ifdef __cplusplus\n"
  c_fix_arg = "#ifdef __cplusplus\n"
              "}\n"
              "}\n"
              "#endif\n";
              "#endif\n";
  test_text = "extern void swap_fat_header();\n";
  test_text = "extern void swap_fat_header();\n";
};
};
/*
/*
 * AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
 * AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
 * bad __GNUC__ tests.
 * bad __GNUC__ tests.
 */
 */
fix = {
fix = {
  hackname  = darwin_gcc4_breakage;
  hackname  = darwin_gcc4_breakage;
  mach      = "*-*-darwin*";
  mach      = "*-*-darwin*";
  files     = AvailabilityMacros.h;
  files     = AvailabilityMacros.h;
  select    = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
  select    = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
  c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
  test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
  test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
              "(__GNUC_MINOR__ >= 1)\n";
              "(__GNUC_MINOR__ >= 1)\n";
};
};
/*
/*
 *  __private_extern__ doesn't exist in FSF GCC.  Even if it did,
 *  __private_extern__ doesn't exist in FSF GCC.  Even if it did,
 *  why would you ever put it in a system header file?
 *  why would you ever put it in a system header file?
 */
 */
fix = {
fix = {
  hackname  = darwin_private_extern;
  hackname  = darwin_private_extern;
  mach      = "*-*-darwin*";
  mach      = "*-*-darwin*";
  files     = mach-o/dyld.h;
  files     = mach-o/dyld.h;
  select    = "__private_extern__ [a-z_]+ _dyld_";
  select    = "__private_extern__ [a-z_]+ _dyld_";
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "extern";
  c_fix_arg = "extern";
  c_fix_arg = "__private_extern__";
  c_fix_arg = "__private_extern__";
  test_text = "__private_extern__ int _dyld_func_lookup(\n"
  test_text = "__private_extern__ int _dyld_func_lookup(\n"
              "const char *dyld_func_name,\n"
              "const char *dyld_func_name,\n"
              "unsigned long *address);\n";
              "unsigned long *address);\n";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines UINT8_C and UINT16_C to
 * Darwin headers have a stdint.h that defines UINT8_C and UINT16_C to
 * unsigned constants.
 * unsigned constants.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_1;
    hackname  = darwin_stdint_1;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define UINT8_C(v)\tv\n#define UINT16_C(v)\tv";
    c_fix_arg = "#define UINT8_C(v)\tv\n#define UINT16_C(v)\tv";
    select    = "#define UINT8_C\\(v\\)[ \t]+\\(v ## U\\)\n"
    select    = "#define UINT8_C\\(v\\)[ \t]+\\(v ## U\\)\n"
                "#define UINT16_C\\(v\\)[ \t]+\\(v ## U\\)";
                "#define UINT16_C\\(v\\)[ \t]+\\(v ## U\\)";
    test_text = "#define UINT8_C(v)   (v ## U)\n"
    test_text = "#define UINT8_C(v)   (v ## U)\n"
                "#define UINT16_C(v)  (v ## U)";
                "#define UINT16_C(v)  (v ## U)";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines INTPTR_MIN and INTPTR_MAX
 * Darwin headers have a stdint.h that defines INTPTR_MIN and INTPTR_MAX
 * with wrong types.
 * with wrong types.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_2;
    hackname  = darwin_stdint_2;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define INTPTR_MAX 9223372036854775807L\n"
                "#define INTPTR_MAX 9223372036854775807L\n"
                "#define INTPTR_MIN (-INTPTR_MAX-1)\n"
                "#define INTPTR_MIN (-INTPTR_MAX-1)\n"
                "#else\n"
                "#else\n"
                "#define INTPTR_MAX 2147483647L\n"
                "#define INTPTR_MAX 2147483647L\n"
                "#define INTPTR_MIN (-INTPTR_MAX-1)\n"
                "#define INTPTR_MIN (-INTPTR_MAX-1)\n"
                "#endif";
                "#endif";
    select    = "#if __WORDSIZE == 64\n"
    select    = "#if __WORDSIZE == 64\n"
                "#define INTPTR_MIN[ \t]+INT64_MIN\n"
                "#define INTPTR_MIN[ \t]+INT64_MIN\n"
                "#define INTPTR_MAX[ \t]+INT64_MAX\n"
                "#define INTPTR_MAX[ \t]+INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define INTPTR_MIN[ \t]+INT32_MIN\n"
                "#define INTPTR_MIN[ \t]+INT32_MIN\n"
                "#define INTPTR_MAX[ \t]+INT32_MAX\n"
                "#define INTPTR_MAX[ \t]+INT32_MAX\n"
                "#endif";
                "#endif";
    test_text = "#if __WORDSIZE == 64\n"
    test_text = "#if __WORDSIZE == 64\n"
                "#define INTPTR_MIN        INT64_MIN\n"
                "#define INTPTR_MIN        INT64_MIN\n"
                "#define INTPTR_MAX        INT64_MAX\n"
                "#define INTPTR_MAX        INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define INTPTR_MIN        INT32_MIN\n"
                "#define INTPTR_MIN        INT32_MIN\n"
                "#define INTPTR_MAX        INT32_MAX\n"
                "#define INTPTR_MAX        INT32_MAX\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines UINTPTR_MAX with a wrong type.
 * Darwin headers have a stdint.h that defines UINTPTR_MAX with a wrong type.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_3;
    hackname  = darwin_stdint_3;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define UINTPTR_MAX 18446744073709551615UL\n"
                "#define UINTPTR_MAX 18446744073709551615UL\n"
                "#else\n"
                "#else\n"
                "#define UINTPTR_MAX 4294967295UL\n"
                "#define UINTPTR_MAX 4294967295UL\n"
                "#endif";
                "#endif";
    select    = "#if __WORDSIZE == 64\n"
    select    = "#if __WORDSIZE == 64\n"
                "#define UINTPTR_MAX[ \t]+UINT64_MAX\n"
                "#define UINTPTR_MAX[ \t]+UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define UINTPTR_MAX[ \t]+UINT32_MAX\n"
                "#define UINTPTR_MAX[ \t]+UINT32_MAX\n"
                "#endif";
                "#endif";
    test_text = "#if __WORDSIZE == 64\n"
    test_text = "#if __WORDSIZE == 64\n"
                "#define UINTPTR_MAX       UINT64_MAX\n"
                "#define UINTPTR_MAX       UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define UINTPTR_MAX       UINT32_MAX\n"
                "#define UINTPTR_MAX       UINT32_MAX\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines SIZE_MAX with a wrong type.
 * Darwin headers have a stdint.h that defines SIZE_MAX with a wrong type.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_4;
    hackname  = darwin_stdint_4;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define SIZE_MAX 18446744073709551615UL\n"
                "#define SIZE_MAX 18446744073709551615UL\n"
                "#else\n"
                "#else\n"
                "#define SIZE_MAX 4294967295UL\n"
                "#define SIZE_MAX 4294967295UL\n"
                "#endif";
                "#endif";
    select    = "#if __WORDSIZE == 64\n"
    select    = "#if __WORDSIZE == 64\n"
                "#define SIZE_MAX[ \t]+UINT64_MAX\n"
                "#define SIZE_MAX[ \t]+UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define SIZE_MAX[ \t]+UINT32_MAX\n"
                "#define SIZE_MAX[ \t]+UINT32_MAX\n"
                "#endif";
                "#endif";
    test_text = "#if __WORDSIZE == 64\n"
    test_text = "#if __WORDSIZE == 64\n"
                "#define SIZE_MAX          UINT64_MAX\n"
                "#define SIZE_MAX          UINT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define SIZE_MAX          UINT32_MAX\n"
                "#define SIZE_MAX          UINT32_MAX\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines {U,}INTMAX_{MIN,MAX}
 * Darwin headers have a stdint.h that defines {U,}INTMAX_{MIN,MAX}
 * with a wrong type.
 * with a wrong type.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_5;
    hackname  = darwin_stdint_5;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define INTMAX_MIN   (-9223372036854775807L - 1)\n"
                "#define INTMAX_MIN   (-9223372036854775807L - 1)\n"
                "#define INTMAX_MAX   9223372036854775807L\n"
                "#define INTMAX_MAX   9223372036854775807L\n"
                "#define UINTMAX_MAX  18446744073709551615UL\n"
                "#define UINTMAX_MAX  18446744073709551615UL\n"
                "#else\n"
                "#else\n"
                "#define INTMAX_MIN   (-9223372036854775807LL - 1)\n"
                "#define INTMAX_MIN   (-9223372036854775807LL - 1)\n"
                "#define INTMAX_MAX   9223372036854775807LL\n"
                "#define INTMAX_MAX   9223372036854775807LL\n"
                "#define UINTMAX_MAX  18446744073709551615ULL\n"
                "#define UINTMAX_MAX  18446744073709551615ULL\n"
                "#endif";
                "#endif";
    select    = "#define INTMAX_MIN[ \t]+INT64_MIN\n"
    select    = "#define INTMAX_MIN[ \t]+INT64_MIN\n"
                "#define INTMAX_MAX[ \t]+INT64_MAX\n"
                "#define INTMAX_MAX[ \t]+INT64_MAX\n"
                "\n"
                "\n"
                "#define UINTMAX_MAX[ \t]+UINT64_MAX";
                "#define UINTMAX_MAX[ \t]+UINT64_MAX";
    test_text = "#define INTMAX_MIN        INT64_MIN\n"
    test_text = "#define INTMAX_MIN        INT64_MIN\n"
                "#define INTMAX_MAX        INT64_MAX\n"
                "#define INTMAX_MAX        INT64_MAX\n"
                "\n"
                "\n"
                "#define UINTMAX_MAX       UINT64_MAX";
                "#define UINTMAX_MAX       UINT64_MAX";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines {U,}INTMAX_C
 * Darwin headers have a stdint.h that defines {U,}INTMAX_C
 * with a wrong type.
 * with a wrong type.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_6;
    hackname  = darwin_stdint_6;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define PTRDIFF_MIN (-9223372036854775807L - 1)\n"
                "#define PTRDIFF_MIN (-9223372036854775807L - 1)\n"
                "#define PTRDIFF_MAX 9223372036854775807L\n"
                "#define PTRDIFF_MAX 9223372036854775807L\n"
                "#else\n"
                "#else\n"
                "#define PTRDIFF_MIN (-2147483647 - 1)\n"
                "#define PTRDIFF_MIN (-2147483647 - 1)\n"
                "#define PTRDIFF_MAX 2147483647\n"
                "#define PTRDIFF_MAX 2147483647\n"
                "#endif";
                "#endif";
    select    = "#if __WORDSIZE == 64\n"
    select    = "#if __WORDSIZE == 64\n"
                "#define PTRDIFF_MIN[ \t]+INT64_MIN\n"
                "#define PTRDIFF_MIN[ \t]+INT64_MIN\n"
                "#define PTRDIFF_MAX[ \t]+INT64_MAX\n"
                "#define PTRDIFF_MAX[ \t]+INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define PTRDIFF_MIN[ \t]+INT32_MIN\n"
                "#define PTRDIFF_MIN[ \t]+INT32_MIN\n"
                "#define PTRDIFF_MAX[ \t]+INT32_MAX\n"
                "#define PTRDIFF_MAX[ \t]+INT32_MAX\n"
                "#endif";
                "#endif";
    test_text = "#if __WORDSIZE == 64\n"
    test_text = "#if __WORDSIZE == 64\n"
                "#define PTRDIFF_MIN       INT64_MIN\n"
                "#define PTRDIFF_MIN       INT64_MIN\n"
                "#define PTRDIFF_MAX       INT64_MAX\n"
                "#define PTRDIFF_MAX       INT64_MAX\n"
                "#else\n"
                "#else\n"
                "#define PTRDIFF_MIN       INT32_MIN\n"
                "#define PTRDIFF_MIN       INT32_MIN\n"
                "#define PTRDIFF_MAX       INT32_MAX\n"
                "#define PTRDIFF_MAX       INT32_MAX\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Darwin headers have a stdint.h that defines {U,}INTMAX_C
 * Darwin headers have a stdint.h that defines {U,}INTMAX_C
 * with a wrong type.
 * with a wrong type.
 */
 */
fix = {
fix = {
    hackname  = darwin_stdint_7;
    hackname  = darwin_stdint_7;
    mach      = "*-*-darwin*";
    mach      = "*-*-darwin*";
    files     = stdint-darwin.h, stdint.h;
    files     = stdint-darwin.h, stdint.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if __WORDSIZE == 64\n"
    c_fix_arg = "#if __WORDSIZE == 64\n"
                "#define INTMAX_C(v)  (v ## L)\n"
                "#define INTMAX_C(v)  (v ## L)\n"
                "#define UINTMAX_C(v) (v ## UL)\n"
                "#define UINTMAX_C(v) (v ## UL)\n"
                "#else\n"
                "#else\n"
                "#define INTMAX_C(v)  (v ## LL)\n"
                "#define INTMAX_C(v)  (v ## LL)\n"
                "#define UINTMAX_C(v) (v ## ULL)\n"
                "#define UINTMAX_C(v) (v ## ULL)\n"
                "#endif";
                "#endif";
    select    = "#define INTMAX_C\\(v\\)[ \t]+\\(v ## LL\\)\n"
    select    = "#define INTMAX_C\\(v\\)[ \t]+\\(v ## LL\\)\n"
                "#define UINTMAX_C\\(v\\)[ \t]+\\(v ## ULL\\)";
                "#define UINTMAX_C\\(v\\)[ \t]+\\(v ## ULL\\)";
    test_text = "#define INTMAX_C(v)  (v ## LL)\n"
    test_text = "#define INTMAX_C(v)  (v ## LL)\n"
                "#define UINTMAX_C(v) (v ## ULL)";
                "#define UINTMAX_C(v) (v ## ULL)";
};
};
/*
/*
 *  Fix  on Digital UNIX V4.0:
 *  Fix  on Digital UNIX V4.0:
 *  It contains a prototype for a DEC C internal asm() function,
 *  It contains a prototype for a DEC C internal asm() function,
 *  clashing with gcc's asm keyword.  So protect this with __DECC.
 *  clashing with gcc's asm keyword.  So protect this with __DECC.
 */
 */
fix = {
fix = {
    hackname = dec_intern_asm;
    hackname = dec_intern_asm;
    files    = c_asm.h;
    files    = c_asm.h;
    sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n";
    sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n";
    sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
    sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
          "#endif\n";
          "#endif\n";
    test_text =
    test_text =
    "float fasm {\n"
    "float fasm {\n"
    "    ... asm stuff ...\n"
    "    ... asm stuff ...\n"
    "};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/";
    "};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/";
};
};
/*
/*
 * Fix typo in  on DJGPP 2.03.
 * Fix typo in  on DJGPP 2.03.
 */
 */
fix = {
fix = {
    hackname  = djgpp_wchar_h;
    hackname  = djgpp_wchar_h;
    file      = wchar.h;
    file      = wchar.h;
    select    = "__DJ_wint_t";
    select    = "__DJ_wint_t";
    bypass    = "sys/djtypes.h";
    bypass    = "sys/djtypes.h";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n#include ";
    c_fix_arg = "%0\n#include ";
    c_fix_arg = "#include ";
    c_fix_arg = "#include ";
    test_text = "#include \n"
    test_text = "#include \n"
                "extern __DJ_wint_t x;\n";
                "extern __DJ_wint_t x;\n";
};
};
/*
/*
 * Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
 * Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
 */
 */
fix = {
fix = {
    hackname  = ecd_cursor;
    hackname  = ecd_cursor;
    files     = "sunwindow/win_lock.h";
    files     = "sunwindow/win_lock.h";
    files     = "sunwindow/win_cursor.h";
    files     = "sunwindow/win_cursor.h";
    select    = 'ecd\.cursor';
    select    = 'ecd\.cursor';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'ecd_cursor';
    c_fix_arg = 'ecd_cursor';
    test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */";
    test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */";
};
};
/*
/*
 *  Between 8/24/1998 and 2/17/2001, FreeBSD system headers presume
 *  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
 *  neither the existence of GCC 3 nor its exact feature set yet break
 *  (by design?) when __GNUC__ is set beyond 2.
 *  (by design?) when __GNUC__ is set beyond 2.
 */
 */
fix = {
fix = {
    hackname  = freebsd_gcc3_breakage;
    hackname  = freebsd_gcc3_breakage;
    mach      = "*-*-freebsd*";
    mach      = "*-*-freebsd*";
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$';
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$';
    bypass    = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)';
    bypass    = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '%0 || __GNUC__ >= 3';
    c_fix_arg = '%0 || __GNUC__ >= 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7';
};
};
/*
/*
 *  Some releases of FreeBSD 4 and FreeBSD 5.0 and 5.1 system headers presume
 *  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
 *  neither the existence of GCC 4 nor its exact feature set yet break
 *  (by design?) when __GNUC__ is set beyond 3.
 *  (by design?) when __GNUC__ is set beyond 3.
 */
 */
fix = {
fix = {
    hackname  = freebsd_gcc4_breakage;
    hackname  = freebsd_gcc4_breakage;
    mach      = "*-*-freebsd*";
    mach      = "*-*-freebsd*";
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$';
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3';
    c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3';
};
};
/*
/*
 *  Some versions of glibc don't expect the C99 inline semantics.
 *  Some versions of glibc don't expect the C99 inline semantics.
 */
 */
fix = {
fix = {
    hackname  = glibc_c99_inline_1;
    hackname  = glibc_c99_inline_1;
    files     = features.h, '*/features.h';
    files     = features.h, '*/features.h';
    select    = "^ *&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__$";
    select    = "^ *&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)";
    c_fix_arg = "%0 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)";
    test_text = <<-EOT
    test_text = <<-EOT
        #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
        #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
            && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
            && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
        # define __USE_EXTERN_INLINES   1
        # define __USE_EXTERN_INLINES   1
        #endif
        #endif
        EOT;
        EOT;
};
};
/*
/*
 *  Similar, but a version that didn't have __NO_INLINE__
 *  Similar, but a version that didn't have __NO_INLINE__
 */
 */
fix = {
fix = {
    hackname  = glibc_c99_inline_1a;
    hackname  = glibc_c99_inline_1a;
    files     = features.h, '*/features.h';
    files     = features.h, '*/features.h';
    select    = "(\\) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__)\n"
    select    = "(\\) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__)\n"
                "(#[ \t]*define[ \t]*__USE_EXTERN_INLINES[ \t]*1)";
                "(#[ \t]*define[ \t]*__USE_EXTERN_INLINES[ \t]*1)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)\n%2";
    c_fix_arg = "%1 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)\n%2";
    test_text = <<-EOT
    test_text = <<-EOT
        #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
        #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
        # define __USE_EXTERN_INLINES   1
        # define __USE_EXTERN_INLINES   1
        #endif
        #endif
        EOT;
        EOT;
};
};
/*
/*
 * The glibc_c99_inline_1 fix should have fixed everything.  Unfortunately
 * The glibc_c99_inline_1 fix should have fixed everything.  Unfortunately
 * there are many glibc headers which do not respect __USE_EXTERN_INLINES.
 * there are many glibc headers which do not respect __USE_EXTERN_INLINES.
 * The remaining glibc_c99_inline_* fixes deal with some of those headers.
 * The remaining glibc_c99_inline_* fixes deal with some of those headers.
 */
 */
fix = {
fix = {
    hackname  = glibc_c99_inline_2;
    hackname  = glibc_c99_inline_2;
    files     = sys/stat.h, '*/sys/stat.h';
    files     = sys/stat.h, '*/sys/stat.h';
    select    = "extern __inline__ int";
    select    = "extern __inline__ int";
    sed     = "s/extern int \\(stat\\)/"
    sed     = "s/extern int \\(stat\\)/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int \\1/";
              "__inline__ int \\1/";
    sed     = "s/extern int \\([lf]stat\\)/"
    sed     = "s/extern int \\([lf]stat\\)/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int \\1/";
              "__inline__ int \\1/";
    sed     = "s/extern int \\(mknod\\)/"
    sed     = "s/extern int \\(mknod\\)/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int \\1/";
              "__inline__ int \\1/";
    sed     = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\(stat\\)/"
    sed     = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\(stat\\)/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int __REDIRECT\\1 (\\2/";
              "__inline__ int __REDIRECT\\1 (\\2/";
    sed     = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\([lf]stat\\)/"
    sed     = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\([lf]stat\\)/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int __REDIRECT\\1 (\\2/";
              "__inline__ int __REDIRECT\\1 (\\2/";
    sed     = "s/^extern __inline__ int/"
    sed     = "s/^extern __inline__ int/"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n"
              "__inline__ int/";
              "__inline__ int/";
    test_text = <<-EOT
    test_text = <<-EOT
        extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
        extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
        extern __inline__ int
        extern __inline__ int
        __NTH (fstat64 (int __fd, struct stat64 *__statbuf))
        __NTH (fstat64 (int __fd, struct stat64 *__statbuf))
        {}
        {}
        EOT;
        EOT;
};
};
fix = {
fix = {
    hackname  = glibc_c99_inline_3;
    hackname  = glibc_c99_inline_3;
    files     = bits/string2.h, '*/bits/string2.h';
    files     = bits/string2.h, '*/bits/string2.h';
    select    = "extern __inline";
    select    = "extern __inline";
    bypass    = "__extern_inline|__GNU_STDC_INLINE__";
    bypass    = "__extern_inline|__GNU_STDC_INLINE__";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)";
    c_fix_arg = "# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)";
    c_fix_arg = "^# ifdef __cplusplus$";
    c_fix_arg = "^# ifdef __cplusplus$";
    test_text = <<-EOT
    test_text = <<-EOT
        # ifdef __cplusplus
        # ifdef __cplusplus
        #  define __STRING_INLINE inline
        #  define __STRING_INLINE inline
        # else
        # else
        #  define __STRING_INLINE extern __inline
        #  define __STRING_INLINE extern __inline
        # endif
        # endif
        EOT;
        EOT;
};
};
fix = {
fix = {
    hackname  = glibc_c99_inline_4;
    hackname  = glibc_c99_inline_4;
    files     = sys/sysmacros.h, '*/sys/sysmacros.h', wchar.h, '*/wchar.h';
    files     = sys/sysmacros.h, '*/sys/sysmacros.h', wchar.h, '*/wchar.h';
    bypass    = "__extern_inline|__gnu_inline__";
    bypass    = "__extern_inline|__gnu_inline__";
    select    = "(^| )extern __inline";
    select    = "(^| )extern __inline";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 __attribute__ ((__gnu_inline__))";
    c_fix_arg = "%0 __attribute__ ((__gnu_inline__))";
    test_text = <<-EOT
    test_text = <<-EOT
        __extension__ extern __inline unsigned int
        __extension__ extern __inline unsigned int
        extern __inline unsigned int
        extern __inline unsigned int
        EOT;
        EOT;
};
};
/*  glibc-2.3.5 defines pthread mutex initializers incorrectly,
/*  glibc-2.3.5 defines pthread mutex initializers incorrectly,
 *  so we replace them with versions that correspond to the
 *  so we replace them with versions that correspond to the
 *  definition.
 *  definition.
 */
 */
fix = {
fix = {
    hackname = glibc_mutex_init;
    hackname = glibc_mutex_init;
    files    = pthread.h;
    files    = pthread.h;
    select   = '\{ *\{ *0, *\} *\}';
    select   = '\{ *\{ *0, *\} *\}';
    sed      = "/define[ \t]\\{1,\\}PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/{\n"
    sed      = "/define[ \t]\\{1,\\}PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/{\n"
               "N\ns/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n}";
               "N\ns/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n}";
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
               "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0 }/";
               "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
               "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0 }/";
               "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_"
               "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/";
               "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
               "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
               "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
               "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0, 0 }/";
               "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0, 0 }/";
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_"
               "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
               "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
    sed      = "/define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/"
    sed      = "/define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/"
               "N;s/^[ \t]*#[ \t]*"
               "N;s/^[ \t]*#[ \t]*"
               "\\(define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n"
               "\\(define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n"
               "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\\n"
               "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\\n"
               "#  \\1\\\n"
               "#  \\1\\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
               "# else\\\n"
               "# else\\\n"
               "#  \\1\\\n"
               "#  \\1\\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n"
               "# endif/";
               "# endif/";
    sed      = "s/{ \\(0, 0, 0, 0, 0, 0, "
    sed      = "s/{ \\(0, 0, 0, 0, 0, 0, "
               "PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/";
               "PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/";
    sed      = "/define[ \t]\\{1,\\}PTHREAD_COND_INITIALIZER/"
    sed      = "/define[ \t]\\{1,\\}PTHREAD_COND_INITIALIZER/"
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/";
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/";
    test_text = <<- _EOText_
    test_text = <<- _EOText_
        #define PTHREAD_MUTEX_INITIALIZER \\
        #define PTHREAD_MUTEX_INITIALIZER \\
          { { 0, } }
          { { 0, } }
        #ifdef __USE_GNU
        #ifdef __USE_GNU
        # if __WORDSIZE == 64
        # if __WORDSIZE == 64
        #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
          { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
        #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
          { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
        #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
          { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
        # else
        # else
        #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
          { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
        #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
          { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
        #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
        #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
          { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
          { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
        # endif
        # endif
        #endif
        #endif
        # define PTHREAD_RWLOCK_INITIALIZER \\
        # define PTHREAD_RWLOCK_INITIALIZER \\
          { { 0, } }
          { { 0, } }
        # ifdef __USE_GNU
        # ifdef __USE_GNU
        #  if __WORDSIZE == 64
        #  if __WORDSIZE == 64
        #   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
        #   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
          { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,                           \\
          { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,                           \\
              PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
              PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
        #  else
        #  else
        #   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
        #   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
          { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
          { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
        #  endif
        #  endif
        # endif
        # endif
        #define PTHREAD_COND_INITIALIZER { { 0, } }
        #define PTHREAD_COND_INITIALIZER { { 0, } }
        _EOText_;
        _EOText_;
};
};
/* glibc versions before 2.5 have a version of stdint.h that defines
/* 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
   UINT8_C and UINT16_C to produce unsigned constants, as do uClibc
   versions with stdint.h based on those glibc versions.  */
   versions with stdint.h based on those glibc versions.  */
fix = {
fix = {
    hackname  = glibc_stdint;
    hackname  = glibc_stdint;
    files     = stdint.h;
    files     = stdint.h;
    select    = "GNU C Library";
    select    = "GNU C Library";
    c_fix     = format;
    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\n# define UINT16_C(c)\tc";
    c_fix_arg = "# define UINT8_C\\(c\\)\tc ## U\n# define UINT16_C\\(c\\)\tc ## U";
    c_fix_arg = "# define UINT8_C\\(c\\)\tc ## U\n# define UINT16_C\\(c\\)\tc ## U";
    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";
    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";
};
};
/* Some versions of glibc have a version of bits/string2.h that
/* Some versions of glibc have a version of bits/string2.h that
   produces "value computed is not used" warnings from strncpy; fix
   produces "value computed is not used" warnings from strncpy; fix
   this definition by using __builtin_strncpy instead as in newer
   this definition by using __builtin_strncpy instead as in newer
   versions.  */
   versions.  */
fix = {
fix = {
    hackname  = glibc_strncpy;
    hackname  = glibc_strncpy;
    files     = bits/string2.h;
    files     = bits/string2.h;
    bypass    = "__builtin_strncpy";
    bypass    = "__builtin_strncpy";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#  define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)";
    c_fix_arg = "#  define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)";
    c_fix_arg = "#  define strncpy([^\n]*\\\\\n)*[^\n]*";
    c_fix_arg = "#  define strncpy([^\n]*\\\\\n)*[^\n]*";
    test_text = <<-EOT
    test_text = <<-EOT
        #  define strncpy(dest, src, n) \
        #  define strncpy(dest, src, n) \
          (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n)      \\
          (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n)      \\
                          ? (strlen (src) + 1 >= ((size_t) (n))                       \\
                          ? (strlen (src) + 1 >= ((size_t) (n))                       \\
                             ? (char *) memcpy (dest, src, n)                         \\
                             ? (char *) memcpy (dest, src, n)                         \\
                             : strncpy (dest, src, n))                                \\
                             : strncpy (dest, src, n))                                \\
                          : strncpy (dest, src, n)))
                          : strncpy (dest, src, n)))
        EOT;
        EOT;
};
};
/* glibc's tgmath.h relies on an expression that is not an integer
/* 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
   constant expression being treated as it was by GCC 4.4 and
   earlier.  */
   earlier.  */
fix = {
fix = {
    hackname  = glibc_tgmath;
    hackname  = glibc_tgmath;
    files     = tgmath.h;
    files     = tgmath.h;
    select    = '\(\(\(type\) 0.25\) && \(\(type\) 0.25 - 1\)\)';
    select    = '\(\(\(type\) 0.25\) && \(\(type\) 0.25 - 1\)\)';
    bypass    = "__floating_type\\(type\\) \\\\\n.*__builtin_classify_type";
    bypass    = "__floating_type\\(type\\) \\\\\n.*__builtin_classify_type";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "(__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8))";
    c_fix_arg = "(__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8))";
    test_text = "# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))";
    test_text = "# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))";
};
};
/*
/*
 * Fix these files to use the types we think they should for
 * Fix these files to use the types we think they should for
 * ptrdiff_t, size_t, and wchar_t.
 * ptrdiff_t, size_t, and wchar_t.
 *
 *
 * This defines the types in terms of macros predefined by our 'cpp'.
 * This defines the types in terms of macros predefined by our 'cpp'.
 * This is supposedly necessary for glibc's handling of these types.
 * This is supposedly necessary for glibc's handling of these types.
 * It's probably not necessary for anyone else, but it doesn't hurt.
 * It's probably not necessary for anyone else, but it doesn't hurt.
 */
 */
fix = {
fix = {
    hackname  = gnu_types;
    hackname  = gnu_types;
    files  = "sys/types.h";
    files  = "sys/types.h";
    files  = "stdlib.h";
    files  = "stdlib.h";
    files  = "sys/stdtypes.h";
    files  = "sys/stdtypes.h";
    files  = "stddef.h";
    files  = "stddef.h";
    files  = "memory.h";
    files  = "memory.h";
    files  = "unistd.h";
    files  = "unistd.h";
    bypass    = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
    bypass    = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
    select    = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
    select    = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
    c_fix     = gnu_type;
    c_fix     = gnu_type;
    /* The Solaris 10 headers already define these types correctly.  */
    /* The Solaris 10 headers already define these types correctly.  */
    mach   = '*-*-solaris2.1[0-9]*';
    mach   = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    test_text = "typedef long int ptrdiff_t; /* long int */\n"
    test_text = "typedef long int ptrdiff_t; /* long int */\n"
                "typedef uint_t size_t; /* uint_t */\n"
                "typedef uint_t size_t; /* uint_t */\n"
                "typedef ushort_t wchar_t; /* ushort_t */";
                "typedef ushort_t wchar_t; /* ushort_t */";
};
};
/*
/*
 *  Fix HP & Sony's use of "../machine/xxx.h"
 *  Fix HP & Sony's use of "../machine/xxx.h"
 *  to refer to:  
 *  to refer to:  
 */
 */
fix = {
fix = {
    hackname  = hp_inline;
    hackname  = hp_inline;
    files     = sys/spinlock.h;
    files     = sys/spinlock.h;
    files     = machine/machparam.h;
    files     = machine/machparam.h;
    select    = "[ \t]*#[ \t]*include[ \t]+"  '"\.\./machine/';
    select    = "[ \t]*#[ \t]*include[ \t]+"  '"\.\./machine/';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1";
    c_fix_arg = "%1";
    c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)"  '"\.\./machine/'
    c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)"  '"\.\./machine/'
                '([a-z]+)\.h"';
                '([a-z]+)\.h"';
    test_text = ' # include "../machine/mumble.h"';
    test_text = ' # include "../machine/mumble.h"';
};
};
/*
/*
 *  Check for (...) in C++ code in HP/UX sys/file.h.
 *  Check for (...) in C++ code in HP/UX sys/file.h.
 */
 */
fix = {
fix = {
    hackname  = hp_sysfile;
    hackname  = hp_sysfile;
    files     = sys/file.h;
    files     = sys/file.h;
    select    = "HPUX_SOURCE";
    select    = "HPUX_SOURCE";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "(struct file *, ...)";
    c_fix_arg = "(struct file *, ...)";
    c_fix_arg = '\(\.\.\.\)';
    c_fix_arg = '\(\.\.\.\)';
    test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */";
    test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */";
};
};
/*
/*
 *  Un-Hide a series of five FP defines from post-1999 compliance GCC:
 *  Un-Hide a series of five FP defines from post-1999 compliance GCC:
 *  FP_NORMAL, FP_ZERO, FP_INFINITE, FP_SUBNORMAL and FP_NAN
 *  FP_NORMAL, FP_ZERO, FP_INFINITE, FP_SUBNORMAL and FP_NAN
 */
 */
fix = {
fix = {
     hackname  = hppa_hpux_fp_macros;
     hackname  = hppa_hpux_fp_macros;
     mach      = "hppa*-hp-hpux11*";
     mach      = "hppa*-hp-hpux11*";
     files     = math.h;
     files     = math.h;
     select    = "#[ \t]*define[ \t]*FP_NORMAL.*\n"
     select    = "#[ \t]*define[ \t]*FP_NORMAL.*\n"
                 "#[ \t]*define[ \t]*FP_ZERO.*\n"
                 "#[ \t]*define[ \t]*FP_ZERO.*\n"
                 "#[ \t]*define[ \t]*FP_INFINITE.*\n"
                 "#[ \t]*define[ \t]*FP_INFINITE.*\n"
                 "#[ \t]*define[ \t]*FP_SUBNORMAL.*\n"
                 "#[ \t]*define[ \t]*FP_SUBNORMAL.*\n"
                 "#[ \t]*define[ \t]*FP_NAN.*\n";
                 "#[ \t]*define[ \t]*FP_NAN.*\n";
     c_fix     = format;
     c_fix     = format;
     c_fix_arg = <<- _EOFix_
     c_fix_arg = <<- _EOFix_
        #endif /* _INCLUDE_HPUX_SOURCE */
        #endif /* _INCLUDE_HPUX_SOURCE */
        #if defined(_INCLUDE_HPUX_SOURCE) || \
        #if defined(_INCLUDE_HPUX_SOURCE) || \
           (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
           (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))
        %0#endif
        %0#endif
        #ifdef _INCLUDE_HPUX_SOURCE
        #ifdef _INCLUDE_HPUX_SOURCE
        _EOFix_;
        _EOFix_;
     test_text =
     test_text =
            "#  define FP_NORMAL     0\n"
            "#  define FP_NORMAL     0\n"
            "#  define FP_ZERO       1\n"
            "#  define FP_ZERO       1\n"
            "#  define FP_INFINITE   2\n"
            "#  define FP_INFINITE   2\n"
            "#  define FP_SUBNORMAL  3\n"
            "#  define FP_SUBNORMAL  3\n"
            "#  define FP_NAN        4\n";
            "#  define FP_NAN        4\n";
};
};
/*
/*
 * Delete C++ double pow (double, int) inline function from HP-UX 10 & 11
 * Delete C++ double pow (double, int) inline function from HP-UX 10 & 11
 * math.h to prevent clash with define in c_std/bits/std_cmath.h.
 * math.h to prevent clash with define in c_std/bits/std_cmath.h.
 */
 */
fix = {
fix = {
    hackname  = hpux10_cpp_pow_inline;
    hackname  = hpux10_cpp_pow_inline;
    files     = fixinc-test-limits.h, math.h;
    files     = fixinc-test-limits.h, math.h;
    select    = <<-     END_POW_INLINE
    select    = <<-     END_POW_INLINE
        ^# +ifdef +__cplusplus
        ^# +ifdef +__cplusplus
         +\}
         +\}
         +inline +double +pow\(double +__d,int +__expon\) +\{
         +inline +double +pow\(double +__d,int +__expon\) +\{
        [       ]+return +pow\(__d,\(double\)__expon\);
        [       ]+return +pow\(__d,\(double\)__expon\);
         +\}
         +\}
         +extern +"C" +\{
         +extern +"C" +\{
        #else
        #else
        # +endif
        # +endif
        END_POW_INLINE;
        END_POW_INLINE;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "";
    c_fix_arg = "";
    test_text =
    test_text =
        "#    ifdef __cplusplus\n"
        "#    ifdef __cplusplus\n"
        "     }\n"
        "     }\n"
        "     inline double pow(double __d,int __expon) {\n"
        "     inline double pow(double __d,int __expon) {\n"
        "\t return pow(__d,(double)__expon);\n"
        "\t return pow(__d,(double)__expon);\n"
        "     }\n"
        "     }\n"
        '     extern "C"' " {\n"
        '     extern "C"' " {\n"
        "#else\n"
        "#else\n"
        "#    endif";
        "#    endif";
};
};
fix = {
fix = {
     hackname  = hpux11_cpp_pow_inline;
     hackname  = hpux11_cpp_pow_inline;
     files     = math.h;
     files     = math.h;
     select    = " +inline double pow\\(double d,int expon\\) \\{\n"
     select    = " +inline double pow\\(double d,int expon\\) \\{\n"
                 " +return pow\\(d, \\(double\\)expon\\);\n"
                 " +return pow\\(d, \\(double\\)expon\\);\n"
                 " +\\}\n";
                 " +\\}\n";
     c_fix     = format;
     c_fix     = format;
     c_fix_arg = "";
     c_fix_arg = "";
     test_text =
     test_text =
            "   inline double pow(double d,int expon) {\n"
            "   inline double pow(double d,int expon) {\n"
            "     return pow(d, (double)expon);\n"
            "     return pow(d, (double)expon);\n"
            "   }\n";
            "   }\n";
};
};
/*
/*
 *  Fix hpux 10.X missing ctype declarations 1
 *  Fix hpux 10.X missing ctype declarations 1
 */
 */
fix = {
fix = {
    hackname = hpux10_ctype_declarations1;
    hackname = hpux10_ctype_declarations1;
    files    = ctype.h;
    files    = ctype.h;
    select   = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)";
    select   = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef _PROTOTYPES\n"
    c_fix_arg = "#ifdef _PROTOTYPES\n"
                "extern int __tolower(int);\n"
                "extern int __tolower(int);\n"
                "extern int __toupper(int);\n"
                "extern int __toupper(int);\n"
                "#else /* NOT _PROTOTYPES */\n"
                "#else /* NOT _PROTOTYPES */\n"
                "extern int __tolower();\n"
                "extern int __tolower();\n"
                "extern int __toupper();\n"
                "extern int __toupper();\n"
                "#endif /* _PROTOTYPES */\n\n"
                "#endif /* _PROTOTYPES */\n\n"
                "%0\n";
                "%0\n";
    test_text = "#  define _toupper(__c)         __toupper(__c)\n";
    test_text = "#  define _toupper(__c)         __toupper(__c)\n";
};
};
/*
/*
 *  Fix hpux 10.X missing ctype declarations 2
 *  Fix hpux 10.X missing ctype declarations 2
 */
 */
fix = {
fix = {
    hackname = hpux10_ctype_declarations2;
    hackname = hpux10_ctype_declarations2;
    files    = ctype.h;
    files    = ctype.h;
    select   = "^#  if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)";
    select   = "^#  if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n\n"
    c_fix_arg = "%0\n\n"
                "#ifdef _PROTOTYPES\n"
                "#ifdef _PROTOTYPES\n"
                "     extern int _isalnum(int);\n"
                "     extern int _isalnum(int);\n"
                "     extern int _isalpha(int);\n"
                "     extern int _isalpha(int);\n"
                "     extern int _iscntrl(int);\n"
                "     extern int _iscntrl(int);\n"
                "     extern int _isdigit(int);\n"
                "     extern int _isdigit(int);\n"
                "     extern int _isgraph(int);\n"
                "     extern int _isgraph(int);\n"
                "     extern int _islower(int);\n"
                "     extern int _islower(int);\n"
                "     extern int _isprint(int);\n"
                "     extern int _isprint(int);\n"
                "     extern int _ispunct(int);\n"
                "     extern int _ispunct(int);\n"
                "     extern int _isspace(int);\n"
                "     extern int _isspace(int);\n"
                "     extern int _isupper(int);\n"
                "     extern int _isupper(int);\n"
                "     extern int _isxdigit(int);\n"
                "     extern int _isxdigit(int);\n"
                "#  else /* not _PROTOTYPES */\n"
                "#  else /* not _PROTOTYPES */\n"
                "     extern int _isalnum();\n"
                "     extern int _isalnum();\n"
                "     extern int _isalpha();\n"
                "     extern int _isalpha();\n"
                "     extern int _iscntrl();\n"
                "     extern int _iscntrl();\n"
                "     extern int _isdigit();\n"
                "     extern int _isdigit();\n"
                "     extern int _isgraph();\n"
                "     extern int _isgraph();\n"
                "     extern int _islower();\n"
                "     extern int _islower();\n"
                "     extern int _isprint();\n"
                "     extern int _isprint();\n"
                "     extern int _ispunct();\n"
                "     extern int _ispunct();\n"
                "     extern int _isspace();\n"
                "     extern int _isspace();\n"
                "     extern int _isupper();\n"
                "     extern int _isupper();\n"
                "     extern int _isxdigit();\n"
                "     extern int _isxdigit();\n"
                "#endif /* _PROTOTYPES */\n";
                "#endif /* _PROTOTYPES */\n";
    test_text = "#  if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n"
    test_text = "#  if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n"
                "     extern unsigned int *__SB_masks;\n";
                "     extern unsigned int *__SB_masks;\n";
};
};
/*
/*
 *  Fix hpux 10.X missing stdio declarations
 *  Fix hpux 10.X missing stdio declarations
 */
 */
fix = {
fix = {
    hackname = hpux10_stdio_declarations;
    hackname = hpux10_stdio_declarations;
    files    = stdio.h;
    files    = stdio.h;
    select   = "^#[ \t]*define _iob[ \t]*__iob";
    select   = "^#[ \t]*define _iob[ \t]*__iob";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n\n"
    c_fix_arg = "%0\n\n"
        "#  if defined(__STDC__) || defined(__cplusplus)\n"
        "#  if defined(__STDC__) || defined(__cplusplus)\n"
        "     extern int snprintf(char *, size_t, const char *, ...);\n"
        "     extern int snprintf(char *, size_t, const char *, ...);\n"
        "     extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
        "     extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
        "#  else /* not __STDC__) || __cplusplus */\n"
        "#  else /* not __STDC__) || __cplusplus */\n"
        "     extern int snprintf();\n"
        "     extern int snprintf();\n"
        "     extern int vsnprintf();\n"
        "     extern int vsnprintf();\n"
        "#  endif /* __STDC__) || __cplusplus */\n";
        "#  endif /* __STDC__) || __cplusplus */\n";
    test_text = "#  define _iob __iob\n";
    test_text = "#  define _iob __iob\n";
};
};
/*
/*
 *  Make sure hpux defines abs in header.
 *  Make sure hpux defines abs in header.
 */
 */
fix = {
fix = {
    hackname  = hpux11_abs;
    hackname  = hpux11_abs;
    mach      = "ia64-hp-hpux11*";
    mach      = "ia64-hp-hpux11*";
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "ifndef _MATH_INCLUDED";
    select    = "ifndef _MATH_INCLUDED";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)";
    c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)";
    test_text = "#ifndef _MATH_INCLUDED";
    test_text = "#ifndef _MATH_INCLUDED";
};
};
/*
/*
 *  Keep HP-UX 11 from stomping on C++ math namespace
 *  Keep HP-UX 11 from stomping on C++ math namespace
 *  with defines for fabsf.
 *  with defines for fabsf.
 */
 */
fix = {
fix = {
    hackname  = hpux11_fabsf;
    hackname  = hpux11_fabsf;
    files     = math.h;
    files     = math.h;
    select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
    select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text =
    test_text =
    "#ifdef _PA_RISC\n"
    "#ifdef _PA_RISC\n"
    "#  define fabsf(x) ((float)fabs((double)(float)(x)))\n"
    "#  define fabsf(x) ((float)fabs((double)(float)(x)))\n"
    "#endif";
    "#endif";
};
};
/*
/*
 *  Fix C99 constant in __POINTER_SET define.
 *  Fix C99 constant in __POINTER_SET define.
 */
 */
fix = {
fix = {
    hackname  = hpux11_pthread_const;
    hackname  = hpux11_pthread_const;
    mach      = "*-hp-hpux11.[0-3]*";
    mach      = "*-hp-hpux11.[0-3]*";
    files     = sys/pthread.h;
    files     = sys/pthread.h;
    select    = "^#define[ \t]*__POINTER_SET[ \t]*\\(\\(void \\*\\) 1LL\\)";
    select    = "^#define[ \t]*__POINTER_SET[ \t]*\\(\\(void \\*\\) 1LL\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define __POINTER_SET\t\t((void *) 1L)";
    c_fix_arg = "#define __POINTER_SET\t\t((void *) 1L)";
    test_text = "#define __POINTER_SET\t\t((void *) 1LL)";
    test_text = "#define __POINTER_SET\t\t((void *) 1LL)";
};
};
/*
/*
 * Prevent HP-UX 11 from defining __size_t and preventing size_t from
 * Prevent HP-UX 11 from defining __size_t and preventing size_t from
 * being defined by having it define _hpux_size_t instead.
 * being defined by having it define _hpux_size_t instead.
 */
 */
fix = {
fix = {
    hackname  = hpux11_size_t;
    hackname  = hpux11_size_t;
    mach      = "*-hp-hpux11*";
    mach      = "*-hp-hpux11*";
    select    = "__size_t";
    select    = "__size_t";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "_hpux_size_t";
    c_fix_arg = "_hpux_size_t";
    test_text =
    test_text =
    "#define __size_t size_t\n"
    "#define __size_t size_t\n"
    "       extern int getpwuid_r( char *, __size_t, struct passwd **);\n";
    "       extern int getpwuid_r( char *, __size_t, struct passwd **);\n";
};
};
/*
/*
 *  Fix hpux 11.00 broken snprintf declaration
 *  Fix hpux 11.00 broken snprintf declaration
 *  (third argument is char *, needs to be const char * to prevent
 *  (third argument is char *, needs to be const char * to prevent
 *  spurious warnings with -Wwrite-strings or in C++).
 *  spurious warnings with -Wwrite-strings or in C++).
 */
 */
fix = {
fix = {
    hackname = hpux11_snprintf;
    hackname = hpux11_snprintf;
    files    = stdio.h;
    files    = stdio.h;
    select   = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)'
    select   = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)'
                                    ' *(char *\*, *\.\.\.\);)';
                                    ' *(char *\*, *\.\.\.\);)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '%1 const %3';
    c_fix_arg = '%1 const %3';
    test_text = "extern int snprintf(char *, size_t, char *, ...);\n"
    test_text = "extern int snprintf(char *, size_t, char *, ...);\n"
                "extern int snprintf(char *, __size_t, char *, ...);\n"
                "extern int snprintf(char *, __size_t, char *, ...);\n"
                "extern int snprintf(char *, _hpux_size_t, char *, ...);";
                "extern int snprintf(char *, _hpux_size_t, char *, ...);";
};
};
/*
/*
 *  Fix hpux 11.00 broken vsnprintf declaration
 *  Fix hpux 11.00 broken vsnprintf declaration
 */
 */
fix = {
fix = {
    hackname = hpux11_vsnprintf;
    hackname = hpux11_vsnprintf;
    files    = stdio.h;
    files    = stdio.h;
    select   = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, '
    select   = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, '
                                     'const char \*,) __va__list\);';
                                     'const char \*,) __va__list\);';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 __va_list);";
    c_fix_arg = "%1 __va_list);";
    test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,'
    test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,'
                                     ' __va__list);';
                                     ' __va__list);';
};
};
/*
/*
 *  get rid of bogus inline definitions in HP-UX 8.0
 *  get rid of bogus inline definitions in HP-UX 8.0
 */
 */
fix = {
fix = {
    hackname = hpux8_bogus_inlines;
    hackname = hpux8_bogus_inlines;
    files    = math.h;
    files    = math.h;
    select   = inline;
    select   = inline;
    bypass   = "__GNUG__";
    bypass   = "__GNUG__";
    sed = "s@inline int abs(int [a-z][a-z]*) {.*}"
    sed = "s@inline int abs(int [a-z][a-z]*) {.*}"
           "@extern \"C\" int abs(int);@";
           "@extern \"C\" int abs(int);@";
    sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
    sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
    sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
    sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
    sed = "s@inline double sqr(double [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"
    test_text = "inline int abs(int v) { return (v>=0)?v:-v; }\n"
                "inline double sqr(double v) { return v**0.5; }";
                "inline double sqr(double v) { return v**0.5; }";
};
};
/*
/*
 *  Fix hpux broken ctype macros
 *  Fix hpux broken ctype macros
 */
 */
fix = {
fix = {
    hackname = hpux_ctype_macros;
    hackname = hpux_ctype_macros;
    files    = ctype.h;
    files    = ctype.h;
    select   = '((: |\()__SB_masks \? )'
    select   = '((: |\()__SB_masks \? )'
               '(__SB_masks\[__(alnum|c)\] & _IS)';
               '(__SB_masks\[__(alnum|c)\] & _IS)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1(int)%3";
    c_fix_arg = "%1(int)%3";
    test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n"
    test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n"
                "# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n";
                "# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n";
};
};
/*
/*
 *  Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
 *  Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
 */
 */
fix = {
fix = {
    hackname = hpux_htonl;
    hackname = hpux_htonl;
    files    = netinet/in.h;
    files    = netinet/in.h;
    select   = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
    select   = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
               "(/\\*\n"
               "(/\\*\n"
               " \\* Macros for number representation conversion\\.\n"
               " \\* Macros for number representation conversion\\.\n"
               " \\*/\n"
               " \\*/\n"
               "#ifndef ntohl)";
               "#ifndef ntohl)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if 1\n%1";
    c_fix_arg = "#if 1\n%1";
    test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
    test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
                "/*\n"
                "/*\n"
                " * Macros for number representation conversion.\n"
                " * Macros for number representation conversion.\n"
                " */\n"
                " */\n"
                "#ifndef ntohl\n"
                "#ifndef ntohl\n"
                "#define ntohl(x)        (x)\n"
                "#define ntohl(x)        (x)\n"
                "#define ntohs(x)        (x)\n"
                "#define ntohs(x)        (x)\n"
                "#define htonl(x)        (x)\n"
                "#define htonl(x)        (x)\n"
                "#define htons(x)        (x)\n"
                "#define htons(x)        (x)\n"
                "#endif\n"
                "#endif\n"
                "#endif  /* ! _XOPEN_SOURCE_EXTENDED */";
                "#endif  /* ! _XOPEN_SOURCE_EXTENDED */";
};
};
/*
/*
 * HP-UX long_double
 * HP-UX long_double
 */
 */
fix = {
fix = {
    hackname  = hpux_long_double;
    hackname  = hpux_long_double;
    mach      = "*-*-hpux10*";
    mach      = "*-*-hpux10*";
    mach      = "*-*-hpux11.[012]*";
    mach      = "*-*-hpux11.[012]*";
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "extern[ \t]long_double[ \t]strtold";
    select    = "extern[ \t]long_double[ \t]strtold";
    bypass    = "long_double_t";
    bypass    = "long_double_t";
    sed       = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D";
    sed       = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D";
    sed       = "s/long_double/long double/g";
    sed       = "s/long_double/long double/g";
    test_text = "#  ifndef _LONG_DOUBLE\n"
    test_text = "#  ifndef _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "     typedef struct {\n"
                "     typedef struct {\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "     } long_double;\n"
                "     } long_double;\n"
                "#  endif /* _LONG_DOUBLE */\n"
                "#  endif /* _LONG_DOUBLE */\n"
                "extern long_double strtold(const char *, char **);\n";
                "extern long_double strtold(const char *, char **);\n";
};
};
 /*
 /*
  * We cannot use the above rule on 11.31 because it removes the strtold
  * 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.
  * definition.  ia64 is OK with no hack, PA needs some help.
  */
  */
fix = {
fix = {
    hackname  = hpux_long_double_2;
    hackname  = hpux_long_double_2;
    mach      = "hppa*-*-hpux11.3*";
    mach      = "hppa*-*-hpux11.3*";
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| defined\\(_PROTOTYPES\\) \\|\\| defined\\(_LONG_DOUBLE_STRUCT\\)";
    select    = "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| defined\\(_PROTOTYPES\\) \\|\\| defined\\(_LONG_DOUBLE_STRUCT\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#  if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)";
    c_fix_arg = "#  if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)";
    test_text = "#  if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)\n";
    test_text = "#  if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)\n";
};
};
/*
/*
 *  Fix hpux10.20  to avoid invalid forward decl
 *  Fix hpux10.20  to avoid invalid forward decl
 */
 */
fix = {
fix = {
    hackname = hpux_systime;
    hackname = hpux_systime;
    files    = sys/time.h;
    files    = sys/time.h;
    select   = "^extern struct sigevent;";
    select   = "^extern struct sigevent;";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct sigevent;";
    c_fix_arg = "struct sigevent;";
    test_text = 'extern struct sigevent;';
    test_text = 'extern struct sigevent;';
};
};
/*
/*
 *  Wrap spu_info in ifdef _KERNEL.  GCC cannot handle an array of unknown
 *  Wrap spu_info in ifdef _KERNEL.  GCC cannot handle an array of unknown
 *  type and mpinfou is only defined when _KERNEL is set.
 *  type and mpinfou is only defined when _KERNEL is set.
 */
 */
fix = {
fix = {
    hackname = hpux_spu_info;
    hackname = hpux_spu_info;
    mach     = "*-hp-hpux*";
    mach     = "*-hp-hpux*";
    /*
    /*
     *  It is tempting to omit the first "files" entry.  Do not.
     *  It is tempting to omit the first "files" entry.  Do not.
     *  The testing machinery will take the first "files" entry as the name
     *  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
     *  of a test file to play with.  It would be a nuisance to have a directory
     *  with the name "*".
     *  with the name "*".
     */
     */
    files    = "ia64/sys/getppdp.h";
    files    = "ia64/sys/getppdp.h";
    files    = "*/sys/getppdp.h";
    files    = "*/sys/getppdp.h";
    select   = "^.*extern.*spu_info.*";
    select   = "^.*extern.*spu_info.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef _KERNEL\n%0\n#endif";
    c_fix_arg = "#ifdef _KERNEL\n%0\n#endif";
    test_text = "extern union mpinfou spu_info[];";
    test_text = "extern union mpinfou spu_info[];";
};
};
fix = {
fix = {
    hackname  = hpux11_extern_sendfile;
    hackname  = hpux11_extern_sendfile;
    mach      = "*-hp-hpux11.[12]*";
    mach      = "*-hp-hpux11.[12]*";
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
    select    = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
    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";
    test_text = "   extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n                               const struct iovec *, int));\n";
};
};
fix = {
fix = {
    hackname  = hpux11_extern_sendpath;
    hackname  = hpux11_extern_sendpath;
    mach      = "*-hp-hpux11.[12]*";
    mach      = "*-hp-hpux11.[12]*";
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
    select    = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
    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";
    test_text = "   extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n                               const struct iovec *, int));\n";
};
};
fix = {
fix = {
    hackname  = hpux_extern_errno;
    hackname  = hpux_extern_errno;
    mach      = "*-hp-hpux10.*";
    mach      = "*-hp-hpux10.*";
    mach      = "*-hp-hpux11.[0-2]*";
    mach      = "*-hp-hpux11.[0-2]*";
    files     = errno.h;
    files     = errno.h;
    select    = "^[ \t]*extern int errno;$";
    select    = "^[ \t]*extern int errno;$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n%0\n#ifdef __cplusplus\n}\n#endif";
    c_fix_arg = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n%0\n#ifdef __cplusplus\n}\n#endif";
    test_text = "   extern int errno;\n";
    test_text = "   extern int errno;\n";
};
};
/*
/*
 *  Add missing braces to pthread initializer defines.
 *  Add missing braces to pthread initializer defines.
 */
 */
fix = {
fix = {
    hackname  = hpux_pthread_initializers;
    hackname  = hpux_pthread_initializers;
    mach      = "*-hp-hpux11.[0-3]*";
    mach      = "*-hp-hpux11.[0-3]*";
    files     = sys/pthread.h;
    files     = sys/pthread.h;
    sed       = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
    sed       = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
                 "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
                 "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
    sed       = "s@^[ \t]*1,[ \t]*\\\\"
    sed       = "s@^[ \t]*1,[ \t]*\\\\"
                 "@\t{ 1, 0 }@";
                 "@\t{ 1, 0 }@";
    sed       = "/^[ \t]*0$/d";
    sed       = "/^[ \t]*0$/d";
    sed       = "s@__PTHREAD_MUTEX_VALID, 0"
    sed       = "s@__PTHREAD_MUTEX_VALID, 0"
                 "@{ __PTHREAD_MUTEX_VALID, 0 }@";
                 "@{ __PTHREAD_MUTEX_VALID, 0 }@";
    sed       = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
    sed       = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
                 "@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
                 "@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
    sed       = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \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\\\\@";
                 "@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
    sed       = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \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\\\\@";
                 "@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
    sed       = "s@^[ \t]*0, 0[ \t]*\\\\"
    sed       = "s@^[ \t]*0, 0[ \t]*\\\\"
                 "@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
                 "@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
    sed       = "s@__PTHREAD_COND_VALID, 0"
    sed       = "s@__PTHREAD_COND_VALID, 0"
                 "@{ __PTHREAD_COND_VALID, 0 }@";
                 "@{ __PTHREAD_COND_VALID, 0 }@";
    sed       = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
    sed       = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
                 "@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
                 "@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
    sed       = "s@__PTHREAD_RWLOCK_VALID, 0"
    sed       = "s@__PTHREAD_RWLOCK_VALID, 0"
                 "@{ __PTHREAD_RWLOCK_VALID, 0 }@";
                 "@{ __PTHREAD_RWLOCK_VALID, 0 }@";
    sed       = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
    sed       = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
                 "@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
                 "@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
    sed       = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \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\\\\@";
                 "@\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"
    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_VALID, 0,\t\t\t\t\t\\\\\n"
                "\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
                "\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
                "\t__SPNLCK_INITIALIZER,\t\t\t\t\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, 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, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n"
                "\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
                "\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
                "}\n";
                "}\n";
};
};
fix = {
fix = {
    hackname  = hpux_c99_intptr;
    hackname  = hpux_c99_intptr;
    mach      = "*-hp-hpux11.3*";
    mach      = "*-hp-hpux11.3*";
    files     = stdint-hpux11.h, stdint.h;
    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_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]*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_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]*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]*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)@";
    sed       = "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@";
    test_text = "#define PTRDIFF_MAX    INT32_MAX\n"
    test_text = "#define PTRDIFF_MAX    INT32_MAX\n"
                "#define PTRDIFF_MIN    INT32_MIN\n"
                "#define PTRDIFF_MIN    INT32_MIN\n"
                "#define INTPTR_MAX     INT32_MAX\n"
                "#define INTPTR_MAX     INT32_MAX\n"
                "#define INTPTR_MIN     INT32_MIN\n"
                "#define INTPTR_MIN     INT32_MIN\n"
                "#define UINTPTR_MAX    UINT32_MAX\n"
                "#define UINTPTR_MAX    UINT32_MAX\n"
                "#define SIZE_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.
 * These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
 */
 */
fix = {
fix = {
    hackname  = hpux_c99_inttypes;
    hackname  = hpux_c99_inttypes;
    mach      = "*-hp-hpux11.[23]*";
    mach      = "*-hp-hpux11.[23]*";
    files     = inttypes.h;
    files     = inttypes.h;
    files     = stdint-hpux11.h, stdint.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]*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]*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]*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)@";
    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"
    test_text = "#define UINT8_C(__c)     __CONCAT_U__(__c)\n"
                "#define UINT16_C(__c)    __CONCAT_U__(__c)\n"
                "#define UINT16_C(__c)    __CONCAT_U__(__c)\n"
                "#define INT32_C(__c)     __CONCAT__(__c,l)\n"
                "#define INT32_C(__c)     __CONCAT__(__c,l)\n"
                "#define UINT32_C(__c)     __CONCAT__(__c,ul)\n";
                "#define UINT32_C(__c)     __CONCAT__(__c,ul)\n";
};
};
fix = {
fix = {
    hackname  = hpux_c99_inttypes2;
    hackname  = hpux_c99_inttypes2;
    mach      = "*-hp-hpux11.2*";
    mach      = "*-hp-hpux11.2*";
    files     = stdint-hpux11.h, stdint.h;
    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]*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]*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]*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)@";
    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"
    test_text = "#  define      INT8_C(__c)     ((signed char)(__c))\n"
                "#  define      UINT8_C(__c)    ((unsigned char)(__c))\n"
                "#  define      UINT8_C(__c)    ((unsigned char)(__c))\n"
                "#  define      INT16_C(__c)    ((short)(__c))\n"
                "#  define      INT16_C(__c)    ((short)(__c))\n"
                "#  define      UINT16_C(__c)   ((unsigned short)(__c))\n";
                "#  define      UINT16_C(__c)   ((unsigned short)(__c))\n";
};
};
fix = {
fix = {
    hackname  = hpux_stdint_least_fast;
    hackname  = hpux_stdint_least_fast;
    mach      = "*-hp-hpux11.2*";
    mach      = "*-hp-hpux11.2*";
    files     = stdint-hpux11.h, stdint.h;
    files     = stdint-hpux11.h, stdint.h;
    select    =
    select    =
        "^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX";
        "^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX";
    c_fix     = format;
    c_fix     = format;
    c-fix-arg = "#  define      UINT_%164_MAX   __UINT64_MAX__";
    c-fix-arg = "#  define      UINT_%164_MAX   __UINT64_MAX__";
    test-text = "#  define       UINT_FAST64_MAX        ULLONG_MAX\n"
    test-text = "#  define       UINT_FAST64_MAX        ULLONG_MAX\n"
                "#  define       UINT_LEAST64_MAX        ULLONG_MAX\n";
                "#  define       UINT_LEAST64_MAX        ULLONG_MAX\n";
        _EOFix_;
        _EOFix_;
};
};
fix = {
fix = {
    hackname  = hpux_inttype_int8_t;
    hackname  = hpux_inttype_int8_t;
    mach      = "*-hp-hpux1[01].*";
    mach      = "*-hp-hpux1[01].*";
    files     = sys/_inttypes.h;
    files     = sys/_inttypes.h;
    select    = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*";
    select    = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "typedef signed char int%18_t;";
    c_fix_arg = "typedef signed char int%18_t;";
    test_text = "typedef char int_least8_t;\n"
    test_text = "typedef char int_least8_t;\n"
                "typedef char int8_t;\n";
                "typedef char int8_t;\n";
};
};
fix = {
fix = {
    hackname  = hpux_imaginary_i;
    hackname  = hpux_imaginary_i;
    mach      = "ia64-hp-hpux11.*";
    mach      = "ia64-hp-hpux11.*";
    files     = complex.h;
    files     = complex.h;
    select    = "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*";
    select    = "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
    c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
    test_text = "#define _Complex_I (0.f+_Imaginary_I)\n";
    test_text = "#define _Complex_I (0.f+_Imaginary_I)\n";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VAL in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VAL in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_val_hex;
    hackname  = huge_val_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_val";
    bypass    = "__builtin_huge_val";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n";
    c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n";
    test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)";
    test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VALF in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VALF in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_valf_hex;
    hackname  = huge_valf_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_valf";
    bypass    = "__builtin_huge_valf";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n";
    c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n";
    test_text = "#  define HUGE_VALF (__extension__ 0x1.0p255f)";
    test_text = "#  define HUGE_VALF (__extension__ 0x1.0p255f)";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VALL in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VALL in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_vall_hex;
    hackname  = huge_vall_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_vall";
    bypass    = "__builtin_huge_vall";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n";
    c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n";
    test_text = "#  define HUGE_VALL (__extension__ 0x1.0p32767L)";
    test_text = "#  define HUGE_VALL (__extension__ 0x1.0p32767L)";
};
};
/*
/*
 *  Fix return type of abort and free
 *  Fix return type of abort and free
 */
 */
fix = {
fix = {
    hackname  = int_abort_free_and_exit;
    hackname  = int_abort_free_and_exit;
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "int[ \t]+(abort|free|exit)[ \t]*\\(";
    select    = "int[ \t]+(abort|free|exit)[ \t]*\\(";
    bypass    = "_CLASSIC_ANSI_TYPES";
    bypass    = "_CLASSIC_ANSI_TYPES";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void\t%1(";
    c_fix_arg = "void\t%1(";
    test_text = "extern int abort(int);\n"
    test_text = "extern int abort(int);\n"
                "extern int free(void*);\n"
                "extern int free(void*);\n"
                "extern int exit(void*);";
                "extern int exit(void*);";
};
};
/*
/*
 *  Fix various macros used to define ioctl numbers.
 *  Fix various macros used to define ioctl numbers.
 *  The traditional syntax was:
 *  The traditional syntax was:
 *
 *
 *    #define _IO(n, x) (('n'<<8)+x)
 *    #define _IO(n, x) (('n'<<8)+x)
 *    #define TIOCFOO _IO(T, 1)
 *    #define TIOCFOO _IO(T, 1)
 *
 *
 *  but this does not work with the C standard, which disallows macro
 *  but this does not work with the C standard, which disallows macro
 *  expansion inside strings.  We have to rewrite it thus:
 *  expansion inside strings.  We have to rewrite it thus:
 *
 *
 *    #define _IO(n, x) ((n<<8)+x)
 *    #define _IO(n, x) ((n<<8)+x)
 *    #define TIOCFOO  _IO('T', 1)
 *    #define TIOCFOO  _IO('T', 1)
 *
 *
 *  The select expressions match too much, but the c_fix code is cautious.
 *  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.
 *  _IO might be: _IO DESIO BSD43__IO with W, R, WR, C, ... suffixes.
 */
 */
fix = {
fix = {
    hackname  = io_quotes_def;
    hackname  = io_quotes_def;
    select    = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
    select    = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
    c_fix     = char_macro_def;
    c_fix     = char_macro_def;
    c_fix_arg = "IO";
    c_fix_arg = "IO";
    test_text =
    test_text =
    "#define BSD43__IOWR(n, x) (('n'<<8)+x)\n"
    "#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 _IOWN(x,y,t)  (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|('x'<<8)|y)\n"
    "#define _IO(x,y)      ('x'<<8|y)";
    "#define _IO(x,y)      ('x'<<8|y)";
    test_text =
    test_text =
    "#define XX_IO(x)        ('x'<<8|256)";
    "#define XX_IO(x)        ('x'<<8|256)";
};
};
fix = {
fix = {
    hackname  = io_quotes_use;
    hackname  = io_quotes_use;
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*"
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*"
                "\\( *[^,']";
                "\\( *[^,']";
    c_fix     = char_macro_use;
    c_fix     = char_macro_use;
    c_fix_arg = "IO";
    c_fix_arg = "IO";
    test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n"
    test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n"
                "#define TIOCFOO \\\\\n"
                "#define TIOCFOO \\\\\n"
                "BSD43__IOWR(T, 1) /* Some are multi-line */";
                "BSD43__IOWR(T, 1) /* Some are multi-line */";
};
};
/*
/*
 *  Check for missing ';' in struct
 *  Check for missing ';' in struct
 */
 */
fix = {
fix = {
    hackname = ip_missing_semi;
    hackname = ip_missing_semi;
    files    = netinet/ip.h;
    files    = netinet/ip.h;
    select   = "}$";
    select   = "}$";
    sed      = "/^struct/,/^};/s/}$/};/";
    sed      = "/^struct/,/^};/s/}$/};/";
    test_text=
    test_text=
    "struct mumble {\n"
    "struct mumble {\n"
    "  union {\n"
    "  union {\n"
    "    int x;\n"
    "    int x;\n"
    "  }\n"
    "  }\n"
    "}; /* mumbled struct */\n";
    "}; /* mumbled struct */\n";
};
};
/*
/*
 *  IRIX 6.5.1[89]  unconditionally defines
 *  IRIX 6.5.1[89]  unconditionally defines
 *  __restrict as restrict iff __c99.  This is wrong for C++, which
 *  __restrict as restrict iff __c99.  This is wrong for C++, which
 *  needs many C99 features, but only supports __restrict.
 *  needs many C99 features, but only supports __restrict.
 */
 */
fix = {
fix = {
    hackname  = irix___restrict;
    hackname  = irix___restrict;
    files     = internal/sgimacros.h;
    files     = internal/sgimacros.h;
    select    = "(#ifdef __c99\n)(#[ \t]*define __restrict restrict)";
    select    = "(#ifdef __c99\n)(#[ \t]*define __restrict restrict)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1"
    c_fix_arg = "%1"
                "#  ifndef __cplusplus\n%2\n#  endif";
                "#  ifndef __cplusplus\n%2\n#  endif";
    test_text = "#ifdef __c99\n#  define __restrict restrict";
    test_text = "#ifdef __c99\n#  define __restrict restrict";
};
};
/*
/*
 * IRIX 6.5.22  uses the SGI c99 __generic() intrinsic
 * IRIX 6.5.22  uses the SGI c99 __generic() intrinsic
 * to define the fpclasify, isfinite, isinf, isnan, isnormal and signbit
 * to define the fpclasify, isfinite, isinf, isnan, isnormal and signbit
 * functions.
 * functions.
 *
 *
 * This was probably introduced around IRIX 6.5.18
 * This was probably introduced around IRIX 6.5.18
 */
 */
fix = {
fix = {
    hackname  = irix___generic1;
    hackname  = irix___generic1;
    files     = internal/math_core.h;
    files     = internal/math_core.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    select    = "#define ([a-z]+)\\(x\\) *__generic.*";
    select    = "#define ([a-z]+)\\(x\\) *__generic.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern int %1(double);\n"
    c_fix_arg = "extern int %1(double);\n"
                "extern int %1f(float);\n"
                "extern int %1f(float);\n"
                "extern int %1l(long double);\n"
                "extern int %1l(long double);\n"
                "#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n"
                "#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n"
                "               : sizeof(x) == sizeof(float) ? _%1f(x) \\\n"
                "               : sizeof(x) == sizeof(float) ? _%1f(x) \\\n"
                "               : _%1l(x))\n";
                "               : _%1l(x))\n";
    test_text =
    test_text =
      "#define isnan(x) __generic(x,,, _isnan, _isnanf, _isnanl,,,)(x)\n";
      "#define isnan(x) __generic(x,,, _isnan, _isnanf, _isnanl,,,)(x)\n";
};
};
/* Likewise  on IRIX 6.5.19 and later uses the SGI
/* Likewise  on IRIX 6.5.19 and later uses the SGI
   compiler's __generic intrinsic to define isgreater, isgreaterequal,
   compiler's __generic intrinsic to define isgreater, isgreaterequal,
   isless, islessequal, islessgreater and isunordered functions.  */
   isless, islessequal, islessgreater and isunordered functions.  */
fix = {
fix = {
    hackname  = irix___generic2;
    hackname  = irix___generic2;
    files     = internal/math_core.h;
    files     = internal/math_core.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    select    = "#define ([a-z]+)\\(x,y\\) *__generic.*";
    select    = "#define ([a-z]+)\\(x,y\\) *__generic.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define %1(x,y) \\\n"
    c_fix_arg = "#define %1(x,y) \\\n"
                "  ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n"
                "  ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n"
                "   : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n"
                "   : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n"
                "   : _%1l(x,y))\n";
                "   : _%1l(x,y))\n";
    test_text =
    test_text =
      "#define isless(x,y)         __generic(x,y,, _isless, _islessf, _islessl,,,)(x,y)";
      "#define isless(x,y)         __generic(x,y,, _isless, _islessf, _islessl,,,)(x,y)";
};
};
/*
/*
 *  IRIX 5.2's  contains an asm comment with a contraction
 *  IRIX 5.2's  contains an asm comment with a contraction
 *  that causes the assembly preprocessor to complain about an
 *  that causes the assembly preprocessor to complain about an
 *  unterminated character constant.
 *  unterminated character constant.
 */
 */
fix = {
fix = {
    hackname  = irix_asm_apostrophe;
    hackname  = irix_asm_apostrophe;
    files     = sys/asm.h;
    files     = sys/asm.h;
    select    = "^[ \t]*#.*[Ww]e're";
    select    = "^[ \t]*#.*[Ww]e're";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 are";
    c_fix_arg = "%1 are";
    c_fix_arg = "^([ \t]*#.*[Ww]e)'re";
    c_fix_arg = "^([ \t]*#.*[Ww]e)'re";
    test_text = "\t# and we're on vacation";
    test_text = "\t# and we're on vacation";
};
};
/*
/*
 * IRIX 6.5 complex.h defines _Complex_I and _Imaginary_I in terms of __I__,
 * IRIX 6.5 complex.h defines _Complex_I and _Imaginary_I in terms of __I__,
 * which is a MIPSpro compiler builtin.  Remove _Imaginary_I and imaginary
 * which is a MIPSpro compiler builtin.  Remove _Imaginary_I and imaginary
 * definitions which are not supported by GCC.
 * definitions which are not supported by GCC.
 */
 */
fix = {
fix = {
    hackname  = irix_complex;
    hackname  = irix_complex;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    files     = complex.h;
    files     = complex.h;
    select    = "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)";
    select    = "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)";
    sed       = "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/"
    sed       = "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/"
                "#define _Complex_I (__extension__ 1.0iF)/";
                "#define _Complex_I (__extension__ 1.0iF)/";
    sed       = "/#define[ \t]imaginary[ \t]_Imaginary/d";
    sed       = "/#define[ \t]imaginary[ \t]_Imaginary/d";
    sed       = "/#define[ \t]_Imaginary_I/d";
    sed       = "/#define[ \t]_Imaginary_I/d";
    sed       = "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/";
    sed       = "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/";
    test_text = "#define _Complex_I ((float _Complex) (__I__))\n"
    test_text = "#define _Complex_I ((float _Complex) (__I__))\n"
                "#define imaginary _Imaginary\n"
                "#define imaginary _Imaginary\n"
                "// #define _Imaginary_I ((float _Imaginary) 1)\n"
                "// #define _Imaginary_I ((float _Imaginary) 1)\n"
                "#define _Imaginary_I __I__\n"
                "#define _Imaginary_I __I__\n"
                "#define I _Imaginary_I";
                "#define I _Imaginary_I";
};
};
/*
/*
 *  Non-traditional "const" declaration in Irix's limits.h.
 *  Non-traditional "const" declaration in Irix's limits.h.
 */
 */
fix = {
fix = {
    hackname    = irix_limits_const;
    hackname    = irix_limits_const;
    files       = fixinc-test-limits.h, limits.h;
    files       = fixinc-test-limits.h, limits.h;
    select      = "^extern const ";
    select      = "^extern const ";
    c_fix       = format;
    c_fix       = format;
    c_fix_arg   = "extern __const ";
    c_fix_arg   = "extern __const ";
    test_text   = "extern const char limit; /* test limits */";
    test_text   = "extern const char limit; /* test limits */";
};
};
/*
/*
 *  IRIX 6.5.1[78]  has a broken definition of socklen_t.
 *  IRIX 6.5.1[78]  has a broken definition of socklen_t.
 *  Various socket function prototypes use different types instead,
 *  Various socket function prototypes use different types instead,
 *  depending on the API in use (BSD, XPG4/5), but the socklen_t
 *  depending on the API in use (BSD, XPG4/5), but the socklen_t
 *  definition doesn't reflect this (SGI Bug Id 864477, fixed in
 *  definition doesn't reflect this (SGI Bug Id 864477, fixed in
 *  IRIX 6.5.19).
 *  IRIX 6.5.19).
 */
 */
fix = {
fix = {
    hackname  = irix_socklen_t;
    hackname  = irix_socklen_t;
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "(#define _SOCKLEN_T\n)(typedef u_int32_t socklen_t;)";
    select    = "(#define _SOCKLEN_T\n)(typedef u_int32_t socklen_t;)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1"
    c_fix_arg = "%1"
                "#if _NO_XOPEN4 && _NO_XOPEN5\n"
                "#if _NO_XOPEN4 && _NO_XOPEN5\n"
                "typedef int socklen_t;\n"
                "typedef int socklen_t;\n"
                "#else\n"
                "#else\n"
                "%2\n"
                "%2\n"
                "#endif /* _NO_XOPEN4 && _NO_XOPEN5 */";
                "#endif /* _NO_XOPEN4 && _NO_XOPEN5 */";
    test_text = "#define _SOCKLEN_T\ntypedef u_int32_t socklen_t;";
    test_text = "#define _SOCKLEN_T\ntypedef u_int32_t socklen_t;";
};
};
/*
/*
 *  IRIX 6.5  only works with ISO C99 and errors out
 *  IRIX 6.5  only works with ISO C99 and errors out
 *  otherwise.
 *  otherwise.
 */
 */
fix = {
fix = {
    hackname  = irix_stdint_c99_mode;
    hackname  = irix_stdint_c99_mode;
    files     = stdint.h;
    files     = stdint.h;
    select = "(#ifndef __c99\n)(#error This header file is to be used only for c99 mode compilations)";
    select = "(#ifndef __c99\n)(#error This header file is to be used only for c99 mode compilations)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix  = format;
    c_fix  = format;
    c_fix_arg = "#if 0\n"
    c_fix_arg = "#if 0\n"
                "%2";
                "%2";
    test_text =
    test_text =
    "#ifndef __c99\n#error This header file is to be used only for c99 mode compilations\n#else";
    "#ifndef __c99\n#error This header file is to be used only for c99 mode compilations\n#else";
};
};
/*
/*
 *  IRIX 6.5  has some *_MIN/MAX constants whose types don't
 *  IRIX 6.5  has some *_MIN/MAX constants whose types don't
 *  match the corresponding types, as required by ISO C99.
 *  match the corresponding types, as required by ISO C99.
 */
 */
fix = {
fix = {
    hackname  = irix_stdint_c99_types;
    hackname  = irix_stdint_c99_types;
    files     = stdint-irix65.h, stdint.h;
    files     = stdint-irix65.h, stdint.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    sed       = "s@^#define INT64_MIN.*(-0x7fffffffffffffff - 1)$@"
    sed       = "s@^#define INT64_MIN.*(-0x7fffffffffffffff - 1)$@"
                "#define INT64_MIN               (-0x7fffffffffffffffLL - 1)@";
                "#define INT64_MIN               (-0x7fffffffffffffffLL - 1)@";
    sed       = "s@^#define INT64_MAX.*0x7fffffffffffffff$@"
    sed       = "s@^#define INT64_MAX.*0x7fffffffffffffff$@"
                "#define INT64_MAX               0x7fffffffffffffffLL@";
                "#define INT64_MAX               0x7fffffffffffffffLL@";
    sed       = "s@^#define UINT32_MAX.*0xffffffff$@"
    sed       = "s@^#define UINT32_MAX.*0xffffffff$@"
                "#define UINT32_MAX              0xffffffffU@";
                "#define UINT32_MAX              0xffffffffU@";
    sed       = "s@^#define UINT64_MAX.*0xffffffffffffffff$@"
    sed       = "s@^#define UINT64_MAX.*0xffffffffffffffff$@"
                "#define UINT64_MAX              0xffffffffffffffffULL@";
                "#define UINT64_MAX              0xffffffffffffffffULL@";
    sed       = "s@^#define INTPTR_MIN.*INT32_MIN$@"
    sed       = "s@^#define INTPTR_MIN.*INT32_MIN$@"
                "#define INTPTR_MIN              (-0x7fffffffL - 1)@";
                "#define INTPTR_MIN              (-0x7fffffffL - 1)@";
    sed       = "s@^#define INTPTR_MAX.*INT32_MAX$@"
    sed       = "s@^#define INTPTR_MAX.*INT32_MAX$@"
                "#define INTPTR_MAX              0x7fffffffL@";
                "#define INTPTR_MAX              0x7fffffffL@";
    sed       = "s@^#define UINTPTR_MAX.*UINT32_MAX$@"
    sed       = "s@^#define UINTPTR_MAX.*UINT32_MAX$@"
                "#define UINTPTR_MAX             0xffffffffUL@";
                "#define UINTPTR_MAX             0xffffffffUL@";
    sed       = "s@^#define INTPTR_MIN.*INT64_MIN@"
    sed       = "s@^#define INTPTR_MIN.*INT64_MIN@"
                "#define INTPTR_MIN              (-0x7fffffffffffffffL - 1)@";
                "#define INTPTR_MIN              (-0x7fffffffffffffffL - 1)@";
    sed       = "s@^#define INTPTR_MAX.*INT64_MAX$@"
    sed       = "s@^#define INTPTR_MAX.*INT64_MAX$@"
                "#define INTPTR_MAX              0x7fffffffffffffffL@";
                "#define INTPTR_MAX              0x7fffffffffffffffL@";
    sed       = "s@^#define UINTPTR_MAX.*UINT64_MAX$@"
    sed       = "s@^#define UINTPTR_MAX.*UINT64_MAX$@"
                "#define UINTPTR_MAX             0xffffffffffffffffUL@";
                "#define UINTPTR_MAX             0xffffffffffffffffUL@";
    sed       = "s@^#define PTRDIFF_MIN.*INT64_MIN$@"
    sed       = "s@^#define PTRDIFF_MIN.*INT64_MIN$@"
                "#define PTRDIFF_MIN             (-0x7fffffffffffffffL - 1)@";
                "#define PTRDIFF_MIN             (-0x7fffffffffffffffL - 1)@";
    sed       = "s@^#define PTRDIFF_MAX.*INT64_MAX$@"
    sed       = "s@^#define PTRDIFF_MAX.*INT64_MAX$@"
                "#define PTRDIFF_MAX             0x7fffffffffffffffL@";
                "#define PTRDIFF_MAX             0x7fffffffffffffffL@";
    sed       = "s@^#define SIZE_MAX.*UINT64_MAX$@"
    sed       = "s@^#define SIZE_MAX.*UINT64_MAX$@"
                "#define SIZE_MAX                0xffffffffffffffffUL@";
                "#define SIZE_MAX                0xffffffffffffffffUL@";
    test_text = "#define INT64_MIN               (-0x7fffffffffffffff - 1)\n"
    test_text = "#define INT64_MIN               (-0x7fffffffffffffff - 1)\n"
                "#define INT64_MAX               0x7fffffffffffffff\n"
                "#define INT64_MAX               0x7fffffffffffffff\n"
                "#define UINT32_MAX              0xffffffff\n"
                "#define UINT32_MAX              0xffffffff\n"
                "#define UINT64_MAX              0xffffffffffffffff\n"
                "#define UINT64_MAX              0xffffffffffffffff\n"
                "#define INTPTR_MIN              INT32_MIN\n"
                "#define INTPTR_MIN              INT32_MIN\n"
                "#define INTPTR_MAX              INT32_MAX\n"
                "#define INTPTR_MAX              INT32_MAX\n"
                "#define UINTPTR_MAX             UINT32_MAX\n"
                "#define UINTPTR_MAX             UINT32_MAX\n"
                "#define INTPTR_MIN              INT64_MIN\n"
                "#define INTPTR_MIN              INT64_MIN\n"
                "#define INTPTR_MAX              INT64_MAX\n"
                "#define INTPTR_MAX              INT64_MAX\n"
                "#define UINTPTR_MAX             UINT64_MAX\n"
                "#define UINTPTR_MAX             UINT64_MAX\n"
                "#define PTRDIFF_MIN             INT64_MIN\n"
                "#define PTRDIFF_MIN             INT64_MIN\n"
                "#define PTRDIFF_MAX             INT64_MAX\n"
                "#define PTRDIFF_MAX             INT64_MAX\n"
                "#define SIZE_MAX                UINT64_MAX";
                "#define SIZE_MAX                UINT64_MAX";
};
};
/*
/*
 *  IRIX 6.5  uses casts in some macros which cannot thus be used
 *  IRIX 6.5  uses casts in some macros which cannot thus be used
 *  in preprocessor tests, although ISO C99 requires this.
 *  in preprocessor tests, although ISO C99 requires this.
 */
 */
fix = {
fix = {
    hackname  = irix_stdint_c99_macros;
    hackname  = irix_stdint_c99_macros;
    files     = stdint-irix65.h, stdint.h;
    files     = stdint-irix65.h, stdint.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    sed       = "s@^#define INT8_C(x).*int.*_t.*$@#define INT8_C(x)               (x)@";
    sed       = "s@^#define INT8_C(x).*int.*_t.*$@#define INT8_C(x)               (x)@";
    sed       = "s@^#define INT16_C(x).*int.*_t.*$@#define INT16_C(x)              (x)@";
    sed       = "s@^#define INT16_C(x).*int.*_t.*$@#define INT16_C(x)              (x)@";
    sed       = "s@^#define INT32_C(x).*int.*_t.*$@#define INT32_C(x)              (x)@";
    sed       = "s@^#define INT32_C(x).*int.*_t.*$@#define INT32_C(x)              (x)@";
    sed       = "s@^#define INT64_C(x).*int.*_t.*$@#define INT64_C(x)              (x ## LL)@";
    sed       = "s@^#define INT64_C(x).*int.*_t.*$@#define INT64_C(x)              (x ## LL)@";
    sed       = "s@^#define UINT8_C(x).*int.*_t.*$@#define UINT8_C(x)              (x)@";
    sed       = "s@^#define UINT8_C(x).*int.*_t.*$@#define UINT8_C(x)              (x)@";
    sed       = "s@^#define UINT16_C(x).*int.*_t.*$@#define UINT16_C(x)             (x)@";
    sed       = "s@^#define UINT16_C(x).*int.*_t.*$@#define UINT16_C(x)             (x)@";
    sed       = "s@^#define UINT32_C(x).*int.*_t.*$@#define UINT32_C(x)             (x ## U)@";
    sed       = "s@^#define UINT32_C(x).*int.*_t.*$@#define UINT32_C(x)             (x ## U)@";
    sed       = "s@^#define UINT64_C(x).*int.*_t.*$@#define UINT64_C(x)             (x ## ULL)@";
    sed       = "s@^#define UINT64_C(x).*int.*_t.*$@#define UINT64_C(x)             (x ## ULL)@";
    sed       = "s@^#define INTMAX_C(x).*int.*_t.*$@#define INTMAX_C(x)             (x ## LL)@";
    sed       = "s@^#define INTMAX_C(x).*int.*_t.*$@#define INTMAX_C(x)             (x ## LL)@";
    sed       = "s@^#define UINTMAX_C(x).*int.*_t.*$@#define UINTMAX_C(x)            (x ## ULL)@";
    sed       = "s@^#define UINTMAX_C(x).*int.*_t.*$@#define UINTMAX_C(x)            (x ## ULL)@";
    test_text = "#define INT8_C(x)               (int_least8_t)(x)\n"
    test_text = "#define INT8_C(x)               (int_least8_t)(x)\n"
                "#define INT16_C(x)              (int_least16_t)(x)\n"
                "#define INT16_C(x)              (int_least16_t)(x)\n"
                "#define INT32_C(x)              (int_least32_t)(x)\n"
                "#define INT32_C(x)              (int_least32_t)(x)\n"
                "#define INT64_C(x)              (int_least64_t)(x)\n"
                "#define INT64_C(x)              (int_least64_t)(x)\n"
                "#define UINT8_C(x)              (uint_least8_t)(x)\n"
                "#define UINT8_C(x)              (uint_least8_t)(x)\n"
                "#define UINT16_C(x)             (uint_least16_t)(x)\n"
                "#define UINT16_C(x)             (uint_least16_t)(x)\n"
                "#define UINT32_C(x)             (uint_least32_t)(x)\n"
                "#define UINT32_C(x)             (uint_least32_t)(x)\n"
                "#define UINT64_C(x)             (uint_least64_t)(x)\n"
                "#define UINT64_C(x)             (uint_least64_t)(x)\n"
                "#define INTMAX_C(x)             (intmax_t)(x)\n"
                "#define INTMAX_C(x)             (intmax_t)(x)\n"
                "#define UINTMAX_C(x)            (uintmax_t)(x)";
                "#define UINTMAX_C(x)            (uintmax_t)(x)";
};
};
/*
/*
 *  IRIX 5.x's stdio.h and IRIX 6.5's internal/stdio_core.h declare
 *  IRIX 5.x's stdio.h and IRIX 6.5's internal/stdio_core.h declare
 *  some functions that take a va_list as
 *  some functions that take a va_list as
 *  taking char *.  However, GCC uses void * for va_list, so
 *  taking char *.  However, GCC uses void * for va_list, so
 *  calling vfprintf with a va_list fails in C++.  */
 *  calling vfprintf with a va_list fails in C++.  */
fix = {
fix = {
    hackname  = irix_stdio_va_list;
    hackname  = irix_stdio_va_list;
    files     = stdio.h;
    files     = stdio.h;
    files     = internal/stdio_core.h;
    files     = internal/stdio_core.h;
    select = '/\* va_list \*/ char \*';
    select = '/\* va_list \*/ char \*';
    c_fix  = format;
    c_fix  = format;
    c_fix_arg = "__gnuc_va_list";
    c_fix_arg = "__gnuc_va_list";
    test_text =
    test_text =
    "extern int printf( const char *, /* va_list */ char * );";
    "extern int printf( const char *, /* va_list */ char * );";
};
};
/*
/*
 *  IRIX 6.5.19  provides the XPG4 variant of
 *  IRIX 6.5.19  provides the XPG4 variant of
 *  wcsftime by default.  ISO C99 requires the XPG5 variant instead.
 *  wcsftime by default.  ISO C99 requires the XPG5 variant instead.
 */
 */
fix = {
fix = {
    hackname  = irix_wcsftime;
    hackname  = irix_wcsftime;
    files     = internal/wchar_core.h;
    files     = internal/wchar_core.h;
    select    = "#if _NO_XOPEN5\n(extern size_t[ \t]+wcsftime.*const char \*.*)";
    select    = "#if _NO_XOPEN5\n(extern size_t[ \t]+wcsftime.*const char \*.*)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if _NO_XOPEN5 && !defined(__c99)\n%1";
    c_fix_arg = "#if _NO_XOPEN5 && !defined(__c99)\n%1";
    test_text = "#if _NO_XOPEN5\n"
    test_text = "#if _NO_XOPEN5\n"
                "extern size_t wcsftime(wchar_t *, "
                "extern size_t wcsftime(wchar_t *, "
                "__SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, "
                "__SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, "
                "const struct tm *);";
                "const struct tm *);";
};
};
/*
/*
 * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
 * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
 * use / * * / to concatenate tokens.
 * use / * * / to concatenate tokens.
 */
 */
fix = {
fix = {
    hackname = kandr_concat;
    hackname = kandr_concat;
    files  = "sparc/asm_linkage.h";
    files  = "sparc/asm_linkage.h";
    files  = "sun*/asm_linkage.h";
    files  = "sun*/asm_linkage.h";
    files  = "arm/as_support.h";
    files  = "arm/as_support.h";
    files  = "arm/mc_type.h";
    files  = "arm/mc_type.h";
    files  = "arm/xcb.h";
    files  = "arm/xcb.h";
    files  = "dev/chardefmac.h";
    files  = "dev/chardefmac.h";
    files  = "dev/ps_irq.h";
    files  = "dev/ps_irq.h";
    files  = "dev/screen.h";
    files  = "dev/screen.h";
    files  = "dev/scsi.h";
    files  = "dev/scsi.h";
    files  = "sys/tty.h";
    files  = "sys/tty.h";
    files  = "Xm.acorn/XmP.h";
    files  = "Xm.acorn/XmP.h";
    files  = bsd43/bsd43_.h;
    files  = bsd43/bsd43_.h;
    select = '/\*\*/';
    select = '/\*\*/';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '##';
    c_fix_arg = '##';
    test_text = "#define __CONCAT__(a,b) a/**/b";
    test_text = "#define __CONCAT__(a,b) a/**/b";
};
};
/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines
/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines
 * an _SC_GR0_OFFSET macro using an idiom that isn't a compile time
 * an _SC_GR0_OFFSET macro using an idiom that isn't a compile time
 * constant on recent versions of g++.
 * constant on recent versions of g++.
 */
 */
fix = {
fix = {
    hackname = linux_ia64_ucontext;
    hackname = linux_ia64_ucontext;
    files = "sys/ucontext.h";
    files = "sys/ucontext.h";
    mach = "ia64-*-linux*";
    mach = "ia64-*-linux*";
    select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)'
    select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)'
             '->sc_gr\[0\]\) - \(char \*\) 0\)';
             '->sc_gr\[0\]\) - \(char \*\) 0\)';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)";
    c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)";
    test_text = "# define _SC_GR0_OFFSET\t\\\\\n"
    test_text = "# define _SC_GR0_OFFSET\t\\\\\n"
        "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n";
        "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n";
};
};
/*
/*
 *  Remove header file warning from sys/time.h.  Autoconf's
 *  Remove header file warning from sys/time.h.  Autoconf's
 *  AC_HEADER_TIME recommends to include both sys/time.h and time.h
 *  AC_HEADER_TIME recommends to include both sys/time.h and time.h
 *  which causes warning on LynxOS.  Remove the warning.
 *  which causes warning on LynxOS.  Remove the warning.
 */
 */
fix = {
fix = {
    hackname  = lynxos_no_warning_in_sys_time_h;
    hackname  = lynxos_no_warning_in_sys_time_h;
    files     = sys/time.h;
    files     = sys/time.h;
    select    = "#warning[ \t]+Using  instead of ";
    select    = "#warning[ \t]+Using  instead of ";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "";
    c_fix_arg = "";
    test_text = "#warning Using  instead of ";
    test_text = "#warning Using  instead of ";
};
};
/*
/*
 *  Add missing declaration for putenv.
 *  Add missing declaration for putenv.
 */
 */
fix = {
fix = {
    hackname  = lynxos_missing_putenv;
    hackname  = lynxos_missing_putenv;
    mach      = '*-*-lynxos*';
    mach      = '*-*-lynxos*';
    files     = stdlib.h;
    files     = stdlib.h;
    bypass    = 'putenv[ \t]*\\(';
    bypass    = 'putenv[ \t]*\\(';
    select    = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    select    = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
        "extern int putenv                              _AP((char *));";
        "extern int putenv                              _AP((char *));";
    c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    test_text = "extern char *getenv    _AP((const char *));";
    test_text = "extern char *getenv    _AP((const char *));";
};
};
/*
/*
 * Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_.
 * Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_.
 *
 *
 * On NetBSD, machine is a symbolic link to an architecture specific
 * On NetBSD, machine is a symbolic link to an architecture specific
 * directory name, so we can't match a specific file name here.
 * directory name, so we can't match a specific file name here.
 */
 */
fix = {
fix = {
    hackname = machine_ansi_h_va_list;
    hackname = machine_ansi_h_va_list;
    select   = "define[ \t]+_BSD_VA_LIST_[ \t]";
    select   = "define[ \t]+_BSD_VA_LIST_[ \t]";
    bypass   = '__builtin_va_list';
    bypass   = '__builtin_va_list';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1__builtin_va_list";
    c_fix_arg = "%1__builtin_va_list";
    c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*";
    c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*";
    test_text = " # define _BSD_VA_LIST_\tchar**";
    test_text = " # define _BSD_VA_LIST_\tchar**";
};
};
/*
/*
 *  Fix non-ansi machine name defines
 *  Fix non-ansi machine name defines
 */
 */
fix = {
fix = {
    hackname  = machine_name;
    hackname  = machine_name;
    c_test    = machine_name;
    c_test    = machine_name;
    c_fix     = machine_name;
    c_fix     = machine_name;
    test_text = "/* MACH_DIFF: */\n"
    test_text = "/* MACH_DIFF: */\n"
    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
    "\n/* no uniform test, so be careful  :-) */";
    "\n/* no uniform test, so be careful  :-) */";
};
};
/*
/*
 *  Some math.h files define struct exception (it's in the System V
 *  Some math.h files define struct exception (it's in the System V
 *  Interface Definition), which conflicts with the class exception defined
 *  Interface Definition), which conflicts with the class exception defined
 *  in the C++ file std/stdexcept.h.  We redefine it to __math_exception.
 *  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
 *  This is not a great fix, but I haven't been able to think of anything
 *  better.
 *  better.
 */
 */
fix = {
fix = {
    hackname  = math_exception;
    hackname  = math_exception;
    files     = math.h;
    files     = math.h;
    select    = "struct exception";
    select    = "struct exception";
    /*
    /*
     * This should be bypassed on __cplusplus, but some supposedly C++ C++
     * This should be bypassed on __cplusplus, but some supposedly C++ C++
     * aware headers, such as Solaris 8 and 9, don't wrap their struct
     * 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
     * exception either.  So currently we bypass only for glibc, based on a
     * comment in the fixed glibc header.  Ick.
     * comment in the fixed glibc header.  Ick.
     */
     */
    bypass    = 'We have a problem when using C\+\+|for C\+\+, '
    bypass    = 'We have a problem when using C\+\+|for C\+\+, '
                '_[a-z0-9A-Z_]+_exception; for C, exception';
                '_[a-z0-9A-Z_]+_exception; for C, exception';
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#define exception __math_exception\n"
                "#define exception __math_exception\n"
                "#endif\n";
                "#endif\n";
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#undef exception\n"
                "#undef exception\n"
                "#endif\n";
                "#endif\n";
    test_text = "typedef struct exception t_math_exception;";
    test_text = "typedef struct exception t_math_exception;";
};
};
/*
/*
 *  This looks pretty broken to me.  ``dbl_max_def'' will contain
 *  This looks pretty broken to me.  ``dbl_max_def'' will contain
 *  "define DBL_MAX " at the start, when what we really want is just
 *  "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
 *  the value portion.  Can't figure out how to write a test case
 *  for this either  :-(
 *  for this either  :-(
 */
 */
fix = {
fix = {
    hackname = math_huge_val_from_dbl_max;
    hackname = math_huge_val_from_dbl_max;
    files    = math.h;
    files    = math.h;
    /*
    /*
     * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined
     * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined
     * in math.h, this fix applies.
     * in math.h, this fix applies.
     */
     */
    select   = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX";
    select   = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX";
    bypass   = "define[ \t]+DBL_MAX";
    bypass   = "define[ \t]+DBL_MAX";
    shell    =
    shell    =
    /*
    /*
     *  See if we have a definition for DBL_MAX in float.h.
     *  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 do, we will replace the one in math.h with that one.
     */
     */
    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
                   "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
                   "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
    "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
    "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
    "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/"
    "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/"
                        "s@DBL_MAX@'\"$dbl_max_def@\"\n"
                        "s@DBL_MAX@'\"$dbl_max_def@\"\n"
    "\telse cat\n"
    "\telse cat\n"
    "\tfi";
    "\tfi";
    test_text =
    test_text =
    "`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n"
    "`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n"
    "#define HUGE_VAL DBL_MAX";
    "#define HUGE_VAL DBL_MAX";
};
};
/*
/*
 *  nested comment
 *  nested comment
 */
 */
fix = {
fix = {
    hackname  = nested_auth_des;
    hackname  = nested_auth_des;
    files     = rpc/rpc.h;
    files     = rpc/rpc.h;
    select    = '(/\*.*rpc/auth_des\.h>.*)/\*';
    select    = '(/\*.*rpc/auth_des\.h>.*)/\*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1*/ /*";
    c_fix_arg = "%1*/ /*";
    test_text = "/*#include  /* skip this */";
    test_text = "/*#include  /* skip this */";
};
};
/*
/*
 *  Some versions of NetBSD don't expect the C99 inline semantics.
 *  Some versions of NetBSD don't expect the C99 inline semantics.
 */
 */
fix = {
fix = {
    hackname  = netbsd_c99_inline_1;
    hackname  = netbsd_c99_inline_1;
    mach      = "*-*-netbsd*";
    mach      = "*-*-netbsd*";
    files     = signal.h;
    files     = signal.h;
    select    = "extern __inline int";
    select    = "extern __inline int";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern\n"
    c_fix_arg = "extern\n"
                "#ifdef __GNUC_STDC_INLINE__\n"
                "#ifdef __GNUC_STDC_INLINE__\n"
                "__attribute__((__gnu_inline__))\n"
                "__attribute__((__gnu_inline__))\n"
                "#endif\n"
                "#endif\n"
                "__inline int";
                "__inline int";
    test_text = "extern __inline int\nsigaddset(sigset_t *set, int signo)\n{}";
    test_text = "extern __inline int\nsigaddset(sigset_t *set, int signo)\n{}";
};
};
fix = {
fix = {
    hackname  = netbsd_c99_inline_2;
    hackname  = netbsd_c99_inline_2;
    mach      = "*-*-netbsd*";
    mach      = "*-*-netbsd*";
    files     = signal.h;
    files     = signal.h;
    select    = "#define _SIGINLINE extern __inline";
    select    = "#define _SIGINLINE extern __inline";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = <<- _EOArg_
    c_fix_arg = <<- _EOArg_
        #ifdef __GNUC_STDC_INLINE__
        #ifdef __GNUC_STDC_INLINE__
        #define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline
        #define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline
        #else
        #else
        %0
        %0
        #endif
        #endif
        _EOArg_;
        _EOArg_;
    test_text = "#define _SIGINLINE extern __inline";
    test_text = "#define _SIGINLINE extern __inline";
};
};
/*
/*
 * NetBSD has a semicolon after the ending '}' for some extern "C".
 * NetBSD has a semicolon after the ending '}' for some extern "C".
 */
 */
fix = {
fix = {
    hackname  = netbsd_extra_semicolon;
    hackname  = netbsd_extra_semicolon;
    mach      = "*-*-netbsd*";
    mach      = "*-*-netbsd*";
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = "#define[ \t]*__END_DECLS[ \t]*};";
    select    = "#define[ \t]*__END_DECLS[ \t]*};";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define __END_DECLS }";
    c_fix_arg = "#define __END_DECLS }";
    test_text = "#define __END_DECLS };";
    test_text = "#define __END_DECLS };";
};
};
/* newlib's stdint.h has several failures to conform to C99.  The fix
/* newlib's stdint.h has several failures to conform to C99.  The fix
   for these removed a comment that can be matched to identify unfixed
   for these removed a comment that can be matched to identify unfixed
   versions.  */
   versions.  */
fix = {
fix = {
    hackname  = newlib_stdint_1;
    hackname  = newlib_stdint_1;
    files     = stdint-newlib.h, stdint.h;
    files     = stdint-newlib.h, stdint.h;
    select    = "@todo - Add support for wint_t types";
    select    = "@todo - Add support for wint_t types";
    sed       = "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@";
    sed       = "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@";
    sed       = "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@";
    sed       = "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@";
    sed       = "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@";
    sed       = "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@";
    sed       = "s@#define INT_LEAST32_MIN.*@#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)@";
    sed       = "s@#define INT_LEAST32_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 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 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]*\)_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 INT_FAST\([0-9]*\)_MAX.*@#define INT_FAST\1_MAX __INT_FAST\1_MAX__@';
    sed       = 's@#define UINT_FAST\([0-9]*\)_MAX.*@#define UINT_FAST\1_MAX __UINT_FAST\1_MAX__@';
    sed       = 's@#define UINT_FAST\([0-9]*\)_MAX.*@#define UINT_FAST\1_MAX __UINT_FAST\1_MAX__@';
    sed       = "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@";
    sed       = "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@";
    sed       = "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
    sed       = "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
    sed       = "s@#define PTRDIFF_MAX.*@#define PTRDIFF_MAX __PTRDIFF_MAX__@";
    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 UINT8_C.*@#define UINT8_C(c) __UINT8_C(c)@";
    sed       = "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@";
    sed       = "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@";
    test_text = "/* @todo - Add support for wint_t types. */\n"
    test_text = "/* @todo - Add support for wint_t types. */\n"
                "#define INT32_MIN (-2147483647-1)\n"
                "#define INT32_MIN (-2147483647-1)\n"
                "#define INT32_MAX 2147483647\n"
                "#define INT32_MAX 2147483647\n"
                "#define UINT32_MAX 4294967295U\n"
                "#define UINT32_MAX 4294967295U\n"
                "#define INT_LEAST32_MIN (-2147483647-1)\n"
                "#define INT_LEAST32_MIN (-2147483647-1)\n"
                "#define INT_LEAST32_MAX 2147483647\n"
                "#define INT_LEAST32_MAX 2147483647\n"
                "#define UINT_LEAST32_MAX 4294967295U\n"
                "#define UINT_LEAST32_MAX 4294967295U\n"
                "#define INT_FAST8_MIN INT8_MIN\n"
                "#define INT_FAST8_MIN INT8_MIN\n"
                "#define INT_FAST8_MAX INT8_MAX\n"
                "#define INT_FAST8_MAX INT8_MAX\n"
                "#define UINT_FAST8_MAX UINT8_MAX\n"
                "#define UINT_FAST8_MAX UINT8_MAX\n"
                "#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)\n"
                "#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)\n"
                "#define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)\n"
                "#define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)\n"
                "#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)\n"
                "#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)\n"
                "#define UINT8_C(x) x##U\n"
                "#define UINT8_C(x) x##U\n"
                "#define UINT16_C(x) x##U";
                "#define UINT16_C(x) x##U";
};
};
fix = {
fix = {
    hackname  = newlib_stdint_2;
    hackname  = newlib_stdint_2;
    files     = stdint-newlib.h, stdint.h;
    files     = stdint-newlib.h, stdint.h;
    select    = "@todo - Add support for wint_t types";
    select    = "@todo - Add support for wint_t types";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define INTMAX_MAX __INTMAX_MAX__\n"
    c_fix_arg = "#define INTMAX_MAX __INTMAX_MAX__\n"
                "#define INTMAX_MIN (-INTMAX_MAX - 1)\n"
                "#define INTMAX_MIN (-INTMAX_MAX - 1)\n"
                "#define UINTMAX_MAX __UINTMAX_MAX__\n"
                "#define UINTMAX_MAX __UINTMAX_MAX__\n"
                "#define WCHAR_MAX __WCHAR_MAX__\n"
                "#define WCHAR_MAX __WCHAR_MAX__\n"
                "#define WCHAR_MIN __WCHAR_MIN__\n"
                "#define WCHAR_MIN __WCHAR_MIN__\n"
                "#define WINT_MAX __WINT_MAX__\n"
                "#define WINT_MAX __WINT_MAX__\n"
                "#define WINT_MIN __WINT_MIN__\n\n"
                "#define WINT_MIN __WINT_MIN__\n\n"
                "%0";
                "%0";
    c_fix_arg = '/\*\* Macros for minimum-width integer constant expressions \*/';
    c_fix_arg = '/\*\* Macros for minimum-width integer constant expressions \*/';
    test_text = "/* @todo - Add support for wint_t types. */\n"
    test_text = "/* @todo - Add support for wint_t types. */\n"
                "/** Macros for minimum-width integer constant expressions */";
                "/** Macros for minimum-width integer constant expressions */";
};
};
/*
/*
 *  NeXT 3.2 adds const prefix to some math functions.
 *  NeXT 3.2 adds const prefix to some math functions.
 *  These conflict with the built-in functions.
 *  These conflict with the built-in functions.
 */
 */
fix = {
fix = {
    hackname  = next_math_prefix;
    hackname  = next_math_prefix;
    files     = ansi/math.h;
    files     = ansi/math.h;
    select    = "^extern[ \t]+double[ \t]+__const__[ \t]";
    select    = "^extern[ \t]+double[ \t]+__const__[ \t]";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern double %1(";
    c_fix_arg = "extern double %1(";
    c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(";
    c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(";
    test_text = "extern\tdouble\t__const__\tmumble();";
    test_text = "extern\tdouble\t__const__\tmumble();";
};
};
/*
/*
 *  NeXT 3.2 uses the word "template" as a parameter for some
 *  NeXT 3.2 uses the word "template" as a parameter for some
 *  functions. GCC reports an invalid use of a reserved key word
 *  functions. GCC reports an invalid use of a reserved key word
 *  with the built-in functions.
 *  with the built-in functions.
 */
 */
fix = {
fix = {
    hackname = next_template;
    hackname = next_template;
    files    = bsd/libc.h;
    files    = bsd/libc.h;
    select   = "[ \t]template\\)";
    select   = "[ \t]template\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "(%1)";
    c_fix_arg = "(%1)";
    c_fix_arg = "\\(([^)]*)[ \t]template\\)";
    c_fix_arg = "\\(([^)]*)[ \t]template\\)";
    test_text = "extern mumble( char * template); /* fix */";
    test_text = "extern mumble( char * template); /* fix */";
};
};
/*
/*
 *  NeXT 3.2 includes the keyword volatile in the abort() and  exit()
 *  NeXT 3.2 includes the keyword volatile in the abort() and  exit()
 *  function prototypes. That conflicts with the  built-in functions.
 *  function prototypes. That conflicts with the  built-in functions.
 */
 */
fix = {
fix = {
    hackname = next_volitile;
    hackname = next_volitile;
    files    = ansi/stdlib.h;
    files    = ansi/stdlib.h;
    select   = "^extern[ \t]+volatile[ \t]+void[ \t]";
    select   = "^extern[ \t]+volatile[ \t]+void[ \t]";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern void %1(";
    c_fix_arg = "extern void %1(";
    c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(";
    c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(";
    test_text = "extern\tvolatile\tvoid\tabort();";
    test_text = "extern\tvolatile\tvoid\tabort();";
};
};
/*
/*
 *  NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
 *  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,
 *  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
 *  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.
 *  conditional, so it doesn't need this fix.  So everything is okay.
 */
 */
fix = {
fix = {
    hackname  = next_wait_union;
    hackname  = next_wait_union;
    files     = sys/wait.h;
    files     = sys/wait.h;
    select    = 'wait\(union wait';
    select    = 'wait\(union wait';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "wait(void";
    c_fix_arg = "wait(void";
    test_text = "extern pid_d wait(union wait*);";
    test_text = "extern pid_d wait(union wait*);";
};
};
/*
/*
 *  a missing semi-colon at the end of the nodeent structure definition.
 *  a missing semi-colon at the end of the nodeent structure definition.
 */
 */
fix = {
fix = {
    hackname  = nodeent_syntax;
    hackname  = nodeent_syntax;
    files     = netdnet/dnetdb.h;
    files     = netdnet/dnetdb.h;
    select    = "char[ \t]*\\*na_addr[ \t]*$";
    select    = "char[ \t]*\\*na_addr[ \t]*$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0;";
    c_fix_arg = "%0;";
    test_text = "char *na_addr\t";
    test_text = "char *na_addr\t";
};
};
/*
/*
 * Fix OpenBSD's NULL definition.
 * Fix OpenBSD's NULL definition.
 */
 */
fix = {
fix = {
  hackname  = openbsd_null_definition;
  hackname  = openbsd_null_definition;
  mach      = "*-*-openbsd*";
  mach      = "*-*-openbsd*";
  files     = locale.h, stddef.h, stdio.h, string.h,
  files     = locale.h, stddef.h, stdio.h, string.h,
  time.h, unistd.h, wchar.h, sys/param.h;
  time.h, unistd.h, wchar.h, sys/param.h;
  select    = "__GNUG__";
  select    = "__GNUG__";
  c_fix = format;
  c_fix = format;
  c_fix_arg = "#ifndef NULL\n"
  c_fix_arg = "#ifndef NULL\n"
              "#ifdef __cplusplus\n"
              "#ifdef __cplusplus\n"
              "#ifdef __GNUG__\n"
              "#ifdef __GNUG__\n"
              "#define NULL\t__null\n"
              "#define NULL\t__null\n"
              "#else\t /* ! __GNUG__  */\n"
              "#else\t /* ! __GNUG__  */\n"
              "#define NULL\t0L\n"
              "#define NULL\t0L\n"
              "#endif\t /* __GNUG__  */\n"
              "#endif\t /* __GNUG__  */\n"
              "#else\t /* ! __cplusplus  */\n"
              "#else\t /* ! __cplusplus  */\n"
              "#define NULL\t((void *)0)\n"
              "#define NULL\t((void *)0)\n"
              "#endif\t /* __cplusplus  */\n"
              "#endif\t /* __cplusplus  */\n"
              "#endif\t /* !NULL  */";
              "#endif\t /* !NULL  */";
  c_fix_arg = "^#ifndef[ \t]*NULL\n"
  c_fix_arg = "^#ifndef[ \t]*NULL\n"
              "^#ifdef[ \t]*__GNUG__\n"
              "^#ifdef[ \t]*__GNUG__\n"
              "^#define[ \t]*NULL[ \t]*__null\n"
              "^#define[ \t]*NULL[ \t]*__null\n"
              "^#else\n"
              "^#else\n"
              "^#define[ \t]*NULL[ \t]*0L\n"
              "^#define[ \t]*NULL[ \t]*0L\n"
              "^#endif\n"
              "^#endif\n"
              "^#endif";
              "^#endif";
  test_text =
  test_text =
        "#ifndef NULL\n"
        "#ifndef NULL\n"
        "#ifdef  __GNUG__\n"
        "#ifdef  __GNUG__\n"
        "#define NULL    __null\n"
        "#define NULL    __null\n"
        "#else\n"
        "#else\n"
        "#define NULL    0L\n"
        "#define NULL    0L\n"
        "#endif\n"
        "#endif\n"
        "#endif\n";
        "#endif\n";
};
};
/*
/*
 *  obstack.h used casts as lvalues.
 *  obstack.h used casts as lvalues.
 *
 *
 *  We need to change postincrements of casted pointers (which are
 *  We need to change postincrements of casted pointers (which are
 *  then dereferenced and assigned into) of the form
 *  then dereferenced and assigned into) of the form
 *
 *
 *    *((TYPE*)PTRVAR)++ = (VALUE)
 *    *((TYPE*)PTRVAR)++ = (VALUE)
 *
 *
 *  into expressions like
 *  into expressions like
 *
 *
 *    ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE)))
 *    ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE)))
 *
 *
 *  which is correct for the cases used in obstack.h since PTRVAR is
 *  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.
 *  of type char * and the value of the expression is not used.
 */
 */
fix = {
fix = {
    hackname  = obstack_lvalue_cast;
    hackname  = obstack_lvalue_cast;
    files     = obstack.h;
    files     = obstack.h;
    select    = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)';
    select    = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))";
    c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))";
    test_text = "*((void **) (h)->next_free)++ = (aptr)";
    test_text = "*((void **) (h)->next_free)++ = (aptr)";
};
};
/*
/*
 * Fix OpenBSD's va_start define.
 * Fix OpenBSD's va_start define.
 */
 */
fix = {
fix = {
  hackname  = openbsd_va_start;
  hackname  = openbsd_va_start;
  mach      = "*-*-openbsd*";
  mach      = "*-*-openbsd*";
  files     = stdarg.h;
  files     = stdarg.h;
  select    = '__builtin_stdarg_start';
  select    = '__builtin_stdarg_start';
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = __builtin_va_start;
  c_fix_arg = __builtin_va_start;
  test_text = "#define va_start(v,l)   __builtin_stdarg_start((v),l)";
  test_text = "#define va_start(v,l)   __builtin_stdarg_start((v),l)";
};
};
/*
/*
 *  sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by
 *  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
 *  defining regex.h related types.  This causes libg++ build and usage
 *  failures.  Fixing this correctly requires checking and modifying 3 files.
 *  failures.  Fixing this correctly requires checking and modifying 3 files.
 */
 */
fix = {
fix = {
    hackname = osf_namespace_a;
    hackname = osf_namespace_a;
    files    = reg_types.h;
    files    = reg_types.h;
    files    = sys/lc_core.h;
    files    = sys/lc_core.h;
    test     = " -r reg_types.h";
    test     = " -r reg_types.h";
    test     = " -r sys/lc_core.h";
    test     = " -r sys/lc_core.h";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__%0";
    c_fix_arg = "__%0";
    c_fix_arg = "reg(ex|off|match)_t";
    c_fix_arg = "reg(ex|off|match)_t";
    test_text = "`touch sys/lc_core.h`"
    test_text = "`touch sys/lc_core.h`"
    "typedef struct {\n  int stuff, mo_suff;\n} regex_t;\n"
    "typedef struct {\n  int stuff, mo_suff;\n} regex_t;\n"
    "extern regex_t    re;\n"
    "extern regex_t    re;\n"
    "extern regoff_t   ro;\n"
    "extern regoff_t   ro;\n"
    "extern regmatch_t rm;\n";
    "extern regmatch_t rm;\n";
};
};
fix = {
fix = {
    hackname = osf_namespace_c;
    hackname = osf_namespace_c;
    files    = regex.h;
    files    = regex.h;
    test     = " -r reg_types.h";
    test     = " -r reg_types.h";
    test     = " -r sys/lc_core.h";
    test     = " -r sys/lc_core.h";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    select    = "#include .*";
    select    = "#include .*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
                "typedef __regex_t\tregex_t;\n"
                "typedef __regex_t\tregex_t;\n"
                "typedef __regoff_t\tregoff_t;\n"
                "typedef __regoff_t\tregoff_t;\n"
                "typedef __regmatch_t\tregmatch_t;";
                "typedef __regmatch_t\tregmatch_t;";
    test_text = "#include ";
    test_text = "#include ";
};
};
/*
/*
 * On broken glibc-2.3.3 systems an array of incomplete structures is
 * On broken glibc-2.3.3 systems an array of incomplete structures is
 * passed to __sigsetjmp.  Fix that to take a pointer instead.
 * passed to __sigsetjmp.  Fix that to take a pointer instead.
 */
 */
fix = {
fix = {
    hackname  = pthread_incomplete_struct_argument;
    hackname  = pthread_incomplete_struct_argument;
    files     = pthread.h;
    files     = pthread.h;
    select    = "struct __jmp_buf_tag";
    select    = "struct __jmp_buf_tag";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 *%2%3";
    c_fix_arg = "%1 *%2%3";
    c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) (__env)\\[1\\](.*)$";
    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);";
    test_text = "extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask);";
};
};
/*
/*
 *  Fix return type of fread and fwrite on sysV68
 *  Fix return type of fread and fwrite on sysV68
 */
 */
fix = {
fix = {
    hackname = read_ret_type;
    hackname = read_ret_type;
    files    = stdio.h;
    files    = stdio.h;
    select   = "extern int\t.*, fread\\(\\), fwrite\\(\\)";
    select   = "extern int\t.*, fread\\(\\), fwrite\\(\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2";
    c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2";
    c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)";
    c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)";
    test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();";
    test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();";
};
};
/*
/*
 *  Fix casts as lvalues in glibc's .
 *  Fix casts as lvalues in glibc's .
 */
 */
fix = {
fix = {
    hackname  = rpc_xdr_lvalue_cast_a;
    hackname  = rpc_xdr_lvalue_cast_a;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*";
    select    = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))";
    c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))";
    test_text = "#define IXDR_GET_LONG(buf) \\\\\n"
    test_text = "#define IXDR_GET_LONG(buf) \\\\\n"
                "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))";
                "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))";
};
};
fix = {
fix = {
    hackname  = rpc_xdr_lvalue_cast_b;
    hackname  = rpc_xdr_lvalue_cast_b;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*";
    select    = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))";
    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"
    test_text = "#define IXDR_PUT_LONG(buf, v) \\\\\n"
                "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))";
                "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))";
};
};
/*
/*
 *  function class(double x) conflicts with C++ keyword on rs/6000
 *  function class(double x) conflicts with C++ keyword on rs/6000
 */
 */
fix = {
fix = {
    hackname  = rs6000_double;
    hackname  = rs6000_double;
    files     = math.h;
    files     = math.h;
    select    = '[^a-zA-Z_]class\(';
    select    = '[^a-zA-Z_]class\(';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = '^.*[^a-zA-Z_]class\(.*';
    c_fix_arg = '^.*[^a-zA-Z_]class\(.*';
    test_text = "extern int class();";
    test_text = "extern int class();";
};
};
/*
/*
 *  Wrong fchmod prototype on RS/6000.
 *  Wrong fchmod prototype on RS/6000.
 */
 */
fix = {
fix = {
    hackname  = rs6000_fchmod;
    hackname  = rs6000_fchmod;
    files     = sys/stat.h;
    files     = sys/stat.h;
    select    = 'fchmod\(char \*';
    select    = 'fchmod\(char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "fchmod(int";
    c_fix_arg = "fchmod(int";
    test_text = "extern int fchmod(char *, mode_t);";
    test_text = "extern int fchmod(char *, mode_t);";
};
};
/*
/*
 *  parameters conflict with C++ new on rs/6000
 *  parameters conflict with C++ new on rs/6000
 */
 */
fix = {
fix = {
    hackname  = rs6000_param;
    hackname  = rs6000_param;
    files     = "stdio.h";
    files     = "stdio.h";
    files     = "unistd.h";
    files     = "unistd.h";
    select    = 'rename\(const char \*old, const char \*new\)';
    select    = 'rename\(const char \*old, const char \*new\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'rename(const char *_old, const char *_new)';
    c_fix_arg = 'rename(const char *_old, const char *_new)';
    test_text = 'extern int rename(const char *old, const char *new);';
    test_text = 'extern int rename(const char *old, const char *new);';
};
};
/*
/*
 * Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of
 * Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of
 * themselves, which are Sun Studio compiler intrinsics.  Remove _Imaginary_I
 * themselves, which are Sun Studio compiler intrinsics.  Remove _Imaginary_I
 * and imaginary definitions which are not supported by GCC.
 * and imaginary definitions which are not supported by GCC.
 */
 */
fix = {
fix = {
    hackname  = solaris_complex;
    hackname  = solaris_complex;
    mach      = "*-*-solaris2.*";
    mach      = "*-*-solaris2.*";
    files     = complex.h;
    files     = complex.h;
    select    = "#define[ \t]_Complex_I[ \t]_Complex_I";
    select    = "#define[ \t]_Complex_I[ \t]_Complex_I";
    sed       = "s/#define[ \t]_Complex_I[ \t]_Complex_I/"
    sed       = "s/#define[ \t]_Complex_I[ \t]_Complex_I/"
                "#define\t_Complex_I\t(__extension__ 1.0iF)/";
                "#define\t_Complex_I\t(__extension__ 1.0iF)/";
    sed       = "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d";
    sed       = "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d";
    sed       = "/#define[ \t]imaginary[ \t]_Imaginary/d";
    sed       = "/#define[ \t]imaginary[ \t]_Imaginary/d";
    sed       = "s/#define[ \t]I[ \t]\\{1,\\}_Imaginary_I/#define\tI\t\t_Complex_I/";
    sed       = "s/#define[ \t]I[ \t]\\{1,\\}_Imaginary_I/#define\tI\t\t_Complex_I/";
    test_text = "#define        _Complex_I      _Complex_I\n"
    test_text = "#define        _Complex_I      _Complex_I\n"
                "#define        complex         _Complex\n"
                "#define        complex         _Complex\n"
                "#define        _Imaginary_I    _Imaginary_I\n"
                "#define        _Imaginary_I    _Imaginary_I\n"
                "#define        imaginary       _Imaginary\n"
                "#define        imaginary       _Imaginary\n"
                "#undef I\n"
                "#undef I\n"
                "#define        I               _Imaginary_I";
                "#define        I               _Imaginary_I";
};
};
/*
/*
 * Solaris 8 PTHREAD_COND_INITIALIZER lacks the __pthread_cond_magic field.
 * Solaris 8 PTHREAD_COND_INITIALIZER lacks the __pthread_cond_magic field.
 * COND_MAGIC is only defined in  and pollutes the namespace, so
 * COND_MAGIC is only defined in  and pollutes the namespace, so
 * use the value literally instead.
 * use the value literally instead.
 */
 */
fix = {
fix = {
    hackname = solaris_cond_init;
    hackname = solaris_cond_init;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    mach = '*-*-solaris2.8';
    mach = '*-*-solaris2.8';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "%1, 0x4356%2";
    c_fix_arg = "%1, 0x4356%2";
    c_fix_arg = "^(#define[ \t]+PTHREAD_COND_INITIALIZER[ \t]+"
    c_fix_arg = "^(#define[ \t]+PTHREAD_COND_INITIALIZER[ \t]+"
                "\\{.*0)(\\},[ \t]*0\\}.*)$";
                "\\{.*0)(\\},[ \t]*0\\}.*)$";
    test_text =
    test_text =
    '#pragma ident      "@(#)pthread.h  1.29    01/07/07 SMI"'"\n"
    '#pragma ident      "@(#)pthread.h  1.29    01/07/07 SMI"'"\n"
    '#define    PTHREAD_COND_INITIALIZER        {{{0}, 0}, 0}   /* = DEFAULTCV */';
    '#define    PTHREAD_COND_INITIALIZER        {{{0}, 0}, 0}   /* = DEFAULTCV */';
};
};
/*
/*
 * Sun Solaris 10 defines several C99 math macros in terms of
 * Sun Solaris 10 defines several C99 math macros in terms of
 * builtins specific to the Studio compiler, in particular not
 * builtins specific to the Studio compiler, in particular not
 * compatible with the GNU compiler.
 * compatible with the GNU compiler.
 */
 */
fix = {
fix = {
    hackname = solaris_math_1;
    hackname = solaris_math_1;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
    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]+)";
    c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     HUGE_VAL\n"
    "#undef     HUGE_VAL\n"
    "#define    HUGE_VAL        __builtin_huge_val\n"
    "#define    HUGE_VAL        __builtin_huge_val\n"
    "#undef     HUGE_VALF\n"
    "#undef     HUGE_VALF\n"
    "#define    HUGE_VALF       __builtin_huge_valf\n"
    "#define    HUGE_VALF       __builtin_huge_valf\n"
    "#undef     HUGE_VALL\n"
    "#undef     HUGE_VALL\n"
    "#define    HUGE_VALL       __builtin_huge_vall";
    "#define    HUGE_VALL       __builtin_huge_vall";
};
};
fix = {
fix = {
    hackname = solaris_math_2;
    hackname = solaris_math_2;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
    c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
    c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
    c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     INFINITY\n"
    "#undef     INFINITY\n"
    "#define    INFINITY        __builtin_infinity";
    "#define    INFINITY        __builtin_infinity";
};
};
fix = {
fix = {
    hackname = solaris_math_3;
    hackname = solaris_math_3;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
    c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
    c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
    c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     NAN\n"
    "#undef     NAN\n"
    "#define    NAN     __builtin_nan";
    "#define    NAN     __builtin_nan";
};
};
fix = {
fix = {
    hackname = solaris_math_4;
    hackname = solaris_math_4;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tfpclassify(x) \\\n"
    c_fix_arg = "#define\tfpclassify(x) \\\n"
                "  __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (x))";
                "  __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (x))";
    c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
    c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     fpclassify\n"
    "#undef     fpclassify\n"
    "#define    fpclassify(x)   __builtin_fpclassify(x)";
    "#define    fpclassify(x)   __builtin_fpclassify(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_8;
    hackname = solaris_math_8;
    select = '@\(#\)math_c99\.h' "[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99\.h' "[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
    c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
                "\t\t\t   ? __builtin_signbitf(x) \\\n"
                "\t\t\t   ? __builtin_signbitf(x) \\\n"
                "\t\t\t   : sizeof(x) == sizeof(long double) \\\n"
                "\t\t\t   : sizeof(x) == sizeof(long double) \\\n"
                "\t\t\t     ? __builtin_signbitl(x) \\\n"
                "\t\t\t     ? __builtin_signbitl(x) \\\n"
                "\t\t\t     : __builtin_signbit(x))";
                "\t\t\t     : __builtin_signbit(x))";
    c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
    c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
    test_text = <<- _EOText_
    test_text = <<- _EOText_
        #ident  "@(#)math_c99.h 1.9     04/11/01 SMI"
        #ident  "@(#)math_c99.h 1.9     04/11/01 SMI"
        #undef  signbit
        #undef  signbit
        #define signbit(x)      __builtin_signbit(x)
        #define signbit(x)      __builtin_signbit(x)
        _EOText_;
        _EOText_;
};
};
fix = {
fix = {
    hackname = solaris_math_9;
    hackname = solaris_math_9;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
    c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
    c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
    c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     isgreater\n"
    "#undef     isgreater\n"
    "#define    isgreater(x, y)         ((x) __builtin_isgreater(y))\n"
    "#define    isgreater(x, y)         ((x) __builtin_isgreater(y))\n"
    "#undef     isgreaterequal\n"
    "#undef     isgreaterequal\n"
    "#define    isgreaterequal(x, y)    ((x) __builtin_isgreaterequal(y))\n"
    "#define    isgreaterequal(x, y)    ((x) __builtin_isgreaterequal(y))\n"
    "#undef     isless\n"
    "#undef     isless\n"
    "#define    isless(x, y)            ((x) __builtin_isless(y))\n"
    "#define    isless(x, y)            ((x) __builtin_isless(y))\n"
    "#undef     islessequal\n"
    "#undef     islessequal\n"
    "#define    islessequal(x, y)       ((x) __builtin_islessequal(y))\n"
    "#define    islessequal(x, y)       ((x) __builtin_islessequal(y))\n"
    "#undef     islessgreater\n"
    "#undef     islessgreater\n"
    "#define    islessgreater(x, y)     ((x) __builtin_islessgreater(y))\n"
    "#define    islessgreater(x, y)     ((x) __builtin_islessgreater(y))\n"
    "#undef     isunordered\n"
    "#undef     isunordered\n"
    "#define    isunordered(x, y)       ((x) __builtin_isunordered(y))";
    "#define    isunordered(x, y)       ((x) __builtin_isunordered(y))";
};
};
/*
/*
 * On Solaris 11, if you do isinf(NaN) you'll get a floating point
 * On Solaris 11, if you do isinf(NaN) you'll get a floating point
 * exception.  Provide an alternative using GCC's builtin.
 * exception.  Provide an alternative using GCC's builtin.
 */
 */
fix = {
fix = {
    hackname  = solaris_math_10;
    hackname  = solaris_math_10;
    select    = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select    = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files     = iso/math_c99.h;
    files     = iso/math_c99.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
    c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
    c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
    c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
                "[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \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]*\\|\\|[ \t]*\\\\\n"
                "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)";
                "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)";
    test_text =
    test_text =
    '#pragma ident      "@(#)math_c99.h 1.12    07/01/21 SMI"'"\n"
    '#pragma ident      "@(#)math_c99.h 1.12    07/01/21 SMI"'"\n"
    "#undef     isinf\n"
    "#undef     isinf\n"
    "#define    isinf(x)        __extension__( \\\\\n"
    "#define    isinf(x)        __extension__( \\\\\n"
    "                   { __typeof(x) __x_i = (x); \\\\\n"
    "                   { __typeof(x) __x_i = (x); \\\\\n"
    "                   __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
    "                   __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
    "                   __x_i == (__typeof(__x_i)) (-INFINITY); })";
    "                   __x_i == (__typeof(__x_i)) (-INFINITY); })";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
 * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
 * "0" for the last field of the pthread_mutex_t structure, which is
 * "0" for the last field of the pthread_mutex_t structure, which is
 * of type upad64_t, which itself is typedef'd to int64_t, but with
 * 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
 * __STDC__ defined (e.g. by -ansi) it is a union. So change the
 * initializer to "{0}" instead
 * initializer to "{0}" instead
 */
 */
fix = {
fix = {
    hackname = solaris_mutex_init_2;
    hackname = solaris_mutex_init_2;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    /*
    /*
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * always defined correctly regardless of the definition of the
     * always defined correctly regardless of the definition of the
     * __STDC__ macro.  The first "mach" pattern matches up to
     * __STDC__ macro.  The first "mach" pattern matches up to
     * solaris9.  The second "mach" pattern will not match any two (or
     * solaris9.  The second "mach" pattern will not match any two (or
     * more) digit solaris version, but it will match e.g. 2.5.1.
     * more) digit solaris version, but it will match e.g. 2.5.1.
     */
     */
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1, {0}}%4\n"
                "%1, {0}}%4\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+"
    c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+"
                "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
                "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
                ",[ \t]*0\\}" "(|[ \t].*)$";
                ",[ \t]*0\\}" "(|[ \t].*)$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
    "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
    "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
    "#define    PTHREAD_MUTEX_INITIALIZER               /* = DEFAULTMUTEX */    \\\\\n"
    "#define    PTHREAD_MUTEX_INITIALIZER               /* = DEFAULTMUTEX */    \\\\\n"
    "   {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n"
    "   {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n"
    "#define    PTHREAD_COND_INITIALIZER                /* = DEFAULTCV */       \\\\\n"
    "#define    PTHREAD_COND_INITIALIZER                /* = DEFAULTCV */       \\\\\n"
    "   {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}";
    "   {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
 * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
 *  fields of the pthread_rwlock_t structure, which are of type
 *  fields of the pthread_rwlock_t structure, which are of type
 *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
 *  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
 *  defined (e.g. by -ansi) it is a union. So change the initializer
 *  to "{0}" instead.
 *  to "{0}" instead.
 */
 */
fix = {
fix = {
    hackname = solaris_rwlock_init_1;
    hackname = solaris_rwlock_init_1;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    mach = '*-*-solaris*';
    mach = '*-*-solaris*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
                "%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
    c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
                "\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
                "\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#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}}";
    "#define PTHREAD_RWLOCK_INITIALIZER\t{0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a
 * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a
 * structure.  As such, it need two levels of brackets, but only
 * structure.  As such, it need two levels of brackets, but only
 * contains one.  Wrap the macro definition in an extra layer.
 * contains one.  Wrap the macro definition in an extra layer.
 */
 */
fix = {
fix = {
    hackname = solaris_once_init_1;
    hackname = solaris_once_init_1;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    mach = '*-*-solaris*';
    mach = '*-*-solaris*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "%1{%2}%3";
    c_fix_arg = "%1{%2}%3";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$";
    test_text =
    test_text =
    '#pragma ident      "@(#)pthread.h  1.37    04/09/28 SMI"'"\n"
    '#pragma ident      "@(#)pthread.h  1.37    04/09/28 SMI"'"\n"
    "#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}";
    "#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some
 * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some
 *  fields of the pthread_once_t structure, which are of type
 *  fields of the pthread_once_t structure, which are of type
 *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
 *  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
 *  defined (e.g. by -ansi) it is a union. So change the initializer
 *  to "{0}" instead.  This test relies on solaris_once_init_1.
 *  to "{0}" instead.  This test relies on solaris_once_init_1.
 */
 */
fix = {
fix = {
    hackname = solaris_once_init_2;
    hackname = solaris_once_init_2;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    /*
    /*
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * always defined correctly regardless of the definition of the
     * always defined correctly regardless of the definition of the
     * __STDC__ macro.  The first "mach" pattern matches up to
     * __STDC__ macro.  The first "mach" pattern matches up to
     * solaris9.  The second "mach" pattern will not match any two (or
     * solaris9.  The second "mach" pattern will not match any two (or
     * more) digit solaris version, but it will match e.g. 2.5.1.
     * more) digit solaris version, but it will match e.g. 2.5.1.
     */
     */
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1{0}, {0}, {0}, {%3}%4\n"
                "%1{0}, {0}, {0}, {%3}%4\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)"
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)"
                "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$";
                "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n";
    "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n";
};
};
/*
/*
 * Sun Solaris 2 has a version of sys/int_const.h that defines
 * Sun Solaris 2 has a version of sys/int_const.h that defines
 * UINT8_C and UINT16_C to unsigned constants.
 * UINT8_C and UINT16_C to unsigned constants.
 */
 */
fix = {
fix = {
    hackname  = solaris_int_const;
    hackname  = solaris_int_const;
    files     = sys/int_const.h;
    files     = sys/int_const.h;
    mach      = '*-*-solaris2*';
    mach      = '*-*-solaris2*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define\tUINT8_C(c)\t(c)\n"
    c_fix_arg = "#define\tUINT8_C(c)\t(c)\n"
                "%1\n"
                "%1\n"
                "#define\tUINT16_C(c)\t(c)";
                "#define\tUINT16_C(c)\t(c)";
    select    = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n"
    select    = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n"
                "(/\*.*\*/)\n"
                "(/\*.*\*/)\n"
                "#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*";
                "#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*";
    test_text =
    test_text =
    "#define    UINT8_C(c)      __CONCAT__(c,u)\n"
    "#define    UINT8_C(c)      __CONCAT__(c,u)\n"
    "/* CSTYLED */\n"
    "/* CSTYLED */\n"
    "#define    UINT16_C(c)     __CONCAT__(c,u)";
    "#define    UINT16_C(c)     __CONCAT__(c,u)";
};
};
/*
/*
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * UINT8_MAX and UINT16_MAX to unsigned constants.
 * UINT8_MAX and UINT16_MAX to unsigned constants.
 */
 */
fix = {
fix = {
    hackname  = solaris_int_limits_1;
    hackname  = solaris_int_limits_1;
    files     = sys/int_limits.h;
    files     = sys/int_limits.h;
    mach      = '*-*-solaris2*';
    mach      = '*-*-solaris2*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define\tUINT8_MAX\t(255)\n"
    c_fix_arg = "#define\tUINT8_MAX\t(255)\n"
                "#define\tUINT16_MAX\t(65535)";
                "#define\tUINT16_MAX\t(65535)";
    select    = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n"
    select    = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n"
                "#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)";
                "#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)";
    test_text =
    test_text =
    "#define    UINT8_MAX       (255U)\n"
    "#define    UINT8_MAX       (255U)\n"
    "#define    UINT16_MAX      (65535U)";
    "#define    UINT16_MAX      (65535U)";
};
};
/*
/*
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * INT_FAST16 limits to wrong values for sys/int_types.h.
 * INT_FAST16 limits to wrong values for sys/int_types.h.
 */
 */
fix = {
fix = {
    hackname  = solaris_int_limits_2;
    hackname  = solaris_int_limits_2;
    files     = sys/int_limits.h;
    files     = sys/int_limits.h;
    mach      = '*-*-solaris2*';
    mach      = '*-*-solaris2*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define\t%1_FAST16_%2 %132_%2";
    c_fix_arg = "#define\t%1_FAST16_%2 %132_%2";
    select    = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*";
    select    = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*";
    test_text =
    test_text =
    "#define    INT_FAST16_MAX INT16_MAX\n"
    "#define    INT_FAST16_MAX INT16_MAX\n"
    "#define    UINT_FAST16_MAX UINT16_MAX\n"
    "#define    UINT_FAST16_MAX UINT16_MAX\n"
    "#define    INT_FAST16_MIN  INT16_MIN";
    "#define    INT_FAST16_MIN  INT16_MIN";
};
};
/*
/*
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * Sun Solaris 2 has a version of sys/int_limits.h that defines
 * SIZE_MAX as unsigned long.
 * SIZE_MAX as unsigned long.
 */
 */
fix = {
fix = {
    hackname  = solaris_int_limits_3;
    hackname  = solaris_int_limits_3;
    files     = sys/int_limits.h;
    files     = sys/int_limits.h;
    mach      = '*-*-solaris2*';
    mach      = '*-*-solaris2*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define\tSIZE_MAX\t4294967295U";
    c_fix_arg = "#define\tSIZE_MAX\t4294967295U";
    select    = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL";
    select    = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL";
    test_text =
    test_text =
    "#define    SIZE_MAX        4294967295UL";
    "#define    SIZE_MAX        4294967295UL";
};
};
/*
/*
 * Sun Solaris up to 9 has a version of sys/int_types.h that forbids use
 * Sun Solaris up to 9 has a version of sys/int_types.h that forbids use
 * of Standard C99 64-bit types in 32-bit mode.
 * of Standard C99 64-bit types in 32-bit mode.
 */
 */
fix = {
fix = {
    hackname  = solaris_int_types;
    hackname  = solaris_int_types;
    select    = "__STDC__ - 0 == 0";
    select    = "__STDC__ - 0 == 0";
    bypass    = "_LONGLONG_TYPE";
    bypass    = "_LONGLONG_TYPE";
    files     = sys/int_types.h;
    files     = sys/int_types.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
    "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))";
    "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))";
    test_text =
    test_text =
    "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    "typedef    long long               int64_t;\n"
    "typedef    long long               int64_t;\n"
    "#endif\n\n"
    "#endif\n\n"
    "#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n"
    "#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n"
    "typedef int64_t                    intmax_t;\n"
    "typedef int64_t                    intmax_t;\n"
    "#endif";
    "#endif";
};
};
/*
/*
 * Sun Solaris 8 has what appears to be some gross workaround for
 * Sun Solaris 8 has what appears to be some gross workaround for
 * some old version of their c++ compiler.  G++ doesn't want it
 * some old version of their c++ compiler.  G++ doesn't want it
 * either, but doesn't want to be tied to SunPRO version numbers.
 * either, but doesn't want to be tied to SunPRO version numbers.
 */
 */
fix = {
fix = {
    hackname = solaris_stdio_tag;
    hackname = solaris_stdio_tag;
    files    = stdio_tag.h;
    files    = stdio_tag.h;
    select   = '__cplusplus < 54321L';
    select   = '__cplusplus < 54321L';
    /* In Solaris 10, the code in stdio_tag.h is conditionalized on
    /* In Solaris 10, the code in stdio_tag.h is conditionalized on
       "!defined(__GNUC__)" so we no longer need to fix it.  */
       "!defined(__GNUC__)" so we no longer need to fix it.  */
    bypass   = '__GNUC__';
    bypass   = '__GNUC__';
    sed      = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
    sed      = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
    test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
    test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
};
};
/*
/*
 *  a missing semi-colon at the end of the statsswtch structure definition.
 *  a missing semi-colon at the end of the statsswtch structure definition.
 */
 */
fix = {
fix = {
    hackname  = statsswtch;
    hackname  = statsswtch;
    files     = rpcsvc/rstat.h;
    files     = rpcsvc/rstat.h;
    select    = "boottime$";
    select    = "boottime$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "boottime;";
    c_fix_arg = "boottime;";
    test_text = "struct statswtch {\n  int boottime\n};";
    test_text = "struct statswtch {\n  int boottime\n};";
};
};
/*
/*
 *  Arrange for stdio.h to use stdarg.h to define __gnuc_va_list.
 *  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
 *  On 4BSD-derived systems, stdio.h defers to machine/ansi.h; that's
 *  OK too.
 *  OK too.
 */
 */
fix = {
fix = {
    hackname = stdio_stdarg_h;
    hackname = stdio_stdarg_h;
    files    = stdio.h;
    files    = stdio.h;
    bypass   = "include.*(stdarg\.h|machine/ansi\.h)";
    bypass   = "include.*(stdarg\.h|machine/ansi\.h)";
    /*
    /*
     * On Solaris 10, this fix is unncessary;  includes
     * On Solaris 10, this fix is unncessary;  includes
     * , which includes .
     * , which includes .
      */
      */
    mach     = '*-*-solaris2.1[0-9]*';
    mach     = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#define __need___va_list\n#include \n";
    c_fix_arg = "#define __need___va_list\n#include \n";
    test_text = "";
    test_text = "";
};
};
/*
/*
 *  Don't use or define the name va_list in stdio.h.  This is for
 *  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
 *  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
 *  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,
 *  indicate that the header knows what it's doing -- under SUSv2,
 *  stdio.h is required to define va_list, and we shouldn't break
 *  stdio.h is required to define va_list, and we shouldn't break
 *  that.  On IRIX 6.5, internal/wchar_core.h used to get its
 *  that.  On IRIX 6.5, internal/wchar_core.h used to get its
 *  definition of va_list from stdio.h.  Since this doesn't happen any
 *  definition of va_list from stdio.h.  Since this doesn't happen any
 *  longer, use __gnuc_va_list there, too.
 *  longer, use __gnuc_va_list there, too.
 */
 */
fix = {
fix = {
    hackname = stdio_va_list;
    hackname = stdio_va_list;
    files    = stdio.h;
    files    = stdio.h;
    files    = internal/stdio_core.h;
    files    = internal/stdio_core.h;
    files    = internal/wchar_core.h;
    files    = internal/wchar_core.h;
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    /*
    /*
     * On Solaris 10, the definition in
     * On Solaris 10, the definition in
     *  is guarded appropriately by the _XPG4 feature macro;
     *  is guarded appropriately by the _XPG4 feature macro;
     * there is therefore no need for this fix there.
     * there is therefore no need for this fix there.
     */
     */
    mach = '*-*-solaris2.1[0-9]*';
    mach = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    /*
    /*
     * Use __gnuc_va_list in arg types in place of va_list.
     * 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
     * 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
     * use __gnuc_va_list instead of __VA_LIST__.  We're hoping the
     * trailing parentheses and semicolon save all other systems from this.
     * trailing parentheses and semicolon save all other systems from this.
     * Define __not_va_list__ (something harmless and unused)
     * Define __not_va_list__ (something harmless and unused)
     * instead of va_list.
     * instead of va_list.
     * Don't claim to have defined va_list.
     * Don't claim to have defined va_list.
     */
     */
    sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
    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_));@ __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@*__not_va_list__@\n"
          "s@\\*va_list@*__not_va_list__@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
           "@typedef \\1 __not_va_list__;@\n"
           "@typedef \\1 __not_va_list__;@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@_Va_LIST@_VA_LIST@";
          "s@_Va_LIST@_VA_LIST@";
    test_text = "extern void mumble( va_list);";
    test_text = "extern void mumble( va_list);";
};
};
/*
/*
 *  Fix headers that use va_list from stdio.h to use the updated
 *  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
 *  va_list from the stdio_va_list change.  Note _BSD_VA_LIST_ is
 *  dealt with elsewhere.  The presence of __gnuc_va_list,
 *  dealt with elsewhere.  The presence of __gnuc_va_list,
 *  __DJ_va_list, or _G_va_list is taken to indicate that the header
 *  __DJ_va_list, or _G_va_list is taken to indicate that the header
 *  knows what it's doing.
 *  knows what it's doing.
 */
 */
fix = {
fix = {
    hackname = stdio_va_list_clients;
    hackname = stdio_va_list_clients;
    files    = com_err.h;
    files    = com_err.h;
    files    = cps.h;
    files    = cps.h;
    files    = curses.h;
    files    = curses.h;
    files    = krb5.h;
    files    = krb5.h;
    files    = lc_core.h;
    files    = lc_core.h;
    files    = pfmt.h;
    files    = pfmt.h;
    files    = wchar.h;
    files    = wchar.h;
    files    = curses_colr/curses.h;
    files    = curses_colr/curses.h;
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    /* Don't fix, if we use va_list from stdarg.h, or if the use is
    /* Don't fix, if we use va_list from stdarg.h, or if the use is
       otherwise protected.  */
       otherwise protected.  */
    bypass   = 'include |#ifdef va_start';
    bypass   = 'include |#ifdef va_start';
    /*
    /*
     * Use __gnuc_va_list in arg types in place of va_list.
     * 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
     * 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
     * use __gnuc_va_list instead of __VA_LIST__.  We're hoping the
     * trailing parentheses and semicolon save all other systems from this.
     * trailing parentheses and semicolon save all other systems from this.
     * Define __not_va_list__ (something harmless and unused)
     * Define __not_va_list__ (something harmless and unused)
     * instead of va_list.
     * instead of va_list.
     * Don't claim to have defined va_list.
     * Don't claim to have defined va_list.
     */
     */
    sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
    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_));@ __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@*__not_va_list__@\n"
          "s@\\*va_list@*__not_va_list__@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
           "@typedef \\1 __not_va_list__;@\n"
           "@typedef \\1 __not_va_list__;@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@_Va_LIST@_VA_LIST@";
          "s@_Va_LIST@_VA_LIST@";
    test_text = "extern void mumble( va_list);";
    test_text = "extern void mumble( va_list);";
};
};
/*
/*
 *  "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0"
 *  "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0"
 *  is "!defined( __STRICT_ANSI__ )"
 *  is "!defined( __STRICT_ANSI__ )"
 */
 */
fix = {
fix = {
    hackname = strict_ansi_not;
    hackname = strict_ansi_not;
    select   = "^([ \t]*#[ \t]*if.*)"
    select   = "^([ \t]*#[ \t]*if.*)"
               "(!__STDC__"
               "(!__STDC__"
               "|__STDC__[ \t]*==[ \t]*0"
               "|__STDC__[ \t]*==[ \t]*0"
               "|__STDC__[ \t]*!=[ \t]*1"
               "|__STDC__[ \t]*!=[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)";
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)";
    /* Tru64 UNIX V4.0F/V5.1  supports GCC usage of __STDC__. */
    /* Tru64 UNIX V4.0F/V5.1  supports GCC usage of __STDC__. */
    bypass = 'GNU and MIPS C compilers define __STDC__ differently';
    bypass = 'GNU and MIPS C compilers define __STDC__ differently';
    /* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which
    /* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which
       is not defined by GCC, so it is safe.  */
       is not defined by GCC, so it is safe.  */
    bypass = '__SCO_VERSION__.*__STDC__ != 1';
    bypass = '__SCO_VERSION__.*__STDC__ != 1';
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    test_text = "#if !__STDC__ \n"
    test_text = "#if !__STDC__ \n"
                "#if __STDC__ == 0\n"
                "#if __STDC__ == 0\n"
                "#if __STDC__ != 1\n"
                "#if __STDC__ != 1\n"
                "#if __STDC__ - 0 == 0"
                "#if __STDC__ - 0 == 0"
               "/* not std C */\nint foo;\n"
               "/* not std C */\nint foo;\n"
               "\n#end-end-end-end-if :-)";
               "\n#end-end-end-end-if :-)";
};
};
/*
/*
 *  "__STDC__-0==0"
 *  "__STDC__-0==0"
 *  is "!defined( __STRICT_ANSI__ )" on continued #if-s
 *  is "!defined( __STRICT_ANSI__ )" on continued #if-s
 */
 */
fix = {
fix = {
    hackname = strict_ansi_not_ctd;
    hackname = strict_ansi_not_ctd;
    files    = math.h, limits.h, stdio.h, signal.h,
    files    = math.h, limits.h, stdio.h, signal.h,
               stdlib.h, sys/signal.h, time.h;
               stdlib.h, sys/signal.h, time.h;
    /*
    /*
     * Starting at the beginning of a line, skip white space and
     * Starting at the beginning of a line, skip white space and
     * a leading "(" or "&&" or "||".  One of those must be found.
     * a leading "(" or "&&" or "||".  One of those must be found.
     * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&"
     * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&"
     * expression.  If these are nested, then they must accumulate
     * expression.  If these are nested, then they must accumulate
     * because we won't match any closing parentheses.  Finally,
     * because we won't match any closing parentheses.  Finally,
     * after skipping over all that, we must then match our suspect
     * after skipping over all that, we must then match our suspect
     * phrase:  "__STDC__-0==0" with or without white space.
     * phrase:  "__STDC__-0==0" with or without white space.
     */
     */
    select   = "^([ \t]*" '(\(|&&|\|\|)'
    select   = "^([ \t]*" '(\(|&&|\|\|)'
               "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*"
               "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*"
               "[ \t(]*)"
               "[ \t(]*)"
               "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)";
               "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)";
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    test_text = "#if 1 && \\\\\n"
    test_text = "#if 1 && \\\\\n"
               "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n"
               "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n"
               "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n"
               "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n"
               "|| __STDC__ - 0 == 0 ) /* not std C */\n"
               "|| __STDC__ - 0 == 0 ) /* not std C */\n"
               "int foo;\n#endif";
               "int foo;\n#endif";
};
};
/*
/*
 *  "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1"
 *  "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1"
 *  is "defined( __STRICT_ANSI__ )"
 *  is "defined( __STRICT_ANSI__ )"
 */
 */
fix = {
fix = {
    hackname = strict_ansi_only;
    hackname = strict_ansi_only;
    select   = "^([ \t]*#[ \t]*if.*)"
    select   = "^([ \t]*#[ \t]*if.*)"
               "(__STDC__[ \t]*!=[ \t]*0"
               "(__STDC__[ \t]*!=[ \t]*0"
               "|__STDC__[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)";
               "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)";
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 defined(__STRICT_ANSI__)";
    test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif";
    test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif";
};
};
/*
/*
 *  IRIX 4.0.5  uses struct __file_s
 *  IRIX 4.0.5  uses struct __file_s
 *  in prototype without previous definition.
 *  in prototype without previous definition.
 */
 */
fix = {
fix = {
    hackname  = struct_file;
    hackname  = struct_file;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = '^.*xdrstdio_create.*struct __file_s';
    select    = '^.*xdrstdio_create.*struct __file_s';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct __file_s;\n%0";
    c_fix_arg = "struct __file_s;\n%0";
    test_text = "extern void xdrstdio_create( struct __file_s* );";
    test_text = "extern void xdrstdio_create( struct __file_s* );";
};
};
/*
/*
 *  IRIX 4.0.5  uses struct sockaddr
 *  IRIX 4.0.5  uses struct sockaddr
 *  in prototype without previous definition.
 *  in prototype without previous definition.
 *
 *
 *  Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same
 *  Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same
 *  function, and does define it.
 *  function, and does define it.
 */
 */
fix = {
fix = {
    hackname  = struct_sockaddr;
    hackname  = struct_sockaddr;
    files     = rpc/auth.h;
    files     = rpc/auth.h;
    select    = "^.*authdes_create.*struct sockaddr[^_]";
    select    = "^.*authdes_create.*struct sockaddr[^_]";
    bypass    = "";
    bypass    = "";
    bypass    = "struct sockaddr;\n";
    bypass    = "struct sockaddr;\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct sockaddr;\n%0";
    c_fix_arg = "struct sockaddr;\n%0";
    test_text = "extern AUTH* authdes_create( struct sockaddr* );";
    test_text = "extern AUTH* authdes_create( struct sockaddr* );";
};
};
/*
/*
 *  Apply fix this to all OSs since this problem seems to effect
 *  Apply fix this to all OSs since this problem seems to effect
 *  more than just SunOS.
 *  more than just SunOS.
 */
 */
fix = {
fix = {
    hackname = sun_auth_proto;
    hackname = sun_auth_proto;
    files    = rpc/auth.h;
    files    = rpc/auth.h;
    files    = rpc/clnt.h;
    files    = rpc/clnt.h;
    files    = rpc/svc.h;
    files    = rpc/svc.h;
    files    = rpc/xdr.h;
    files    = rpc/xdr.h;
    bypass   = "__cplusplus";
    bypass   = "__cplusplus";
    /*
    /*
     *  Select those files containing '(*name)()'.
     *  Select those files containing '(*name)()'.
     */
     */
    select    = '\(\*[a-z][a-z_]*\)\(\)';
    select    = '\(\*[a-z][a-z_]*\)\(\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n"
    c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n"
                "#else\n%1();%2\n#endif";
                "#else\n%1();%2\n#endif";
    c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)';
    c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)';
    test_text =
    test_text =
    "struct auth_t {\n"
    "struct auth_t {\n"
    "    int (*name)(); /* C++ bad */\n"
    "    int (*name)(); /* C++ bad */\n"
    "};";
    "};";
};
};
/*
/*
 *  Fix bogus #ifdef on SunOS 4.1.
 *  Fix bogus #ifdef on SunOS 4.1.
 */
 */
fix = {
fix = {
    hackname  = sun_bogus_ifdef;
    hackname  = sun_bogus_ifdef;
    files     = "hsfs/hsfs_spec.h";
    files     = "hsfs/hsfs_spec.h";
    files     = "hsfs/iso_spec.h";
    files     = "hsfs/iso_spec.h";
    select    = '#ifdef(.*\|\|.*)';
    select    = '#ifdef(.*\|\|.*)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if%1";
    c_fix_arg = "#if%1";
    test_text = "#ifdef  __i386__ || __vax__ || __sun4c__";
    test_text = "#ifdef  __i386__ || __vax__ || __sun4c__";
};
};
/*
/*
 *  Fix the CAT macro in SunOS memvar.h.
 *  Fix the CAT macro in SunOS memvar.h.
 */
 */
fix = {
fix = {
    hackname  = sun_catmacro;
    hackname  = sun_catmacro;
    files     = pixrect/memvar.h;
    files     = pixrect/memvar.h;
    select    = "^#define[ \t]+CAT\\(a,b\\).*";
    select    = "^#define[ \t]+CAT\\(a,b\\).*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
    "#ifdef __STDC__\n"
    "#ifdef __STDC__\n"
    "#  define CAT(a,b) a##b\n"
    "#  define CAT(a,b) a##b\n"
    "#else\n%0\n#endif";
    "#else\n%0\n#endif";
    test_text =
    test_text =
    "#define CAT(a,b)\ta/**/b";
    "#define CAT(a,b)\ta/**/b";
};
};
/*
/*
 *  Fix return type of free and {c,m,re}alloc in  on SunOS 4.1.
 *  Fix return type of free and {c,m,re}alloc in  on SunOS 4.1.
 *  Also fix return type of {m,re}alloc in  on sysV68
 *  Also fix return type of {m,re}alloc in  on sysV68
 */
 */
fix = {
fix = {
    hackname = sun_malloc;
    hackname = sun_malloc;
    files    = malloc.h;
    files    = malloc.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    sed   = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
    sed   = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
    sed   = "s/int[ \t][ \t]*free/void\tfree/g";
    sed   = "s/int[ \t][ \t]*free/void\tfree/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g";
    test_text =
    test_text =
    "typedef char *\tmalloc_t;\n"
    "typedef char *\tmalloc_t;\n"
    "int \tfree();\n"
    "int \tfree();\n"
    "char*\tmalloc();\n"
    "char*\tmalloc();\n"
    "char*\tcalloc();\n"
    "char*\tcalloc();\n"
    "char*\trealloc();";
    "char*\trealloc();";
};
};
/*
/*
 *  Check for yet more missing ';' in struct (in SunOS 4.0.x)
 *  Check for yet more missing ';' in struct (in SunOS 4.0.x)
 */
 */
fix = {
fix = {
    hackname = sun_rusers_semi;
    hackname = sun_rusers_semi;
    files    = rpcsvc/rusers.h;
    files    = rpcsvc/rusers.h;
    select   = "_cnt$";
    select   = "_cnt$";
    sed      = "/^struct/,/^};/s/_cnt$/_cnt;/";
    sed      = "/^struct/,/^};/s/_cnt$/_cnt;/";
    test_text = "struct mumble\n  int _cnt\n};";
    test_text = "struct mumble\n  int _cnt\n};";
};
};
/*
/*
 *  signal.h on SunOS defines signal using (),
 *  signal.h on SunOS defines signal using (),
 *  which causes trouble when compiling with g++ -pedantic.
 *  which causes trouble when compiling with g++ -pedantic.
 */
 */
fix = {
fix = {
    hackname = sun_signal;
    hackname = sun_signal;
    files    = sys/signal.h;
    files    = sys/signal.h;
    files    = signal.h;
    files    = signal.h;
    select   = "^void\t" '\(\*signal\(\)\)\(\);.*';
    select   = "^void\t" '\(\*signal\(\)\)\(\);.*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
          "#ifdef __cplusplus\n"
          "#ifdef __cplusplus\n"
          "void\t(*signal(...))(...);\n"
          "void\t(*signal(...))(...);\n"
          "#else\n%0\n#endif";
          "#else\n%0\n#endif";
    test_text = "void\t(*signal())();";
    test_text = "void\t(*signal())();";
};
};
/*
/*
 *  Correct the return type for strlen in strings.h in SunOS 4.
 *  Correct the return type for strlen in strings.h in SunOS 4.
 */
 */
fix = {
fix = {
    hackname = sunos_strlen;
    hackname = sunos_strlen;
    files    = strings.h;
    files    = strings.h;
    select   = "int[ \t]*strlen\\(\\);(.*)";
    select   = "int[ \t]*strlen\\(\\);(.*)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__SIZE_TYPE__ strlen();%1";
    c_fix_arg = "__SIZE_TYPE__ strlen();%1";
    test_text = " int\tstrlen(); /* string length */";
    test_text = " int\tstrlen(); /* string length */";
};
};
/*
/*
 *  Disable apparent native compiler optimization cruft in SVR4.2 
 *  Disable apparent native compiler optimization cruft in SVR4.2 
 *  that is visible to any ANSI compiler using this include.  Simply
 *  that is visible to any ANSI compiler using this include.  Simply
 *  delete the lines that #define some string functions to internal forms.
 *  delete the lines that #define some string functions to internal forms.
 */
 */
fix = {
fix = {
    hackname = svr4_disable_opt;
    hackname = svr4_disable_opt;
    files    = string.h;
    files    = string.h;
    select   = '#define.*__std_hdr_';
    select   = '#define.*__std_hdr_';
    sed      = '/#define.*__std_hdr_/d';
    sed      = '/#define.*__std_hdr_/d';
    test_text = "#define strlen __std_hdr_strlen\n";
    test_text = "#define strlen __std_hdr_strlen\n";
};
};
/*
/*
 *   Fix broken decl of getcwd present on some svr4 systems.
 *   Fix broken decl of getcwd present on some svr4 systems.
 */
 */
fix = {
fix = {
    hackname = svr4_getcwd;
    hackname = svr4_getcwd;
    files    = stdlib.h;
    files    = stdlib.h;
    files    = unistd.h;
    files    = unistd.h;
    files    = prototypes.h;
    files    = prototypes.h;
    select   = 'getcwd\(char \*, int\)';
    select   = 'getcwd\(char \*, int\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "getcwd(char *, size_t)";
    c_fix_arg = "getcwd(char *, size_t)";
    test_text = "extern char* getcwd(char *, int);";
    test_text = "extern char* getcwd(char *, int);";
};
};
/*
/*
 *   Fix broken decl of profil present on some svr4 systems.
 *   Fix broken decl of profil present on some svr4 systems.
 */
 */
fix = {
fix = {
    hackname = svr4_profil;
    hackname = svr4_profil;
    files    = stdlib.h;
    files    = stdlib.h;
    files    = unistd.h;
    files    = unistd.h;
    select    =
    select    =
    'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)';
    'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)';
    /* The fix is wrong on IRIX 5/6 and creates a conflict with another
    /* The fix is wrong on IRIX 5/6 and creates a conflict with another
       prototype in .  */
       prototype in .  */
    bypass    = 'Silicon Graphics';
    bypass    = 'Silicon Graphics';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)';
    c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)';
    test_text =
    test_text =
    'profil(unsigned short *, unsigned int, unsigned int, unsigned int);';
    'profil(unsigned short *, unsigned int, unsigned int, unsigned int);';
};
};
/*
/*
 * Correct types for signal handler constants like SIG_DFL; they might be
 * Correct types for signal handler constants like SIG_DFL; they might be
 * void (*) (), and should be void (*) (int).  C++ doesn't like the
 * void (*) (), and should be void (*) (int).  C++ doesn't like the
 * old style.
 * old style.
 */
 */
fix = {
fix = {
    hackname = svr4_sighandler_type;
    hackname = svr4_sighandler_type;
    files = sys/signal.h;
    files = sys/signal.h;
    select = 'void *\(\*\)\(\)';
    select = 'void *\(\*\)\(\)';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "void (*)(int)";
    c_fix_arg = "void (*)(int)";
    test_text = "#define SIG_DFL (void(*)())0\n"
    test_text = "#define SIG_DFL (void(*)())0\n"
                "#define SIG_IGN (void (*)())0\n";
                "#define SIG_IGN (void (*)())0\n";
};
};
/*
/*
 *  Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local
 *  Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local
 *  function 'getrnge' in  before they declare it.  For these
 *  function 'getrnge' in  before they declare it.  For these
 *  systems add a 'static int' declaration of 'getrnge' into 
 *  systems add a 'static int' declaration of 'getrnge' into 
 *  early on.
 *  early on.
 *
 *
 *  'getrnge' traditionally manipulates a file-scope global called 'size',
 *  'getrnge' traditionally manipulates a file-scope global called 'size',
 *  so put the declaration right after the declaration of 'size'.
 *  so put the declaration right after the declaration of 'size'.
 *
 *
 *  Don't do this if there is already a `static void getrnge' declaration
 *  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
 *  present, since this would cause a redeclaration error.  Solaris 2.x has
 *  such a declaration.
 *  such a declaration.
 */
 */
fix = {
fix = {
    hackname  = svr4_undeclared_getrnge;
    hackname  = svr4_undeclared_getrnge;
    files     = regexp.h;
    files     = regexp.h;
    select    = "getrnge";
    select    = "getrnge";
    bypass    = "static void getrnge";
    bypass    = "static void getrnge";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
                "static int getrnge ();";
                "static int getrnge ();";
    c_fix_arg = "^static int[ \t]+size;";
    c_fix_arg = "^static int[ \t]+size;";
    test_text = "static int size;\n"
    test_text = "static int size;\n"
                "/* stuff which calls getrnge() */\n"
                "/* stuff which calls getrnge() */\n"
                "static getrnge()\n"
                "static getrnge()\n"
                "{}";
                "{}";
};
};
/*
/*
 *  Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
 *  Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
 *  in string.h on sysV68
 *  in string.h on sysV68
 *  Correct the return type for strlen in string.h on Lynx.
 *  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.
 *  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.
 *  Add missing const for strdup on OSF/1 V3.0.
 *  On sysV88 layout is slightly different.
 *  On sysV88 layout is slightly different.
 */
 */
fix = {
fix = {
    hackname = sysv68_string;
    hackname = sysv68_string;
    files    = testing.h;
    files    = testing.h;
    files    = string.h;
    files    = string.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    sed = "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/";
    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/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/";
    sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
    sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
    sed = "/^extern char$/N";
    sed = "/^extern char$/N";
    sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
    sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
    sed = "/^extern int$/N";
    sed = "/^extern int$/N";
    sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
    sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
    sed = "/^\tstrncmp(),$/N";
    sed = "/^\tstrncmp(),$/N";
    sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/'
    sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/'
            '\1;' "\\\nextern unsigned int\\\n\\2/";
            '\1;' "\\\nextern unsigned int\\\n\\2/";
    test_text =
    test_text =
    "extern int strlen();\n"
    "extern int strlen();\n"
    "extern int ffs(long);\n"
    "extern int ffs(long);\n"
    "extern char\n"
    "extern char\n"
    "\t*memccpy(),\n"
    "\t*memccpy(),\n"
    "\tmemcpy();\n"
    "\tmemcpy();\n"
    "extern int\n"
    "extern int\n"
    "\tstrcmp(),\n"
    "\tstrcmp(),\n"
    "\tstrncmp(),\n"
    "\tstrncmp(),\n"
    "\tstrlen(),\n"
    "\tstrlen(),\n"
    "\tstrspn();\n"
    "\tstrspn();\n"
    "extern int\n"
    "extern int\n"
    "\tstrlen(), strspn();";
    "\tstrlen(), strspn();";
};
};
/*
/*
 *  Fix return type of calloc, malloc, realloc, bsearch and exit
 *  Fix return type of calloc, malloc, realloc, bsearch and exit
 */
 */
fix = {
fix = {
    hackname = sysz_stdlib_for_sun;
    hackname = sysz_stdlib_for_sun;
    files    = stdlib.h;
    files    = stdlib.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    select    = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
    select    = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void *\t%1(";
    c_fix_arg = "void *\t%1(";
    test_text =
    test_text =
    "extern char*\tcalloc(size_t);\n"
    "extern char*\tcalloc(size_t);\n"
    "extern char*\tmalloc(size_t);\n"
    "extern char*\tmalloc(size_t);\n"
    "extern char*\trealloc(void*,size_t);\n"
    "extern char*\trealloc(void*,size_t);\n"
    "extern char*\tbsearch(void*,size_t,size_t);\n";
    "extern char*\tbsearch(void*,size_t,size_t);\n";
};
};
/*
/*
 * __thread is now a keyword.
 * __thread is now a keyword.
 */
 */
fix = {
fix = {
    hackname  = thread_keyword;
    hackname  = thread_keyword;
    files     = "pthread.h";
    files     = "pthread.h";
    files     = "bits/sigthread.h";
    files     = "bits/sigthread.h";
    select    = "([* ])__thread([,)])";
    select    = "([* ])__thread([,)])";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1__thr%2";
    c_fix_arg = "%1__thr%2";
    test_text =
    test_text =
        "extern int pthread_create (pthread_t *__restrict __thread,\n"
        "extern int pthread_create (pthread_t *__restrict __thread,\n"
        "extern int pthread_kill (pthread_t __thread, int __signo);\n"
        "extern int pthread_kill (pthread_t __thread, int __signo);\n"
        "extern int pthread_cancel (pthread_t __thread);";
        "extern int pthread_cancel (pthread_t __thread);";
};
};
/*
/*
 *  if the #if says _cplusplus, not the double underscore __cplusplus
 *  if the #if says _cplusplus, not the double underscore __cplusplus
 *  that it should be
 *  that it should be
 */
 */
fix = {
fix = {
    hackname = tinfo_cplusplus;
    hackname = tinfo_cplusplus;
    files    = tinfo.h;
    files    = tinfo.h;
    select   = "[ \t]_cplusplus";
    select   = "[ \t]_cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = " __cplusplus";
    c_fix_arg = " __cplusplus";
    test_text = "#ifdef _cplusplus\nint bogus;\n#endif";
    test_text = "#ifdef _cplusplus\nint bogus;\n#endif";
};
};
/*
/*
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 */
 */
fix = {
fix = {
    hackname  = ultrix_const;
    hackname  = ultrix_const;
    files     = stdio.h;
    files     = stdio.h;
    select    = 'perror\( char \*';
    select    = 'perror\( char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)"
    c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)"
                "[ \t]+(char|void) \\*__";
                "[ \t]+(char|void) \\*__";
    test_text =
    test_text =
    "extern void perror( char *__s );\n"
    "extern void perror( char *__s );\n"
    "extern int fputs( char *__s, FILE *);\n"
    "extern int fputs( char *__s, FILE *);\n"
    "extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n"
    "extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n"
    "extern int fscanf( FILE *__stream, char *__format, ...);\n"
    "extern int fscanf( FILE *__stream, char *__format, ...);\n"
    "extern int scanf( char *__format, ...);\n";
    "extern int scanf( char *__format, ...);\n";
};
};
/*
/*
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 */
 */
fix = {
fix = {
    hackname  = ultrix_const2;
    hackname  = ultrix_const2;
    files     = stdio.h;
    files     = stdio.h;
    select    = '\*fopen\( char \*';
    select    = '\*fopen\( char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1( const char *%3, const char *";
    c_fix_arg = "%1( const char *%3, const char *";
    c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\("
    c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\("
               "[ \t]*char[ \t]*\\*([^,]*),"
               "[ \t]*char[ \t]*\\*([^,]*),"
               "[ \t]*char[ \t]*\\*[ \t]*";
               "[ \t]*char[ \t]*\\*[ \t]*";
    test_text =
    test_text =
    "extern FILE *fopen( char *__filename, char *__type );\n"
    "extern FILE *fopen( char *__filename, char *__type );\n"
    "extern int sscanf( char *__s, char *__format, ...);\n"
    "extern int sscanf( char *__s, char *__format, ...);\n"
    "extern FILE *popen(char *, char *);\n"
    "extern FILE *popen(char *, char *);\n"
    "extern char *tempnam(char*,char*);\n";
    "extern char *tempnam(char*,char*);\n";
};
};
/*
/*
 *  Fix definitions of macros used by va-i960.h in VxWorks header file.
 *  Fix definitions of macros used by va-i960.h in VxWorks header file.
 */
 */
fix = {
fix = {
    hackname  = va_i960_macro;
    hackname  = va_i960_macro;
    files     = arch/i960/archI960.h;
    files     = arch/i960/archI960.h;
    select    = "__(vsiz|vali|vpad|alignof__)";
    select    = "__(vsiz|vali|vpad|alignof__)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__vx%1";
    c_fix_arg = "__vx%1";
    test_text =
    test_text =
    "extern int __vsiz vsiz;\n"
    "extern int __vsiz vsiz;\n"
    "extern int __vali vali;\n"
    "extern int __vali vali;\n"
    "extern int __vpad vpad;\n"
    "extern int __vpad vpad;\n"
    "#define __alignof__(x) ...";
    "#define __alignof__(x) ...";
};
};
/*
/*
 *  AIX and Interix headers define NULL to be cast to a void pointer,
 *  AIX and Interix headers define NULL to be cast to a void pointer,
 *  which is illegal in ANSI C++.
 *  which is illegal in ANSI C++.
 */
 */
fix = {
fix = {
    hackname  = void_null;
    hackname  = void_null;
    files     = curses.h;
    files     = curses.h;
    files     = dbm.h;
    files     = dbm.h;
    files     = locale.h;
    files     = locale.h;
    files     = stdio.h;
    files     = stdio.h;
    files     = stdlib.h;
    files     = stdlib.h;
    files     = string.h;
    files     = string.h;
    files     = time.h;
    files     = time.h;
    files     = unistd.h;
    files     = unistd.h;
    files     = sys/dir.h;
    files     = sys/dir.h;
    files     = sys/param.h;
    files     = sys/param.h;
    files     = sys/types.h;
    files     = sys/types.h;
    /* avoid changing C++ friendly NULL */
    /* avoid changing C++ friendly NULL */
    bypass    = __cplusplus;
    bypass    = __cplusplus;
    select    = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
    select    = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define NULL 0";
    c_fix_arg = "#define NULL 0";
    test_text = "# define\tNULL \t((void *)0)  /* typed NULL */";
    test_text = "# define\tNULL \t((void *)0)  /* typed NULL */";
};
};
/*
/*
 *  Make VxWorks header which is almost gcc ready fully gcc ready.
 *  Make VxWorks header which is almost gcc ready fully gcc ready.
 */
 */
fix = {
fix = {
    hackname = vxworks_gcc_problem;
    hackname = vxworks_gcc_problem;
    files    = types/vxTypesBase.h;
    files    = types/vxTypesBase.h;
    select   = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
    select   = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
    sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
    sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
          "#if 1/";
          "#if 1/";
    sed = "/[ \t]size_t/i\\\n"
    sed = "/[ \t]size_t/i\\\n"
        "#ifndef _GCC_SIZE_T\\\n"
        "#ifndef _GCC_SIZE_T\\\n"
        "#define _GCC_SIZE_T\n";
        "#define _GCC_SIZE_T\n";
    sed = "/[ \t]size_t/a\\\n"
    sed = "/[ \t]size_t/a\\\n"
        "#endif\n";
        "#endif\n";
    sed = "/[ \t]ptrdiff_t/i\\\n"
    sed = "/[ \t]ptrdiff_t/i\\\n"
        "#ifndef _GCC_PTRDIFF_T\\\n"
        "#ifndef _GCC_PTRDIFF_T\\\n"
        "#define _GCC_PTRDIFF_T\n";
        "#define _GCC_PTRDIFF_T\n";
    sed = "/[ \t]ptrdiff_t/a\\\n"
    sed = "/[ \t]ptrdiff_t/a\\\n"
        "#endif\n";
        "#endif\n";
    sed = "/[ \t]wchar_t/i\\\n"
    sed = "/[ \t]wchar_t/i\\\n"
        "#ifndef _GCC_WCHAR_T\\\n"
        "#ifndef _GCC_WCHAR_T\\\n"
        "#define _GCC_WCHAR_T\n";
        "#define _GCC_WCHAR_T\n";
    sed = "/[ \t]wchar_t/a\\\n"
    sed = "/[ \t]wchar_t/a\\\n"
        "#endif\n";
        "#endif\n";
    test_text =
    test_text =
    "#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n"
    "#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n"
    "typedef unsigned int size_t;\n"
    "typedef unsigned int size_t;\n"
    "typedef long ptrdiff_t;\n"
    "typedef long ptrdiff_t;\n"
    "typedef unsigned short wchar_t;\n"
    "typedef unsigned short wchar_t;\n"
    "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
    "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
};
};
/*
/*
 *  Fix VxWorks  to not require including .
 *  Fix VxWorks  to not require including .
 */
 */
fix = {
fix = {
    hackname  = vxworks_needs_vxtypes;
    hackname  = vxworks_needs_vxtypes;
    files     = time.h;
    files     = time.h;
    select    = "uint_t([ \t]+_clocks_per_sec)";
    select    = "uint_t([ \t]+_clocks_per_sec)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "unsigned int%1";
    c_fix_arg = "unsigned int%1";
    test_text = "uint_t\t_clocks_per_sec;";
    test_text = "uint_t\t_clocks_per_sec;";
};
};
/*
/*
 *  Fix VxWorks  to not require including .
 *  Fix VxWorks  to not require including .
 */
 */
fix = {
fix = {
    hackname = vxworks_needs_vxworks;
    hackname = vxworks_needs_vxworks;
    files    = sys/stat.h;
    files    = sys/stat.h;
    test     = " -r types/vxTypesOld.h";
    test     = " -r types/vxTypesOld.h";
    test     = " -n \"`egrep '#include' $file`\"";
    test     = " -n \"`egrep '#include' $file`\"";
    test     = " -n \"`egrep ULONG $file`\"";
    test     = " -n \"`egrep ULONG $file`\"";
    select   = "#[ \t]define[ \t]+__INCstath";
    select   = "#[ \t]define[ \t]+__INCstath";
    sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
    sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
          "#include \n";
          "#include \n";
    test_text = "`touch types/vxTypesOld.h`"
    test_text = "`touch types/vxTypesOld.h`"
    "#include  /* ULONG */\n"
    "#include  /* ULONG */\n"
    "# define\t__INCstath ";
    "# define\t__INCstath ";
};
};
/*
/*
 *  Another bad dependency in VxWorks 5.2 .
 *  Another bad dependency in VxWorks 5.2 .
 */
 */
fix = {
fix = {
    hackname = vxworks_time;
    hackname = vxworks_time;
    files    = time.h;
    files    = time.h;
    test     = " -r vxWorks.h";
    test     = " -r vxWorks.h";
    select    = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*";
    select    = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
    "#ifndef __gcc_VOIDFUNCPTR_defined\n"
    "#ifndef __gcc_VOIDFUNCPTR_defined\n"
    "#ifdef __cplusplus\n"
    "#ifdef __cplusplus\n"
    "typedef void (*__gcc_VOIDFUNCPTR) (...);\n"
    "typedef void (*__gcc_VOIDFUNCPTR) (...);\n"
    "#else\n"
    "#else\n"
    "typedef void (*__gcc_VOIDFUNCPTR) ();\n"
    "typedef void (*__gcc_VOIDFUNCPTR) ();\n"
    "#endif\n"
    "#endif\n"
    "#define __gcc_VOIDFUNCPTR_defined\n"
    "#define __gcc_VOIDFUNCPTR_defined\n"
    "#endif\n"
    "#endif\n"
    "#define VOIDFUNCPTR __gcc_VOIDFUNCPTR";
    "#define VOIDFUNCPTR __gcc_VOIDFUNCPTR";
    test_text = "`touch vxWorks.h`"
    test_text = "`touch vxWorks.h`"
                "#define VOIDFUNCPTR (void(*)())";
                "#define VOIDFUNCPTR (void(*)())";
};
};
/*
/*
 *  There are several name conflicts with C++ reserved words in X11 header
 *  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
 *  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.
 *  we find __cplusplus in the file.  These were found on the RS/6000.
 */
 */
fix = {
fix = {
    hackname  = x11_class;
    hackname  = x11_class;
    files     = X11/ShellP.h;
    files     = X11/ShellP.h;
    bypass    = __cplusplus;
    bypass    = __cplusplus;
    select    = "^([ \t]*char \\*)class;(.*)";
    select    = "^([ \t]*char \\*)class;(.*)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n"
    c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n"
                "#else\n%1class;%2\n#endif";
                "#else\n%1class;%2\n#endif";
    test_text =
    test_text =
    "struct {\n"
    "struct {\n"
    "   char *class;\n"
    "   char *class;\n"
    "} mumble;\n";
    "} mumble;\n";
};
};
/*
/*
 *  class in Xm/BaseClassI.h
 *  class in Xm/BaseClassI.h
 */
 */
fix = {
fix = {
    hackname = x11_class_usage;
    hackname = x11_class_usage;
    files    = Xm/BaseClassI.h;
    files    = Xm/BaseClassI.h;
    bypass   = "__cplusplus";
    bypass   = "__cplusplus";
    select    = " class\\)";
    select    = " class\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = " c_class)";
    c_fix_arg = " c_class)";
    test_text = "extern mumble (int  class);\n";
    test_text = "extern mumble (int  class);\n";
};
};
/*
/*
 *  new in Xm/Traversal.h
 *  new in Xm/Traversal.h
 */
 */
fix = {
fix = {
    hackname = x11_new;
    hackname = x11_new;
    files    = Xm/Traversal.h;
    files    = Xm/Traversal.h;
    bypass   = __cplusplus;
    bypass   = __cplusplus;
    sed      = "/Widget\told, new;/i\\\n"
    sed      = "/Widget\told, new;/i\\\n"
                   "#ifdef __cplusplus\\\n"
                   "#ifdef __cplusplus\\\n"
                   "\\\tWidget\told, c_new;\\\n"
                   "\\\tWidget\told, c_new;\\\n"
                   "#else\n";
                   "#else\n";
    sed      = "/Widget\told, new;/a\\\n"
    sed      = "/Widget\told, new;/a\\\n"
                   "#endif\n";
                   "#endif\n";
    sed      = "s/Widget new,/Widget c_new,/g";
    sed      = "s/Widget new,/Widget c_new,/g";
    test_text =
    test_text =
    "struct wedge {\n"
    "struct wedge {\n"
    "   Widget\told, new;\n"
    "   Widget\told, new;\n"
    "};\nextern Wedged( Widget new, Widget old );";
    "};\nextern Wedged( Widget new, Widget old );";
};
};
/*
/*
 *  Incorrect sprintf declaration in X11/Xmu.h
 *  Incorrect sprintf declaration in X11/Xmu.h
 */
 */
fix = {
fix = {
    hackname = x11_sprintf;
    hackname = x11_sprintf;
    files    = X11/Xmu.h;
    files    = X11/Xmu.h;
    files    = X11/Xmu/Xmu.h;
    files    = X11/Xmu/Xmu.h;
    select   = "^extern char \\*\tsprintf\\(\\);$";
    select   = "^extern char \\*\tsprintf\\(\\);$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */";
    c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */";
    test_text = "extern char *\tsprintf();";
    test_text = "extern char *\tsprintf();";
};
};
/*EOF*/
/*EOF*/
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.