Commit e1775b33 by Bruce Korb Committed by Bruce Korb

fenv.h on Ubuntu

plus fix the ordering of the patches:

* inclhack.def: many of the headers found under "bits/" are
  often stashed under architecture directories.  Apply fixes
  to those, too.  Also, re-ordered misordered fixes.
* tests/base/linux/vt.h: 80 columns in .def file limitation
* tests/base/iso/math_c99.h: adjust ordering
* tests/base/rtldef/string.h: likewise
* tests/base/bits/fenv.h: likewise
* tests/base/pthread.h: likewise

From-SVN: r205793
parent f58fc6a5
2013-12-07 Bruce Korb <bkorb@gnu.org>
* inclhack.def: many of the headers found under "bits/" are
often stashed under architecture directories. Apply fixes
to those, too. Also, re-ordered misordered fixes.
* tests/base/linux/vt.h: 80 columns in .def file limitation
* tests/base/iso/math_c99.h: adjust ordering
* tests/base/rtldef/string.h: likewise
* tests/base/bits/fenv.h: likewise
* tests/base/pthread.h: likewise
2013-12-06 Richard Biener <rguenther@suse.de> 2013-12-06 Richard Biener <rguenther@suse.de>
* inclhack.def (suse_linux_vt_cxx): New fix for linux/vt.h * inclhack.def (suse_linux_vt_cxx): New fix for linux/vt.h
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -11,7 +11,7 @@ autogen definitions fixincl; ...@@ -11,7 +11,7 @@ autogen definitions fixincl;
pattern='^/\*$' \ pattern='^/\*$' \
trailer='^/\*EOF\*[/]' \ trailer='^/\*EOF\*[/]' \
input=inclhack.def \ input=inclhack.def \
key='hackname[ ]*=[ ]*(.*);' key=$'hackname[ \t]*=[ \t]*(.*);'
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: */
...@@ -1140,6 +1140,20 @@ fix = { ...@@ -1140,6 +1140,20 @@ fix = {
}; };
/* /*
* Old Linux kernel's <compiler.h> header breaks Traditional CPP
*/
fix = {
hackname = complier_h_tradcpp;
files = linux/compiler.h;
select = "#define __builtin_warning\\(x, y\\.\\.\\.\\) \\(1\\)";
c_fix = format;
c_fix_arg = "/* __builtin_warning(x, y...) is obsolete */";
test_text = "#define __builtin_warning(x, y...) (1)";
};
/*
* Fix various macros used to define ioctl numbers. * Fix various macros used to define ioctl numbers.
* The traditional syntax was: * The traditional syntax was:
* *
...@@ -1509,6 +1523,60 @@ fix = { ...@@ -1509,6 +1523,60 @@ fix = {
}; };
/* /*
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
* that fails when compiling for SSE-less 32-bit x86.
*/
fix = {
hackname = feraiseexcept_nosse_divbyzero;
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
files = bits/fenv.h, '*/bits/fenv.h';
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %1, %0 *\" : "
": \"x\" \\(__f\\), \"x\" \\(__g\\)\\);$";
bypass = "\"fdivp .*; fwait\"";
c_fix = format;
c_fix_arg = <<- _EOText_
# ifdef __SSE_MATH__
%0
# else
%1__asm__ __volatile__ ("fdivp %%%%st, %%%%st(1); fwait"
%1 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
# endif
_EOText_;
test_text = <<- _EOText_
__asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
_EOText_;
};
/*
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
* that fails when compiling for SSE-less 32-bit x86.
*/
fix = {
hackname = feraiseexcept_nosse_invalid;
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
files = bits/fenv.h, '*/bits/fenv.h';
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %0, %0 *\" : "
": \"x\" \\(__f\\)\\);$";
bypass = "\"fdiv .*; fwait\"";
c_fix = format;
c_fix_arg = <<- _EOText_
# ifdef __SSE_MATH__
%0
# else
%1__asm__ __volatile__ ("fdiv %%%%st, %%%%st(0); fwait"
%1 : "=t" (__f) : "0" (__f));
# endif
_EOText_;
test_text = <<- _EOText_
__asm__ __volatile__ ("divss %0, %0" : : "x" (__f));
_EOText_;
};
/*
* 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.
...@@ -1738,7 +1806,7 @@ fix = { ...@@ -1738,7 +1806,7 @@ fix = {
versions. */ versions. */
fix = { fix = {
hackname = glibc_strncpy; hackname = glibc_strncpy;
files = bits/string2.h; files = bits/string2.h, '*/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)";
...@@ -2007,6 +2075,34 @@ fix = { ...@@ -2007,6 +2075,34 @@ fix = {
}; };
/* /*
* hpux sendfile()
*/
fix = {
hackname = hpux11_extern_sendfile;
mach = "*-hp-hpux11.[12]*";
files = sys/socket.h;
select = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
c_fix = format;
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
test_text = " extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n"
" const struct iovec *, int));\n";
};
/*
* hpux sendpath()
*/
fix = {
hackname = hpux11_extern_sendpath;
mach = "*-hp-hpux11.[12]*";
files = sys/socket.h;
select = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
c_fix = format;
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
test_text = " extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n"
" const struct iovec *, int));\n";
};
/*
* 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.
*/ */
...@@ -2107,6 +2203,76 @@ fix = { ...@@ -2107,6 +2203,76 @@ fix = {
}; };
/* /*
* hpux intptr
*/
fix = {
hackname = hpux_c99_intptr;
mach = "*-hp-hpux11.3*";
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MAX[ \t]*"
"INT32_MAX[ \t]*$@#define PTRDIFF_MAX (2147483647l)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MIN[ \t]*"
"INT32_MIN[ \t]*$@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MAX[ \t]*"
"INT32_MAX[ \t]*$@#define INTPTR_MAX (2147483647l)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MIN[ \t]*"
"INT32_MIN[ \t]*$@#define INTPTR_MIN (-INTPTR_MAX - 1)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINTPTR_MAX[ \t]*"
"UINT32_MAX[ \t]*$@#define UINTPTR_MAX (4294967295ul)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*"
"UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@";
test_text = "#define PTRDIFF_MAX INT32_MAX\n"
"#define PTRDIFF_MIN INT32_MIN\n"
"#define INTPTR_MAX INT32_MAX\n"
"#define INTPTR_MIN INT32_MIN\n"
"#define UINTPTR_MAX UINT32_MAX\n"
"#define SIZE_MAX UINT32_MAX\n";
};
/*
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
*/
fix = {
hackname = hpux_c99_inttypes;
mach = "*-hp-hpux11.[23]*";
files = inttypes.h;
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
"__CONCAT_U__(__c)[ \t]*$@#define UINT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
"__CONCAT_U__(__c)[ \t]*$@#define UINT16_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT32_C(__c)[ \t]*"
"__CONCAT__(__c,l)[ \t]*$@#define INT32_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT32_C(__c)[ \t].*$@"
"#define UINT32_C(__c) __CONCAT__(__c,u)@";
test_text = "#define UINT8_C(__c) __CONCAT_U__(__c)\n"
"#define UINT16_C(__c) __CONCAT_U__(__c)\n"
"#define INT32_C(__c) __CONCAT__(__c,l)\n"
"#define UINT32_C(__c) __CONCAT__(__c,ul)\n";
};
/*
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
*/
fix = {
hackname = hpux_c99_inttypes2;
mach = "*-hp-hpux11.2*";
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT8_C(__c)[ \t]*"
"((signed char)(__c))[ \t]*$@#define INT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
"((unsigned char)(__c))[ \t]*$@#define UINT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT16_C(__c)[ \t]*"
"((short)(__c))[ \t]*$@#define INT16_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
"((unsigned short)(__c))[ \t]*$@#define UINT16_C(__c) (__c)@";
test_text = "# define INT8_C(__c) ((signed char)(__c))\n"
"# define UINT8_C(__c) ((unsigned char)(__c))\n"
"# define INT16_C(__c) ((short)(__c))\n"
"# define UINT16_C(__c) ((unsigned short)(__c))\n";
};
/*
* Fix hpux broken ctype macros * Fix hpux broken ctype macros
*/ */
fix = { fix = {
...@@ -2122,6 +2288,26 @@ fix = { ...@@ -2122,6 +2288,26 @@ fix = {
}; };
/* /*
* hpux errno()
*/
fix = {
hackname = hpux_extern_errno;
mach = "*-hp-hpux10.*";
mach = "*-hp-hpux11.[0-2]*";
files = errno.h;
select = "^[ \t]*extern int errno;$";
c_fix = format;
c_fix_arg = "#ifdef __cplusplus\n"
"extern \"C\" {\n"
"#endif\n"
"%0\n"
"#ifdef __cplusplus\n"
"}\n"
"#endif";
test_text = " extern int errno;\n";
};
/*
* Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc. * Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
*/ */
fix = { fix = {
...@@ -2149,6 +2335,33 @@ fix = { ...@@ -2149,6 +2335,33 @@ fix = {
}; };
/* /*
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
*/
fix = {
hackname = hpux_imaginary_i;
mach = "ia64-hp-hpux11.*";
files = complex.h;
select = "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*";
c_fix = format;
c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)";
test_text = "#define _Complex_I (0.f+_Imaginary_I)\n";
};
/*
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
*/
fix = {
hackname = hpux_inttype_int8_t;
mach = "*-hp-hpux1[01].*";
files = sys/_inttypes.h;
select = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*";
c_fix = format;
c_fix_arg = "typedef signed char int%18_t;";
test_text = "typedef char int_least8_t;\n"
"typedef char int8_t;\n";
};
/*
* HP-UX long_double * HP-UX long_double
*/ */
fix = { fix = {
...@@ -2170,7 +2383,7 @@ fix = { ...@@ -2170,7 +2383,7 @@ fix = {
"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.
*/ */
...@@ -2190,17 +2403,45 @@ fix = { ...@@ -2190,17 +2403,45 @@ fix = {
}; };
/* /*
* Fix hpux10.20 <sys/time.h> to avoid invalid forward decl * Add missing braces to pthread initializer defines.
*/ */
fix = { fix = {
hackname = hpux_systime; hackname = hpux_pthread_initializers;
files = sys/time.h; mach = "*-hp-hpux11.[0-3]*";
select = "^extern struct sigevent;"; files = sys/pthread.h;
sed = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
c_fix = format; "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
c_fix_arg = "struct sigevent;"; sed = "s@^[ \t]*1,[ \t]*\\\\"
"@\t{ 1, 0 }@";
test_text = 'extern struct sigevent;'; sed = "/^[ \t]*0$/d";
sed = "s@__PTHREAD_MUTEX_VALID, 0"
"@{ __PTHREAD_MUTEX_VALID, 0 }@";
sed = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
"@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
sed = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
"@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
sed = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
"@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
sed = "s@^[ \t]*0, 0[ \t]*\\\\"
"@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
sed = "s@__PTHREAD_COND_VALID, 0"
"@{ __PTHREAD_COND_VALID, 0 }@";
sed = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
"@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
sed = "s@__PTHREAD_RWLOCK_VALID, 0"
"@{ __PTHREAD_RWLOCK_VALID, 0 }@";
sed = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
"@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
sed = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \t]*\\\\"
"@\t{ 0, 0, 0, 0, 0 }, { 0, 0}\t\t\t\t\t\\\\@";
test_text = "#define PTHREAD_MUTEX_INITIALIZER {\t\t\t\t\t\\\\\n"
"\t__PTHREAD_MUTEX_VALID, 0,\t\t\t\t\t\\\\\n"
"\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
"\t__SPNLCK_INITIALIZER,\t\t\t\t\t\t\\\\\n"
"\t0, 0, -1, 0,\t\t\t\t\t\t\t\\\\\n"
"\t0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n"
"\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
"}\n";
}; };
/* /*
...@@ -2226,152 +2467,9 @@ fix = { ...@@ -2226,152 +2467,9 @@ fix = {
test_text = "extern union mpinfou spu_info[];"; test_text = "extern union mpinfou spu_info[];";
}; };
fix = {
hackname = hpux11_extern_sendfile;
mach = "*-hp-hpux11.[12]*";
files = sys/socket.h;
select = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
c_fix = format;
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
test_text = " extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n"
" const struct iovec *, int));\n";
};
fix = {
hackname = hpux11_extern_sendpath;
mach = "*-hp-hpux11.[12]*";
files = sys/socket.h;
select = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
c_fix = format;
c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
test_text = " extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n"
" const struct iovec *, int));\n";
};
fix = {
hackname = hpux_extern_errno;
mach = "*-hp-hpux10.*";
mach = "*-hp-hpux11.[0-2]*";
files = errno.h;
select = "^[ \t]*extern int errno;$";
c_fix = format;
c_fix_arg = "#ifdef __cplusplus\n"
"extern \"C\" {\n"
"#endif\n"
"%0\n"
"#ifdef __cplusplus\n"
"}\n"
"#endif";
test_text = " extern int errno;\n";
};
/*
* Add missing braces to pthread initializer defines.
*/
fix = {
hackname = hpux_pthread_initializers;
mach = "*-hp-hpux11.[0-3]*";
files = sys/pthread.h;
sed = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
"@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
sed = "s@^[ \t]*1,[ \t]*\\\\"
"@\t{ 1, 0 }@";
sed = "/^[ \t]*0$/d";
sed = "s@__PTHREAD_MUTEX_VALID, 0"
"@{ __PTHREAD_MUTEX_VALID, 0 }@";
sed = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
"@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
sed = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
"@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
sed = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\"
"@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
sed = "s@^[ \t]*0, 0[ \t]*\\\\"
"@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
sed = "s@__PTHREAD_COND_VALID, 0"
"@{ __PTHREAD_COND_VALID, 0 }@";
sed = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
"@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
sed = "s@__PTHREAD_RWLOCK_VALID, 0"
"@{ __PTHREAD_RWLOCK_VALID, 0 }@";
sed = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
"@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
sed = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \t]*\\\\"
"@\t{ 0, 0, 0, 0, 0 }, { 0, 0}\t\t\t\t\t\\\\@";
test_text = "#define PTHREAD_MUTEX_INITIALIZER {\t\t\t\t\t\\\\\n"
"\t__PTHREAD_MUTEX_VALID, 0,\t\t\t\t\t\\\\\n"
"\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
"\t__SPNLCK_INITIALIZER,\t\t\t\t\t\t\\\\\n"
"\t0, 0, -1, 0,\t\t\t\t\t\t\t\\\\\n"
"\t0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n"
"\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
"}\n";
};
fix = {
hackname = hpux_c99_intptr;
mach = "*-hp-hpux11.3*";
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MAX[ \t]*"
"INT32_MAX[ \t]*$@#define PTRDIFF_MAX (2147483647l)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MIN[ \t]*"
"INT32_MIN[ \t]*$@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MAX[ \t]*"
"INT32_MAX[ \t]*$@#define INTPTR_MAX (2147483647l)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MIN[ \t]*"
"INT32_MIN[ \t]*$@#define INTPTR_MIN (-INTPTR_MAX - 1)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINTPTR_MAX[ \t]*"
"UINT32_MAX[ \t]*$@#define UINTPTR_MAX (4294967295ul)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*"
"UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@";
test_text = "#define PTRDIFF_MAX INT32_MAX\n"
"#define PTRDIFF_MIN INT32_MIN\n"
"#define INTPTR_MAX INT32_MAX\n"
"#define INTPTR_MIN INT32_MIN\n"
"#define UINTPTR_MAX UINT32_MAX\n"
"#define SIZE_MAX UINT32_MAX\n";
};
/* /*
* These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31. * These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31.
*/ */
fix = {
hackname = hpux_c99_inttypes;
mach = "*-hp-hpux11.[23]*";
files = inttypes.h;
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
"__CONCAT_U__(__c)[ \t]*$@#define UINT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
"__CONCAT_U__(__c)[ \t]*$@#define UINT16_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT32_C(__c)[ \t]*"
"__CONCAT__(__c,l)[ \t]*$@#define INT32_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT32_C(__c)[ \t].*$@"
"#define UINT32_C(__c) __CONCAT__(__c,u)@";
test_text = "#define UINT8_C(__c) __CONCAT_U__(__c)\n"
"#define UINT16_C(__c) __CONCAT_U__(__c)\n"
"#define INT32_C(__c) __CONCAT__(__c,l)\n"
"#define UINT32_C(__c) __CONCAT__(__c,ul)\n";
};
fix = {
hackname = hpux_c99_inttypes2;
mach = "*-hp-hpux11.2*";
files = stdint-hpux11.h, stdint.h;
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT8_C(__c)[ \t]*"
"((signed char)(__c))[ \t]*$@#define INT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*"
"((unsigned char)(__c))[ \t]*$@#define UINT8_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*INT16_C(__c)[ \t]*"
"((short)(__c))[ \t]*$@#define INT16_C(__c) (__c)@";
sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*"
"((unsigned short)(__c))[ \t]*$@#define UINT16_C(__c) (__c)@";
test_text = "# define INT8_C(__c) ((signed char)(__c))\n"
"# define UINT8_C(__c) ((unsigned char)(__c))\n"
"# define INT16_C(__c) ((short)(__c))\n"
"# define UINT16_C(__c) ((unsigned short)(__c))\n";
};
fix = { fix = {
hackname = hpux_stdint_least_fast; hackname = hpux_stdint_least_fast;
mach = "*-hp-hpux11.2*"; mach = "*-hp-hpux11.2*";
...@@ -2385,25 +2483,18 @@ fix = { ...@@ -2385,25 +2483,18 @@ fix = {
_EOFix_; _EOFix_;
}; };
/*
* Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
*/
fix = { fix = {
hackname = hpux_inttype_int8_t; hackname = hpux_systime;
mach = "*-hp-hpux1[01].*"; files = sys/time.h;
files = sys/_inttypes.h; select = "^extern struct sigevent;";
select = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*";
c_fix = format;
c_fix_arg = "typedef signed char int%18_t;";
test_text = "typedef char int_least8_t;\n"
"typedef char int8_t;\n";
};
fix = {
hackname = hpux_imaginary_i;
mach = "ia64-hp-hpux11.*";
files = complex.h;
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 = "struct sigevent;";
test_text = "#define _Complex_I (0.f+_Imaginary_I)\n";
test_text = 'extern struct sigevent;';
}; };
/* /*
...@@ -2411,7 +2502,7 @@ fix = { ...@@ -2411,7 +2502,7 @@ fix = {
*/ */
fix = { fix = {
hackname = huge_val_hex; hackname = huge_val_hex;
files = bits/huge_val.h; files = bits/huge_val.h, '*/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";
...@@ -2426,7 +2517,7 @@ fix = { ...@@ -2426,7 +2517,7 @@ fix = {
*/ */
fix = { fix = {
hackname = huge_valf_hex; hackname = huge_valf_hex;
files = bits/huge_val.h; files = bits/huge_val.h, '*/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";
...@@ -2441,7 +2532,7 @@ fix = { ...@@ -2441,7 +2532,7 @@ fix = {
*/ */
fix = { fix = {
hackname = huge_vall_hex; hackname = huge_vall_hex;
files = bits/huge_val.h; files = bits/huge_val.h, '*/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";
...@@ -2579,7 +2670,8 @@ fix = { ...@@ -2579,7 +2670,8 @@ fix = {
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++.
*/ */
...@@ -2792,9 +2884,11 @@ fix = { ...@@ -2792,9 +2884,11 @@ fix = {
test_text = "#define __END_DECLS };"; test_text = "#define __END_DECLS };";
}; };
/* 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 * newlib's stdint.h has several failures to conform to C99. The fix
versions. */ * for these removed a comment that can be matched to identify unfixed
* versions.
*/
fix = { fix = {
hackname = newlib_stdint_1; hackname = newlib_stdint_1;
files = stdint-newlib.h, stdint.h; files = stdint-newlib.h, stdint.h;
...@@ -3242,6 +3336,98 @@ fix = { ...@@ -3242,6 +3336,98 @@ fix = {
}; };
/* /*
* Sun Solaris 2 has a version of sys/int_const.h that defines
* UINT8_C and UINT16_C to unsigned constants.
*/
fix = {
hackname = solaris_int_const;
files = sys/int_const.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\tUINT8_C(c)\t(c)\n"
"%1\n"
"#define\tUINT16_C(c)\t(c)";
select = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n"
"(/\*.*\*/)\n"
"#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*";
test_text =
"#define UINT8_C(c) __CONCAT__(c,u)\n"
"/* CSTYLED */\n"
"#define UINT16_C(c) __CONCAT__(c,u)";
};
/*
* Sun Solaris 2 has a version of sys/int_limits.h that defines
* UINT8_MAX and UINT16_MAX to unsigned constants.
*/
fix = {
hackname = solaris_int_limits_1;
files = sys/int_limits.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\tUINT8_MAX\t(255)\n"
"#define\tUINT16_MAX\t(65535)";
select = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n"
"#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)";
test_text =
"#define UINT8_MAX (255U)\n"
"#define UINT16_MAX (65535U)";
};
/*
* Sun Solaris 2 has a version of sys/int_limits.h that defines
* INT_FAST16 limits to wrong values for sys/int_types.h.
*/
fix = {
hackname = solaris_int_limits_2;
files = sys/int_limits.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\t%1_FAST16_%2 %132_%2";
select = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*";
test_text =
"#define INT_FAST16_MAX INT16_MAX\n"
"#define UINT_FAST16_MAX UINT16_MAX\n"
"#define INT_FAST16_MIN INT16_MIN";
};
/*
* Sun Solaris 2 has a version of sys/int_limits.h that defines
* SIZE_MAX as unsigned long.
*/
fix = {
hackname = solaris_int_limits_3;
files = sys/int_limits.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\tSIZE_MAX\t4294967295U";
select = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL";
test_text =
"#define SIZE_MAX 4294967295UL";
};
/*
* 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.
*/
fix = {
hackname = solaris_int_types;
select = "__STDC__ - 0 == 0";
bypass = "_LONGLONG_TYPE";
files = sys/int_types.h;
c_fix = format;
c_fix_arg =
"(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))";
test_text =
"#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
"typedef long long int64_t;\n"
"#endif\n\n"
"#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n"
"typedef int64_t intmax_t;\n"
"#endif";
};
/*
* Before Solaris 10, <iso/setjmp_iso.h> doesn't mark longjump noreturn. * Before Solaris 10, <iso/setjmp_iso.h> doesn't mark longjump noreturn.
*/ */
fix = { fix = {
...@@ -3279,6 +3465,35 @@ fix = { ...@@ -3279,6 +3465,35 @@ fix = {
"#define HUGE_VALL __builtin_huge_vall"; "#define HUGE_VALL __builtin_huge_vall";
}; };
/*
* On Solaris 11, if you do isinf(NaN) you'll get a floating point
* exception. Provide an alternative using GCC's builtin.
*/
fix = {
hackname = solaris_math_10;
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
files = iso/math_c99.h;
c_fix = format;
c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
"[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);"
"[ \t]*\\\\\n"
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
"INFINITY[ \t]*\\|\\|[ \t]*\\\\\n"
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
"\\(-INFINITY\\);[ \t]*\\}\\)";
test_text =
'#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n"
"#undef isinf\n"
"#define isinf(x) __extension__( \\\\\n"
" { __typeof(x) __x_i = (x); \\\\\n"
" __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
" __x_i == (__typeof(__x_i)) (-INFINITY); })";
};
/*
* Solaris math INFINITY
*/
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";
...@@ -3293,6 +3508,9 @@ fix = { ...@@ -3293,6 +3508,9 @@ fix = {
"#define INFINITY __builtin_infinity"; "#define INFINITY __builtin_infinity";
}; };
/*
* Solaris math NAN
*/
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";
...@@ -3307,6 +3525,9 @@ fix = { ...@@ -3307,6 +3525,9 @@ fix = {
"#define NAN __builtin_nan"; "#define NAN __builtin_nan";
}; };
/*
* Solaris math fpclassify
*/
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";
...@@ -3323,6 +3544,9 @@ fix = { ...@@ -3323,6 +3544,9 @@ fix = {
"#define fpclassify(x) __builtin_fpclassify(x)"; "#define fpclassify(x) __builtin_fpclassify(x)";
}; };
/*
* Solaris math signbit
*/
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";
...@@ -3342,6 +3566,9 @@ fix = { ...@@ -3342,6 +3566,9 @@ fix = {
_EOText_; _EOText_;
}; };
/*
* Solaris math comparison macros
*/
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";
...@@ -3368,33 +3595,6 @@ fix = { ...@@ -3368,33 +3595,6 @@ fix = {
}; };
/* /*
* On Solaris 11, if you do isinf(NaN) you'll get a floating point
* exception. Provide an alternative using GCC's builtin.
*/
fix = {
hackname = solaris_math_10;
select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
files = iso/math_c99.h;
c_fix = format;
c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)";
c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n"
"[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);"
"[ \t]*\\\\\n"
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
"INFINITY[ \t]*\\|\\|[ \t]*\\\\\n"
"[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*"
"\\(-INFINITY\\);[ \t]*\\}\\)";
test_text =
'#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n"
"#undef isinf\n"
"#define isinf(x) __extension__( \\\\\n"
" { __typeof(x) __x_i = (x); \\\\\n"
" __x_i == (__typeof(__x_i)) INFINITY || \\\\\n"
" __x_i == (__typeof(__x_i)) (-INFINITY); })";
};
/*
* 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
...@@ -3433,49 +3633,6 @@ fix = { ...@@ -3433,49 +3633,6 @@ fix = {
}; };
/* /*
* The pow overloads with int were removed in C++ 2011 DR 550.
*/
fix = {
hackname = solaris_pow_int_overload;
mach = '*-*-solaris2*';
files = "iso/math_iso.h";
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
" *\\{[^{}]*\n[^{}]*\\}";
c_fix = format;
c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
test_text =
" inline long double pow(long double __X, int __Y) { return\n"
" __powl(__X, (long double) (__Y)); }";
};
/*
* Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
* fields of the pthread_rwlock_t structure, which are of type
* upad64_t, which itself is typedef'd to int64_t, but with __STDC__
* defined (e.g. by -ansi) it is a union. So change the initializer
* to "{0}" instead.
*/
fix = {
hackname = solaris_rwlock_init_1;
select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
files = pthread.h;
mach = '*-*-solaris*';
c_fix = format;
c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
"%0\n"
"#else\n"
"%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
"#endif";
c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
"\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
test_text =
'#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}}";
};
/*
* 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.
...@@ -3526,111 +3683,62 @@ fix = { ...@@ -3526,111 +3683,62 @@ fix = {
}; };
/* /*
* Sun Solaris 2 has a version of sys/int_const.h that defines * Solaris 10+ <spawn.h> uses char *const argv[_RESTRICT_KYWD] in the
* UINT8_C and UINT16_C to unsigned constants. * posix_spawn declarations, which doesn't work with C++.
*/
fix = {
hackname = solaris_int_const;
files = sys/int_const.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\tUINT8_C(c)\t(c)\n"
"%1\n"
"#define\tUINT16_C(c)\t(c)";
select = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n"
"(/\*.*\*/)\n"
"#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*";
test_text =
"#define UINT8_C(c) __CONCAT__(c,u)\n"
"/* CSTYLED */\n"
"#define UINT16_C(c) __CONCAT__(c,u)";
};
/*
* Sun Solaris 2 has a version of sys/int_limits.h that defines
* UINT8_MAX and UINT16_MAX to unsigned constants.
*/
fix = {
hackname = solaris_int_limits_1;
files = sys/int_limits.h;
mach = '*-*-solaris2*';
c_fix = format;
c_fix_arg = "#define\tUINT8_MAX\t(255)\n"
"#define\tUINT16_MAX\t(65535)";
select = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n"
"#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)";
test_text =
"#define UINT8_MAX (255U)\n"
"#define UINT16_MAX (65535U)";
};
/*
* Sun Solaris 2 has a version of sys/int_limits.h that defines
* INT_FAST16 limits to wrong values for sys/int_types.h.
*/ */
fix = { fix = {
hackname = solaris_int_limits_2; hackname = solaris_posix_spawn_restrict;
files = sys/int_limits.h; files = spawn.h;
mach = '*-*-solaris2*'; mach = '*-*-solaris2*';
c_fix = format; c_fix = format;
c_fix_arg = "#define\t%1_FAST16_%2 %132_%2"; c_fix_arg = "%1*_RESTRICT_KYWD %2%3";
select = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*"; select = "(.*[ \t]+)([a-z]+)\\[_RESTRICT_KYWD\\](.*)";
test_text = test_text =
"#define INT_FAST16_MAX INT16_MAX\n" "char *const argv[_RESTRICT_KYWD],\n"
"#define UINT_FAST16_MAX UINT16_MAX\n" "char *const envp[_RESTRICT_KYWD]);";
"#define INT_FAST16_MIN INT16_MIN";
}; };
/* /*
* Sun Solaris 2 has a version of sys/int_limits.h that defines * The pow overloads with int were removed in C++ 2011 DR 550.
* SIZE_MAX as unsigned long.
*/ */
fix = { fix = {
hackname = solaris_int_limits_3; hackname = solaris_pow_int_overload;
files = sys/int_limits.h;
mach = '*-*-solaris2*'; mach = '*-*-solaris2*';
files = "iso/math_iso.h";
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
" *\\{[^{}]*\n[^{}]*\\}";
c_fix = format; c_fix = format;
c_fix_arg = "#define\tSIZE_MAX\t4294967295U"; c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
select = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL";
test_text =
"#define SIZE_MAX 4294967295UL";
};
/*
* 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.
*/
fix = {
hackname = solaris_int_types;
select = "__STDC__ - 0 == 0";
bypass = "_LONGLONG_TYPE";
files = sys/int_types.h;
c_fix = format;
c_fix_arg =
"(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))";
test_text = test_text =
"#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" " inline long double pow(long double __X, int __Y) { return\n"
"typedef long long int64_t;\n" " __powl(__X, (long double) (__Y)); }";
"#endif\n\n"
"#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n"
"typedef int64_t intmax_t;\n"
"#endif";
}; };
/* /*
* Solaris 10+ <spawn.h> uses char *const argv[_RESTRICT_KYWD] in the * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
* posix_spawn declarations, which doesn't work with C++. * fields of the pthread_rwlock_t structure, which are of type
* upad64_t, which itself is typedef'd to int64_t, but with __STDC__
* defined (e.g. by -ansi) it is a union. So change the initializer
* to "{0}" instead.
*/ */
fix = { fix = {
hackname = solaris_posix_spawn_restrict; hackname = solaris_rwlock_init_1;
files = spawn.h; select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
mach = '*-*-solaris2*'; files = pthread.h;
mach = '*-*-solaris*';
c_fix = format; c_fix = format;
c_fix_arg = "%1*_RESTRICT_KYWD %2%3"; c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
select = "(.*[ \t]+)([a-z]+)\\[_RESTRICT_KYWD\\](.*)"; "%0\n"
"#else\n"
"%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
"#endif";
c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
"\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
test_text = test_text =
"char *const argv[_RESTRICT_KYWD],\n" '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n"
"char *const envp[_RESTRICT_KYWD]);"; "#define PTHREAD_RWLOCK_INITIALIZER\t{0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}";
}; };
/* /*
...@@ -4240,7 +4348,7 @@ fix = { ...@@ -4240,7 +4348,7 @@ fix = {
fix = { fix = {
hackname = thread_keyword; hackname = thread_keyword;
files = "pthread.h"; files = "pthread.h";
files = "bits/sigthread.h"; files = bits/sigthread.h, '*/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";
...@@ -4326,6 +4434,41 @@ fix = { ...@@ -4326,6 +4434,41 @@ fix = {
}; };
/* /*
* On VMS, add missing braces around sigset_t constants.
*/
fix = {
hackname = vms_add_missing_braces;
select = "(_SIG_[A-Z]+_SET[ \t]+= \\{)(0x[0F]+, 0x[0F]+)";
mach = "*-*-*vms*";
files = "rtldef/signal.h";
c_fix = format;
c_fix_arg = '%1 {%2} ';
test_text = "static const __sigset_t _SIG_EMPTY_SET = "
"{0x00000000, 0x00000000},\n"
" _SIG_FULL_SET = {0xFFFFFFFF, 0xFFFFFFFF};\n";
};
/*
* On VMS, some DEC-C builtins are directly used.
*/
fix = {
hackname = vms_decc_builtin;
select = "(__MEMSET|__MEMMOVE|__MEMCPY|__STRLEN|__STRCPY)";
mach = "*-*-*vms*";
files = rtldef/string.h, rtldef/time.h, rtldef/strings.h,
rtldef/socket.h;
sed = "s@__MEMSET@memset@";
sed = "s@__MEMMOVE@memmove@";
sed = "s@__MEMCPY@memcpy@";
sed = "s@__STRLEN@strlen@";
sed = "s@__STRCPY@strcpy@";
test_text = "define FD_ZERO(__p) __MEMSET((__p), 0, sizeof(*(__p)))\n";
};
/*
* Define __CAN_USE_EXTERN_PREFIX on vms. * Define __CAN_USE_EXTERN_PREFIX on vms.
*/ */
fix = { fix = {
...@@ -4349,27 +4492,6 @@ fix = { ...@@ -4349,27 +4492,6 @@ fix = {
}; };
/* /*
* On VMS, use pragma extern_model instead of VAX-C keywords.
*/
fix = {
hackname = vms_use_pragma_extern_model;
select = "#if defined\\(__DECC\\) \\|\\| defined\\(__DECCXX\\)\n"
"# pragma extern_model __save\n";
mach = "*-*-*vms*";
c_fix = format;
c_fix_arg = "#if defined(__DECC) || defined(__DECCXX) || defined(__GNUC__)\n"
"# pragma extern_model __save\n";
test_text = "#if defined(__DECC) || defined(__DECCXX)\n"
"# pragma extern_model __save\n"
"# pragma extern_model strict_refdef\n"
" extern struct x zz$yy;\n"
"# pragma extern_model __restore\n"
"#endif\n";
};
/*
* On VMS, disable the use of dec-c string builtins * On VMS, disable the use of dec-c string builtins
*/ */
fix = { fix = {
...@@ -4385,39 +4507,6 @@ fix = { ...@@ -4385,39 +4507,6 @@ fix = {
}; };
/* /*
* On VMS, change <resource.h> to <sys/resource.h> to avoid a
* conflict while building gcc. Likewise for <builtins.h>
*/
fix = {
hackname = vms_use_quoted_include;
select = "(#[ \t]*include[ \t]+)<(resource|builtins)\\.h>";
mach = "*-*-*vms*";
files = rtldef/wait.h, starlet_c/pthread.h;
c_fix = format;
c_fix_arg = '%1<sys/%2.h>';
test_text = "# include <resource.h>";
};
/*
* On VMS, add missing braces around sigset_t constants.
*/
fix = {
hackname = vms_add_missing_braces;
select = "(_SIG_[A-Z]+_SET[ \t]+= \\{)(0x[0F]+, 0x[0F]+)";
mach = "*-*-*vms*";
files = "rtldef/signal.h";
c_fix = format;
c_fix_arg = '%1 {%2} ';
test_text = "static const __sigset_t _SIG_EMPTY_SET = "
"{0x00000000, 0x00000000},\n"
" _SIG_FULL_SET = {0xFFFFFFFF, 0xFFFFFFFF};\n";
};
/*
* On VMS, fix incompatible redeclaration of hostalias. * On VMS, fix incompatible redeclaration of hostalias.
*/ */
fix = { fix = {
...@@ -4436,21 +4525,23 @@ fix = { ...@@ -4436,21 +4525,23 @@ fix = {
}; };
/* /*
* On VMS, some DEC-C builtins are directly used. * On VMS, forward declare structure before referencing them in prototypes.
*/ */
fix = { fix = {
hackname = vms_decc_builtin; hackname = vms_forward_declare_struct;
select = "(__MEMSET|__MEMMOVE|__MEMCPY|__STRLEN|__STRCPY)"; select = "(/\\* forward decls for C\\+\\+ \\*/\n)"
"#ifdef __cplusplus\n";
mach = "*-*-*vms*"; mach = "*-*-*vms*";
files = rtldef/string.h, rtldef/time.h, rtldef/strings.h, files = rtldef/if.h;
rtldef/socket.h; c_fix = format;
sed = "s@__MEMSET@memset@";
sed = "s@__MEMMOVE@memmove@";
sed = "s@__MEMCPY@memcpy@";
sed = "s@__STRLEN@strlen@";
sed = "s@__STRCPY@strcpy@";
test_text = "define FD_ZERO(__p) __MEMSET((__p), 0, sizeof(*(__p)))\n"; c_fix_arg = "%1"
"#if defined (__cplusplus) || defined (__GNUC__)\n";
test_text = "/* forward decls for C++ */\n"
"#ifdef __cplusplus\n"
"struct foo;\n"
"#endif\n";
}; };
/* /*
...@@ -4474,39 +4565,56 @@ fix = { ...@@ -4474,39 +4565,56 @@ fix = {
}; };
/* /*
* On VMS, forward declare structure before referencing them in prototypes. * On VMS, force the use of fast setjmp, as the normal setjmp uses conditions
* which is not yet fully supported by gcc.
*/ */
fix = { fix = {
hackname = vms_forward_declare_struct; hackname = vms_use_fast_setjmp;
select = "(/\\* forward decls for C\\+\\+ \\*/\n)" select = "(#[ \t]*if[ \t]*defined\\(__FAST_SETJMP\\)[ \t]*\\|\\|)";
"#ifdef __cplusplus\n";
mach = "*-*-*vms*"; mach = "*-*-*vms*";
files = rtldef/if.h; files = rtldef/setjmp.h;
c_fix = format; c_fix = format;
c_fix_arg = "%1" c_fix_arg = "%0 defined (__GNUC__) ||";
"#if defined (__cplusplus) || defined (__GNUC__)\n";
test_text = "/* forward decls for C++ */\n" test_text = "# if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP)";
"#ifdef __cplusplus\n" };
"struct foo;\n"
/*
* On VMS, use pragma extern_model instead of VAX-C keywords.
*/
fix = {
hackname = vms_use_pragma_extern_model;
select = "#if defined\\(__DECC\\) \\|\\| defined\\(__DECCXX\\)\n"
"# pragma extern_model __save\n";
mach = "*-*-*vms*";
c_fix = format;
c_fix_arg = "#if defined(__DECC) || defined(__DECCXX) || defined(__GNUC__)\n"
"# pragma extern_model __save\n";
test_text = "#if defined(__DECC) || defined(__DECCXX)\n"
"# pragma extern_model __save\n"
"# pragma extern_model strict_refdef\n"
" extern struct x zz$yy;\n"
"# pragma extern_model __restore\n"
"#endif\n"; "#endif\n";
}; };
/* /*
* On VMS, force the use of fast setjmp, as the normal setjmp uses conditions * On VMS, change <resource.h> to <sys/resource.h> to avoid a
* which is not yet fully supported by gcc. * conflict while building gcc. Likewise for <builtins.h>
*/ */
fix = { fix = {
hackname = vms_use_fast_setjmp; hackname = vms_use_quoted_include;
select = "(#[ \t]*if[ \t]*defined\\(__FAST_SETJMP\\)[ \t]*\\|\\|)"; select = "(#[ \t]*include[ \t]+)<(resource|builtins)\\.h>";
mach = "*-*-*vms*"; mach = "*-*-*vms*";
files = rtldef/setjmp.h; files = rtldef/wait.h, starlet_c/pthread.h;
c_fix = format; c_fix = format;
c_fix_arg = "%0 defined (__GNUC__) ||"; c_fix_arg = '%1<sys/%2.h>';
test_text = "# if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP)"; test_text = "# include <resource.h>";
}; };
/* /*
...@@ -4773,73 +4881,4 @@ fix = { ...@@ -4773,73 +4881,4 @@ fix = {
test_text = "extern char *\tsprintf();"; test_text = "extern char *\tsprintf();";
}; };
/*
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
* that fails when compiling for SSE-less 32-bit x86.
*/
fix = {
hackname = feraiseexcept_nosse_invalid;
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
files = bits/fenv.h;
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %0, %0 *\" : "
": \"x\" \\(__f\\)\\);$";
bypass = "\"fdiv .*; fwait\"";
c_fix = format;
c_fix_arg = <<- _EOText_
# ifdef __SSE_MATH__
%0
# else
%1__asm__ __volatile__ ("fdiv %%%%st, %%%%st(0); fwait"
%1 : "=t" (__f) : "0" (__f));
# endif
_EOText_;
test_text = <<- _EOText_
__asm__ __volatile__ ("divss %0, %0" : : "x" (__f));
_EOText_;
};
/*
* Incorrect feraiseexcept extern inline in bits/fenv.h on x86_64
* that fails when compiling for SSE-less 32-bit x86.
*/
fix = {
hackname = feraiseexcept_nosse_divbyzero;
mach = 'i[34567]86-*-linux*', 'x86*-linux*', 'amd64-*-linux*';
files = bits/fenv.h;
select = "^([\t ]*)__asm__ __volatile__ \\(\"divss %1, %0 *\" : "
": \"x\" \\(__f\\), \"x\" \\(__g\\)\\);$";
bypass = "\"fdivp .*; fwait\"";
c_fix = format;
c_fix_arg = <<- _EOText_
# ifdef __SSE_MATH__
%0
# else
%1__asm__ __volatile__ ("fdivp %%%%st, %%%%st(1); fwait"
%1 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
# endif
_EOText_;
test_text = <<- _EOText_
__asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
_EOText_;
};
/*
* Old Linux kernel's <compiler.h> header breaks Traditional CPP
*/
fix = {
hackname = complier_h_tradcpp;
files = linux/compiler.h;
select = "#define __builtin_warning\\(x, y\\.\\.\\.\\) \\(1\\)";
c_fix = format;
c_fix_arg = "/* __builtin_warning(x, y...) is obsolete */";
test_text = "#define __builtin_warning(x, y...) (1)";
};
/*EOF*/ /*EOF*/
...@@ -9,16 +9,6 @@ ...@@ -9,16 +9,6 @@
#if defined( FERAISEEXCEPT_NOSSE_INVALID_CHECK )
# ifdef __SSE_MATH__
__asm__ __volatile__ ("divss %0, %0" : : "x" (__f));
# else
__asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
: "=t" (__f) : "0" (__f));
# endif
#endif /* FERAISEEXCEPT_NOSSE_INVALID_CHECK */
#if defined( FERAISEEXCEPT_NOSSE_DIVBYZERO_CHECK ) #if defined( FERAISEEXCEPT_NOSSE_DIVBYZERO_CHECK )
# ifdef __SSE_MATH__ # ifdef __SSE_MATH__
__asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g)); __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
...@@ -27,3 +17,13 @@ ...@@ -27,3 +17,13 @@
: "=t" (__f) : "0" (__f), "u" (__g) : "st(1)"); : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
# endif # endif
#endif /* FERAISEEXCEPT_NOSSE_DIVBYZERO_CHECK */ #endif /* FERAISEEXCEPT_NOSSE_DIVBYZERO_CHECK */
#if defined( FERAISEEXCEPT_NOSSE_INVALID_CHECK )
# ifdef __SSE_MATH__
__asm__ __volatile__ ("divss %0, %0" : : "x" (__f));
# else
__asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
: "=t" (__f) : "0" (__f));
# endif
#endif /* FERAISEEXCEPT_NOSSE_INVALID_CHECK */
...@@ -20,6 +20,13 @@ ...@@ -20,6 +20,13 @@
#endif /* SOLARIS_MATH_1_CHECK */ #endif /* SOLARIS_MATH_1_CHECK */
#if defined( SOLARIS_MATH_10_CHECK )
#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"
#undef isinf
#define isinf(x) __builtin_isinf(x)
#endif /* SOLARIS_MATH_10_CHECK */
#if defined( SOLARIS_MATH_2_CHECK ) #if defined( SOLARIS_MATH_2_CHECK )
#ident "@(#)math_c99.h 1.9 04/11/01 SMI" #ident "@(#)math_c99.h 1.9 04/11/01 SMI"
#undef INFINITY #undef INFINITY
...@@ -68,10 +75,3 @@ ...@@ -68,10 +75,3 @@
#undef isunordered #undef isunordered
#define isunordered(x, y) __builtin_isunordered(x, y) #define isunordered(x, y) __builtin_isunordered(x, y)
#endif /* SOLARIS_MATH_9_CHECK */ #endif /* SOLARIS_MATH_9_CHECK */
#if defined( SOLARIS_MATH_10_CHECK )
#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"
#undef isinf
#define isinf(x) __builtin_isinf(x)
#endif /* SOLARIS_MATH_10_CHECK */
...@@ -125,16 +125,6 @@ extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask); ...@@ -125,16 +125,6 @@ extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask);
#endif /* SOLARIS_MUTEX_INIT_2_CHECK */ #endif /* SOLARIS_MUTEX_INIT_2_CHECK */
#if defined( SOLARIS_RWLOCK_INIT_1_CHECK )
#ident "@(#)pthread.h 1.26 98/04/12 SMI"
#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}
#else
#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}
#endif
#endif /* SOLARIS_RWLOCK_INIT_1_CHECK */
#if defined( SOLARIS_ONCE_INIT_1_CHECK ) #if defined( SOLARIS_ONCE_INIT_1_CHECK )
#pragma ident "@(#)pthread.h 1.37 04/09/28 SMI" #pragma ident "@(#)pthread.h 1.37 04/09/28 SMI"
#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
...@@ -156,6 +146,16 @@ extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask); ...@@ -156,6 +146,16 @@ extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask);
#endif /* SOLARIS_ONCE_INIT_2_CHECK */ #endif /* SOLARIS_ONCE_INIT_2_CHECK */
#if defined( SOLARIS_RWLOCK_INIT_1_CHECK )
#ident "@(#)pthread.h 1.26 98/04/12 SMI"
#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}
#else
#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}
#endif
#endif /* SOLARIS_RWLOCK_INIT_1_CHECK */
#if defined( THREAD_KEYWORD_CHECK ) #if defined( THREAD_KEYWORD_CHECK )
extern int pthread_create (pthread_t *__restrict __thr, extern int pthread_create (pthread_t *__restrict __thr,
extern int pthread_kill (pthread_t __thr, int __signo); extern int pthread_kill (pthread_t __thr, int __signo);
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
#if defined( VMS_DISABLE_DECC_STRING_BUILTINS_CHECK )
#if !defined(__VAX) && !defined(__GNUC__)
#endif /* VMS_DISABLE_DECC_STRING_BUILTINS_CHECK */
#if defined( VMS_DECC_BUILTIN_CHECK ) #if defined( VMS_DECC_BUILTIN_CHECK )
define FD_ZERO(__p) memset((__p), 0, sizeof(*(__p))) define FD_ZERO(__p) memset((__p), 0, sizeof(*(__p)))
#endif /* VMS_DECC_BUILTIN_CHECK */ #endif /* VMS_DECC_BUILTIN_CHECK */
#if defined( VMS_DISABLE_DECC_STRING_BUILTINS_CHECK )
#if !defined(__VAX) && !defined(__GNUC__)
#endif /* VMS_DISABLE_DECC_STRING_BUILTINS_CHECK */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment