diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index a03bb0fbf35d691ce3a648ad6cd3dfe5b2fc7cec..85317256c2c20866b9d1845f9d90cd94262fe245 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -637,6 +637,10 @@ must_pass_by_ref (tree gnu_type)
 	      && TREE_CODE (TYPE_SIZE (gnu_type)) != INTEGER_CST));
 }
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* This function is called by the front-end to enumerate all the supported
    modes for the machine, as well as some predefined C types.  F is a function
    which is called back with the parameters as listed below, first a string,
@@ -755,6 +759,11 @@ enumerate_modes (void (*f) (const char *, int, int, int, int, int, int))
     }
 }
 
+#ifdef __cplusplus
+}
+#endif
+
+
 /* Return the size of the FP mode with precision PREC.  */
 
 int