This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fixincludes patch for HP-UX netinet/in.h
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: bkorb at gnu dot org
- Date: Tue, 15 Mar 2005 02:33:15 +0000 (UTC)
- Subject: 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 */