This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb/binutils-2_25-branch] PR gold/17473: Fix gold build with system C++ headers that use <ctype.h>.
- From: Roland McGrath <roland at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 17 Dec 2015 00:36:40 -0000
- Subject: [binutils-gdb/binutils-2_25-branch] PR gold/17473: Fix gold build with system C++ headers that use <ctype.h>.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aae60b2c1f276263ad100952e3c3364c7baa6a2b
commit aae60b2c1f276263ad100952e3c3364c7baa6a2b
Author: Roland McGrath <mcgrathr@chromium.org>
Date: Wed Dec 16 16:35:43 2015 -0800
PR gold/17473: Fix gold build with system C++ headers that use <ctype.h>.
gold/
PR gold/17473
* binary.cc: Move #include "safe-ctype.h" to be last #include.
(cherry picked from commit 95c29a83ebadd0038fd304539a83c5e90798c1b9)
Diff:
---
gold/ChangeLog | 5 +++++
gold/binary.cc | 8 +++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/gold/ChangeLog b/gold/ChangeLog
index dbe5a9e..c6ce6f3 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-16 Roland McGrath <mcgrathr@google.com>
+
+ PR ld/17473
+ * binary.cc: Move #include "safe-ctype.h" to be last #include.
+
2015-07-26 Doug Kwan <dougkwan@google.com>
Apply from master
diff --git a/gold/binary.cc b/gold/binary.cc
index 4dab52c..94973a1 100644
--- a/gold/binary.cc
+++ b/gold/binary.cc
@@ -24,7 +24,6 @@
#include <cerrno>
#include <cstring>
-#include "safe-ctype.h"
#include "elfcpp.h"
#include "stringpool.h"
@@ -32,6 +31,13 @@
#include "output.h"
#include "binary.h"
+// safe-ctype.h interferes with macros defined by the system <ctype.h>.
+// Some C++ system headers might include <ctype.h> and rely on its macro
+// definitions being intact. So make sure that safe-ctype.h is included
+// only after any C++ system headers, whether directly here (above) or via
+// other local header files (e.g. #include <string> in "binary.h").
+#include "safe-ctype.h"
+
// Support for reading binary files as input. These become blobs in
// the final output. These files are treated as though they have a
// single .data section and define three symbols: