aix: apply socket.h extern "C++" more narrowly.
authorDavid Edelsohn <dje.gcc@gmail.com>
Wed, 16 Sep 2020 18:56:00 +0000 (18:56 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Thu, 17 Sep 2020 14:18:32 +0000 (14:18 +0000)
Recent Technology Levels of AIX 7.2 have made sys/socket.h more C++-aware,
which causes the fix to be applied in too many locations.  This patch adds
more context for the selection to apply the fix more narrowly.

fixincludes/ChangeLog:

2020-09-17  David Edelsohn  <dje.gcc@gmail.com>

* inclhack.def (aix_externcpp1): Add more context to select.
(aix_externcpp2): Same.
* fixincl.x: Regenerate.
* tests/base/sys/socket.h: Update expected results.

fixincludes/fixincl.x
fixincludes/inclhack.def
fixincludes/tests/base/sys/socket.h

index b88139950e34a816fa46667c346666b21b210477..bf54305b9c01574d0f5ca65e688ae4d0fb8ecf89 100644 (file)
@@ -2,11 +2,11 @@
  *
  * DO NOT EDIT THIS FILE   (fixincl.x)
  *
- * It has been AutoGen-ed  January 25, 2020 at 12:15:43 PM by AutoGen 5.18.16
+ * It has been AutoGen-ed  September 16, 2020 at 06:34:57 PM by AutoGen 5.18
  * From the definitions    inclhack.def
  * and the template file   fixincl
  */
-/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Jan 25 12:15:43 EST 2020
+/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Sep 16 18:34:57 UTC 2020
  *
  * You must regenerate it.  Use the ./genfixes script.
  *
@@ -826,7 +826,8 @@ tSCC* apzAix_Externcpp1Machs[] = {
  *  content selection pattern - do fix if pattern found
  */
 tSCC zAix_Externcpp1Select0[] =
-       "#ifdef __cplusplus";
+       "#ifndef _KERNEL\n\
+#ifdef __cplusplus";
 
 #define    AIX_EXTERNCPP1_TEST_CT  1
 static tTestDesc aAix_Externcpp1Tests[] = {
@@ -837,7 +838,8 @@ static tTestDesc aAix_Externcpp1Tests[] = {
  */
 static const char* apzAix_Externcpp1Patch[] = {
     "format",
-    "#ifdef __cplusplus\n\
+    "#ifndef _KERNEL\n\
+#ifdef __cplusplus\n\
 extern \"C++\" {",
     (char*)NULL };
 
@@ -864,7 +866,8 @@ tSCC* apzAix_Externcpp2Machs[] = {
  *  content selection pattern - do fix if pattern found
  */
 tSCC zAix_Externcpp2Select0[] =
-       "#else  /\\* __cplusplus \\*/";
+       "#endif /\\* COMPAT_43 \\*/\n\
+#else  /\\* __cplusplus \\*/";
 
 #define    AIX_EXTERNCPP2_TEST_CT  1
 static tTestDesc aAix_Externcpp2Tests[] = {
@@ -875,7 +878,8 @@ static tTestDesc aAix_Externcpp2Tests[] = {
  */
 static const char* apzAix_Externcpp2Patch[] = {
     "format",
-    "} /* extern \"C++\" */\n\
+    "#endif /* COMPAT_43 */\n\
+} /* extern \"C++\" */\n\
 #else  /* __cplusplus */",
     (char*)NULL };
 
index f58e7771e1c7e9e5a4a1a3975bab6e6daf00e466..3b397422bc1a00dcdc77eb63b14cc94875c283dc 100644 (file)
@@ -553,24 +553,28 @@ fix = {
   hackname  = aix_externcpp1;
   mach      = "*-*-aix*";
   files     = "sys/socket.h";
-  select    = "#ifdef __cplusplus";
+  select    = "#ifndef _KERNEL\n"
+             "#ifdef __cplusplus";
   c_fix     = format;
-  c_fix_arg = "#ifdef __cplusplus\n"
+  c_fix_arg = "#ifndef _KERNEL\n"
+             "#ifdef __cplusplus\n"
               "extern \"C++\" {";
-  test_text = "#ifdef __cplusplus";
-
+  test_text = "#ifndef _KERNEL\n"
+             "#ifdef __cplusplus";
 };
 
 fix = {
   hackname  = aix_externcpp2;
   mach      = "*-*-aix*";
   files     = "sys/socket.h";
-  select    = "#else  /\\* __cplusplus \\*/";
+  select    = "#endif /\\* COMPAT_43 \\*/\n"
+             "#else  /\\* __cplusplus \\*/";
   c_fix     = format;
-  c_fix_arg = "} /* extern \"C++\" */\n"
+  c_fix_arg = "#endif /* COMPAT_43 */\n"
+             "} /* extern \"C++\" */\n"
               "#else  /* __cplusplus */";
-  test_text = "#else  /* __cplusplus */";
-
+  test_text = "#endif /* COMPAT_43 */\n"
+             "#else  /* __cplusplus */";
 };
 
 /*
index 5d66f8be2912beb3d830154d79a971ed1e952c9a..c1e2b425be15fff7b7007a8e2d2a2075e1027867 100644 (file)
 
 
 #if defined( AIX_EXTERNCPP1_CHECK )
+#ifndef _KERNEL
 #ifdef __cplusplus
 extern "C++" {
 #endif  /* AIX_EXTERNCPP1_CHECK */
 
 
 #if defined( AIX_EXTERNCPP2_CHECK )
+#endif /* COMPAT_43 */
 } /* extern "C++" */
 #else  /* __cplusplus */
 #endif  /* AIX_EXTERNCPP2_CHECK */