My plugin is written in C++.  When including headers from gcc-4.6 it wraps them
in 'extern "C"' to prevent name mangling.  Some of the plugin headers include
gcc/system.h which includes the C++ header cstring if it detects the use of a
C++ compiler.  As a result cstring routines included this way end up wrapped in
'extern C', while those included directly from C++ aren't 'extern C'.  This
doesn't worry g++, but clang gets upset, erroring out with a complaint about
multiple inconsistent declarations of memchr and friends.  Is the following
patch OK to apply to gcc-4.6?  And is it in principle OK to apply to gcc-4.7
(I didn't test it there yet)?  It would be useful if gcc-4.7 is compiled as
C.

Thanks, Duncan.

Index: gcc/system.h
===================================================================
--- gcc/system.h        (revision 188518)
+++ gcc/system.h        (working copy)
@@ -191,7 +191,9 @@
 #endif

 #ifdef __cplusplus
+extern "C++" {
 # include <cstring>
+}
 #endif

 /* Some of glibc's string inlines cause warnings.  Plus we'd rather

Reply via email to