This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] 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=95c29a83ebadd0038fd304539a83c5e90798c1b9

commit 95c29a83ebadd0038fd304539a83c5e90798c1b9
Author: Roland McGrath <mcgrathr@chromium.org>
Date:   Wed Dec 16 16:35:27 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.

Diff:
---
 gold/ChangeLog | 7 ++++++-
 gold/binary.cc | 8 +++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gold/ChangeLog b/gold/ChangeLog
index 06608eb..d929cb7 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-12-13  Cary Coutant  <ccoutant@gmail.com>
 
 	* object.h (Object::get_output_view): remove const from return type.
@@ -25,7 +30,7 @@
 	* object.h (Object::get_output_view): New function.
 	(Object::do_get_output_view): New function.
 	(Sized_relobj_file::do_get_output_view): New function.
-	(Sized_relobj_file::output_views_): New data member.	
+	(Sized_relobj_file::output_views_): New data member.
 	* reloc.cc: (Sized_relobj_file::do_relocate): Store pointer to
 	output views in class object.
 	(Sized_relobj_file::do_get_output_view): New function.
diff --git a/gold/binary.cc b/gold/binary.cc
index 12ca296..52df81a 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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]