OSDN Git Service

* inclhack.def (hpux11_uint32_c): Remove.
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Apr 2009 15:17:49 +0000 (15:17 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Apr 2009 15:17:49 +0000 (15:17 +0000)
(hpux_long_double): Disable on hpux11.3*.
(hpux_long_double_2): New.
(hpux_c99_intptr): New.
(hpux_c99_inttypes): New.
(hpux_c99_inttypes2): New.
(hpux_stdint_least): New.
(hpux_stdint_fast): New.
(hpux_inttype_int_least8_t): New.
(hpux_inttype_int8_t): New.
* fixincl.x: Regenerate.
* tests/base/sys/_inttypes.h: New.
* tests/base/inttypes.h: Update.
* tests/base/stdlib.h: Update.
* tests/base/stdint.h: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146899 138bc75d-0d04-0410-961f-82ee72b054a4

fixincludes/ChangeLog
fixincludes/inclhack.def
fixincludes/tests/base/inttypes.h
fixincludes/tests/base/stdint.h
fixincludes/tests/base/stdlib.h
fixincludes/tests/base/sys/_inttypes.h [new file with mode: 0644]

index a6205bd..a31631d 100644 (file)
@@ -1,3 +1,21 @@
+2009-04-28  Steve Ellcey  <sje@cup.hp.com>
+
+       * inclhack.def (hpux11_uint32_c): Remove.
+       (hpux_long_double): Disable on hpux11.3*.
+       (hpux_long_double_2): New.
+       (hpux_c99_intptr): New.
+       (hpux_c99_inttypes): New.
+       (hpux_c99_inttypes2): New.
+       (hpux_stdint_least): New.
+       (hpux_stdint_fast): New.
+       (hpux_inttype_int_least8_t): New.
+       (hpux_inttype_int8_t): New.
+       * fixincl.x: Regenerate.
+       * tests/base/sys/_inttypes.h: New.
+       * tests/base/inttypes.h: Update.
+       * tests/base/stdlib.h: Update.
+       * tests/base/stdint.h: Update.
+
 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
 
        * inclhack.def (glibc_stdint): New fix.
index 0b7c3b0..f77845f 100644 (file)
@@ -1609,35 +1609,6 @@ fix = {
                 "extern int snprintf(char *, _hpux_size_t, char *, ...);";
 };
 
-
-/*
- * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition
- * of UINT32_C has undefined behavior according to ISO/ANSI:
- * the arguments to __CONCAT__ are not macro expanded before the
- * concatination happens so the trailing ')' in the first argument
- * is concatinated with the 'l' in the second argument creating an
- * invalid pp token.  The behavior of invalid pp tokens is undefined.
- * GCC does not handle these invalid tokens the way the HP compiler does.
- * This problem will potentially occur anytime macros are used in the
- * arguments to __CONCAT__.  A general solution to this problem would be to
- * insert another layer of macro between __CONCAT__ and its use
- * in UINT32_C.  An example of this solution can be found in the C standard.
- * A more specific solution, the one used here, is to change the UINT32_C
- * macro to not used macros in the arguments to __CONCAT__.
- */
-fix = {
-    hackname = hpux11_uint32_c;
-    files    = inttypes.h;
-    select   = "^#define UINT32_C\\(__c\\)[ \t]*"
-                         "__CONCAT__\\(__CONCAT_U__\\(__c\\),l\\)";
-    c_fix    = format;
-    c_fix_arg = '#define UINT32_C(__c) __CONCAT__(__c,ul)';
-    test_text =
-    "#define CONCAT_U__(__c)\t__CONCAT__(__c,u)\n"
-    "#define UINT32_C(__c)\t__CONCAT__(__CONCAT_U__(__c),l)";
-};
-
-
 /*
  *  Fix hpux 11.00 broken vsnprintf declaration
  */
@@ -1721,6 +1692,8 @@ fix = {
  */
 fix = {
     hackname  = hpux_long_double;
+    mach      = "*-*-hpux10*";
+    mach      = "*-*-hpux11.[012]*";
     files     = stdlib.h;
     select    = "extern[ \t]long_double[ \t]strtold";
     bypass    = "long_double_t";
@@ -1736,6 +1709,20 @@ fix = {
                "extern long_double strtold(const char *, char **);\n";
 };
 
+ /*
+  * 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.
+  */
+fix = {
+    hackname  = hpux_long_double_2;
+    mach      = "hppa*-*-hpux11.3*";
+    files     = stdlib.h;
+    select    = "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| defined\\(_PROTOTYPES\\) \\|\\| defined\\(_LONG_DOUBLE_STRUCT\\)";
+    c_fix     = format;
+    c_fix_arg = "#  if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)";
+
+    test_text = "#  if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)\n";
+};
 
 /*
  *  Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
@@ -1849,6 +1836,97 @@ fix = {
                "}\n";
 };
 
+fix = {
+    hackname  = hpux_c99_intptr;
+    mach      = "*-hp-hpux11.3*";
+    files     = 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.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.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 = {
+    hackname  = hpux_stdint_least;
+    mach      = "*-hp-hpux11.2*";
+    files     = stdint.h;
+    select    = "^[ \t]*#[ \t]*define[ \t]*UINT_LEAST64_MAX[ \t]*ULLONG_MAX";
+    c_fix     = format;
+    c_fix_arg = "#ifdef __LP64__\n#  define    UINT_LEAST64_MAX        ULONG_MAX\n#else\n%0\n#endif\n";
+    test_text ="#  define       UINT_LEAST64_MAX        ULLONG_MAX\n";
+};
+
+fix = {
+    hackname  = hpux_stdint_fast;
+    mach      = "*-hp-hpux11.2*";
+    files     = stdint.h;
+    select    = "^[ \t]*#[ \t]*define[ \t]*UINT_FAST64_MAX[ \t]*ULLONG_MAX";
+    c_fix     = format;
+    c_fix_arg = "#ifdef __LP64__\n#  define    UINT_FAST64_MAX         ULONG_MAX\n#else\n%0\n#endif\n";
+    test_text ="#  define       UINT_FAST64_MAX        ULLONG_MAX\n";
+};
+
+fix = {
+    hackname  = hpux_inttype_int_least8_t;
+    mach      = "*-hp-hpux11.*";
+    files     = sys/_inttypes.h;
+    select    = "^[ \t]*typedef[ \t]*char[ \t]*int_least8_t.*";
+    c_fix     = format;
+    c_fix_arg = "typedef signed char int_least8_t;";
+    test_text ="typedef char int_least8_t;\n";
+};
+
+fix = {
+    hackname  = hpux_inttype_int8_t;
+    mach      = "*-hp-hpux11.*";
+    files     = sys/_inttypes.h;
+    select    = "^[ \t]*typedef[ \t]*char[ \t]*int8_t.*";
+    c_fix     = format;
+    c_fix_arg = "typedef signed char int8_t;";
+    test_text ="typedef char int8_t;\n";
+};
+
 /*
  *  Fix glibc definition of HUGE_VAL in terms of hex floating point constant
  */
index 06d7ebd..3f55685 100644 (file)
@@ -9,7 +9,10 @@
 
 
 
-#if defined( HPUX11_UINT32_C_CHECK )
-#define CONCAT_U__(__c)        __CONCAT__(__c,u)
-#define UINT32_C(__c) __CONCAT__(__c,ul)
-#endif  /* HPUX11_UINT32_C_CHECK */
+#if defined( HPUX_C99_INTTYPES_CHECK )
+#define UINT8_C(__c) (__c)
+#define UINT16_C(__c) (__c)
+#define INT32_C(__c) (__c)
+#define UINT32_C(__c) __CONCAT__(__c,u)
+
+#endif  /* HPUX_C99_INTTYPES_CHECK */
index 30ba3ad..653c5da 100644 (file)
 #endif  /* GLIBC_STDINT_CHECK */
 
 
+#if defined( HPUX_C99_INTPTR_CHECK )
+#define PTRDIFF_MAX __PTRDIFF_MAX__
+#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
+#define INTPTR_MAX (2147483647l)
+#define INTPTR_MIN (-INTPTR_MAX - 1)
+#define UINTPTR_MAX (4294967295ul)
+#define SIZE_MAX __SIZE_MAX__
+
+#endif  /* HPUX_C99_INTPTR_CHECK */
+
+
+#if defined( HPUX_C99_INTTYPES2_CHECK )
+#define INT8_C(__c) (__c)
+#define UINT8_C(c) __UINT8_C(c)
+#define INT16_C(__c) (__c)
+#define UINT16_C(c) __UINT16_C(c)
+
+#endif  /* HPUX_C99_INTTYPES2_CHECK */
+
+
+#if defined( HPUX_STDINT_LEAST_CHECK )
+#ifdef __LP64__
+#  define      UINT_LEAST64_MAX        ULONG_MAX
+#else
+#  define       UINT_LEAST64_MAX        ULLONG_MAX
+#endif
+
+
+#endif  /* HPUX_STDINT_LEAST_CHECK */
+
+
+#if defined( HPUX_STDINT_FAST_CHECK )
+#ifdef __LP64__
+#  define      UINT_FAST64_MAX         ULONG_MAX
+#else
+#  define       UINT_FAST64_MAX        ULLONG_MAX
+#endif
+
+
+#endif  /* HPUX_STDINT_FAST_CHECK */
+
+
 #if defined( IRIX_STDINT_C99_CHECK )
 #if 0
 #error This header file is to be used only for c99 mode compilations
index e7174e1..d104cc7 100644 (file)
@@ -20,6 +20,12 @@ extern long double strtold(const char *, char **);
 #endif  /* HPUX_LONG_DOUBLE_CHECK */
 
 
+#if defined( HPUX_LONG_DOUBLE_2_CHECK )
+#  if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)
+
+#endif  /* HPUX_LONG_DOUBLE_2_CHECK */
+
+
 #if defined( INT_ABORT_FREE_AND_EXIT_CHECK )
 extern void    abort(int);
 extern void    free(void*);
diff --git a/fixincludes/tests/base/sys/_inttypes.h b/fixincludes/tests/base/sys/_inttypes.h
new file mode 100644 (file)
index 0000000..6773ab8
--- /dev/null
@@ -0,0 +1,21 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+       "fixinc/tests/inc/sys/_inttypes.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+
+
+#if defined( HPUX_INTTYPE_INT_LEAST8_T_CHECK )
+typedef signed char int_least8_t;
+
+#endif  /* HPUX_INTTYPE_INT_LEAST8_T_CHECK */
+
+
+#if defined( HPUX_INTTYPE_INT8_T_CHECK )
+typedef signed char int8_t;
+
+#endif  /* HPUX_INTTYPE_INT8_T_CHECK */