The internal header include/string.h does not work in C++: it causes link errors
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 15 Feb 2017 15:13:58 +0000 (15:13 +0000)
committerWilco Dijkstra <wdijkstr@arm.com>
Wed, 15 Feb 2017 15:13:58 +0000 (15:13 +0000)
in several C++ debug tests when any of the functions it declares are called.
The best option would be to not use internal headers for tests (unless
explicitly needed).  Add guards so that it is safe to use include/string.h from
C++.

* include/string.h: Add __cplusplus check.

ChangeLog
include/string.h

index 62961a2940a50166713ab115ca6d7ac8f77e01df..caf784ed17ee0fe07c89b3a329dcf9c680492863 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2017-02-15  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * include/string.h: Add __cplusplus check.
+
 2017-02-15  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
 
        [BZ #21134]
index 07389f327886bccc3ba30a0056c25a309c72079c..45eca3c11c8a72dacc26d4b9ea27a0642b17677f 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef _STRING_H
 
-#ifndef _ISOMAC
+#if !defined _ISOMAC && !defined __cplusplus
 #include <sys/types.h>
 
 extern void *__memccpy (void *__dest, const void *__src,
@@ -53,7 +53,7 @@ extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
    above are defined as macros in the headers.  */
 #include <string/string.h>
 
-#ifndef _ISOMAC
+#if !defined _ISOMAC && !defined __cplusplus
 extern __typeof (strcoll_l) __strcoll_l;
 extern __typeof (strxfrm_l) __strxfrm_l;
 extern __typeof (strcasecmp_l) __strcasecmp_l;