This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fixincludes patch for HP-UX netinet/in.h


Some versions of HP-UX <netinet/in.h> wrongly condition the
definitions of macros such as htonl on #ifndef _XOPEN_SOURCE_EXTENDED,
although these macros are in POSIX.  Because GCC on HP-UX on PA now
(in 4.0 but not before) defines that macro by default, this breaks
building various software which uses macros such as htonl.  This
header bug has been reported to HP.  This patch to fixincludes fixes
installed headers with the problem.

Bootstrapped with no regressions on hppa64-hp-hpux11.23 (and verified
that the problem header was indeed fixed).  OK to commit to mainline
and 4.0 branch?

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)

2005-03-15  Joseph S. Myers  <joseph@codesourcery.com>

	* inclhack.def (hpux_htonl): New fix.
	* tests/base/netinet/in.h: New test.
	* fixincl.x: Regenerate.

diff -rupN fixincludes.orig/fixincl.x fixincludes/fixincl.x
--- fixincludes.orig/fixincl.x	2004-11-26 21:59:26.000000000 +0000
+++ fixincludes/fixincl.x	2005-03-14 21:43:43.000000000 +0000
@@ -2,11 +2,11 @@
  * 
  * DO NOT EDIT THIS FILE   (fixincl.x)
  * 
- * It has been AutoGen-ed  Friday November 26, 2004 at 09:59:26 PM UTC
+ * It has been AutoGen-ed  Monday March 14, 2005 at 09:43:34 PM UTC
  * From the definitions    inclhack.def
  * and the template file   fixincl
  */
-/* DO NOT CVS-MERGE THIS FILE, EITHER Fri Nov 26 21:59:26 UTC 2004
+/* DO NOT CVS-MERGE THIS FILE, EITHER Mon Mar 14 21:43:34 UTC 2005
  *
  * You must regenerate it.  Use the ./genfixes script.
  *
@@ -15,7 +15,7 @@
  * certain ANSI-incompatible system header files which are fixed to work
  * correctly with ANSI C and placed in a directory that GNU C will search.
  *
- * This file contains 177 fixup descriptions.
+ * This file contains 178 fixup descriptions.
  *
  * See README for more information.
  *
@@ -2648,6 +2648,46 @@ static const char* apzHpux_Ctype_MacrosP
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * *
  *
+ *  Description of Hpux_Htonl fix
+ */
+tSCC zHpux_HtonlName[] =
+     "hpux_htonl";
+
+/*
+ *  File name selection pattern
+ */
+tSCC zHpux_HtonlList[] =
+  "|netinet/in.h|";
+/*
+ *  Machine/OS name selection pattern
+ */
+#define apzHpux_HtonlMachs (const char**)NULL
+
+/*
+ *  content selection pattern - do fix if pattern found
+ */
+tSCC zHpux_HtonlSelect0[] =
+       "#ifndef _XOPEN_SOURCE_EXTENDED\n\
+(/\\*\n\
+ \\* Macros for number representation conversion\\.\n\
+ \\*/\n\
+#ifndef ntohl)";
+
+#define    HPUX_HTONL_TEST_CT  1
+static tTestDesc aHpux_HtonlTests[] = {
+  { TT_EGREP,    zHpux_HtonlSelect0, (regex_t*)NULL }, };
+
+/*
+ *  Fix Command Arguments for Hpux_Htonl
+ */
+static const char* apzHpux_HtonlPatch[] = {
+    "format",
+    "#if 1\n\
+%1",
+    (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
  *  Description of Hpux_Long_Double fix
  */
 tSCC zHpux_Long_DoubleName[] =
@@ -7085,9 +7125,9 @@ static const char* apzX11_SprintfPatch[]
  *
  *  List of all fixes
  */
-#define REGEX_COUNT          207
+#define REGEX_COUNT          208
 #define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT            177
+#define FIX_COUNT            178
 
 /*
  *  Enumerate the fixes
@@ -7156,6 +7196,7 @@ typedef enum {
     HPUX11_VSNPRINTF_FIXIDX,
     HPUX8_BOGUS_INLINES_FIXIDX,
     HPUX_CTYPE_MACROS_FIXIDX,
+    HPUX_HTONL_FIXIDX,
     HPUX_LONG_DOUBLE_FIXIDX,
     HPUX_SYSTIME_FIXIDX,
     INT_ABORT_FREE_AND_EXIT_FIXIDX,
@@ -7588,6 +7629,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
      HPUX_CTYPE_MACROS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
      aHpux_Ctype_MacrosTests,   apzHpux_Ctype_MacrosPatch, 0 },
 
+  {  zHpux_HtonlName,    zHpux_HtonlList,
+     apzHpux_HtonlMachs,
+     HPUX_HTONL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+     aHpux_HtonlTests,   apzHpux_HtonlPatch, 0 },
+
   {  zHpux_Long_DoubleName,    zHpux_Long_DoubleList,
      apzHpux_Long_DoubleMachs,
      HPUX_LONG_DOUBLE_TEST_CT, FD_MACH_ONLY,
diff -rupN fixincludes.orig/inclhack.def fixincludes/inclhack.def
--- fixincludes.orig/inclhack.def	2004-11-26 21:59:22.000000000 +0000
+++ fixincludes/inclhack.def	2005-03-14 21:43:14.000000000 +0000
@@ -1507,6 +1507,34 @@ fix = {
 
 
 /*
+ *  Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
+ */
+fix = {
+    hackname = hpux_htonl;
+    files    = netinet/in.h;
+    select   = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
+               "(/\\*\n"
+               " \\* Macros for number representation conversion\\.\n"
+               " \\*/\n"
+               "#ifndef ntohl)";
+    c_fix     = format;
+    c_fix_arg = "#if 1\n%1";
+
+    test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
+                "/*\n"
+                " * Macros for number representation conversion.\n"
+                " */\n"
+                "#ifndef ntohl\n"
+                "#define ntohl(x)        (x)\n"
+                "#define ntohs(x)        (x)\n"
+                "#define htonl(x)        (x)\n"
+                "#define htons(x)        (x)\n"
+                "#endif\n"
+                "#endif  /* ! _XOPEN_SOURCE_EXTENDED */";
+};
+
+
+/*
  * HP-UX long_double
  */
 fix = {
diff -rupN fixincludes.orig/tests/base/netinet/in.h fixincludes/tests/base/netinet/in.h
--- fixincludes.orig/tests/base/netinet/in.h	1970-01-01 00:00:00.000000000 +0000
+++ fixincludes/tests/base/netinet/in.h	2005-03-14 21:44:38.000000000 +0000
@@ -0,0 +1,24 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+	"fixinc/tests/inc/netinet/in.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+
+
+#if defined( HPUX_HTONL_CHECK )
+#if 1
+/*
+ * Macros for number representation conversion.
+ */
+#ifndef ntohl
+#define ntohl(x)        (x)
+#define ntohs(x)        (x)
+#define htonl(x)        (x)
+#define htons(x)        (x)
+#endif
+#endif  /* ! _XOPEN_SOURCE_EXTENDED */
+#endif  /* HPUX_HTONL_CHECK */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]