gdb: Fix building with latest libc++
Latest libc++[1] causes transitive include to <locale> when <mutex> or <thread> header is included. This causes gdb to not build[2] since <locale> defines isupper/islower etc. functions that are explicitly macroed-out in safe-ctype.h to prevent their use. Use the suggestion from libc++ to include <locale> internally when building in C++ mode to avoid build errors. Use safe-gdb-ctype.h as the include instead of "safe-ctype.h" to keep this isolated to gdb since rest of binutils does not seem to use much C++. [1]: https://reviews.llvm.org/D144331 [2]: https://issuetracker.google.com/issues/277967395
This commit is contained in:
committed by
Roland McGrath
parent
bc752bfbd9
commit
e0f4b3ec5f
@@ -40,7 +40,7 @@
|
||||
#include "defs.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "demangle.h"
|
||||
#include "cp-support.h"
|
||||
#include "c-support.h"
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@
|
||||
#include "namespace.h"
|
||||
#include <signal.h>
|
||||
#include "gdbsupport/gdb_setjmp.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "gdbsupport/selftest.h"
|
||||
#include "gdbsupport/gdb-sigmask.h"
|
||||
#include <atomic>
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
#include "symtab.h"
|
||||
#include "buildsym.h"
|
||||
#include "dictionary.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include <unordered_map>
|
||||
#include "language.h"
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@
|
||||
#include "gdbcmd.h"
|
||||
#include "dis-asm.h"
|
||||
#include "source.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include <algorithm>
|
||||
#include "gdbsupport/gdb_optional.h"
|
||||
#include "valprint.h"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "observable.h"
|
||||
#include "run-on-main-thread.h"
|
||||
#include <algorithm>
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "gdbsupport/selftest.h"
|
||||
#include <chrono>
|
||||
#include <unordered_set>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <ctype.h>
|
||||
#include "mi-parse.h"
|
||||
#include "gdbsupport/gdb_optional.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "inferior.h"
|
||||
#include "observable.h"
|
||||
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@
|
||||
#include "cli/cli-utils.h"
|
||||
#include "gdbsupport/symbol.h"
|
||||
#include <algorithm>
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "gdbsupport/parallel-for.h"
|
||||
#include "inferior.h"
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
#include "gdbtypes.h"
|
||||
#include "target.h"
|
||||
#include "regcache.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "reggroups.h"
|
||||
#include "arch-utils.h"
|
||||
#include "frame-unwind.h"
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@
|
||||
#include "source.h"
|
||||
#include "gdbsupport/byte-vector.h"
|
||||
#include "gdbsupport/gdb_optional.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "gdbsupport/rsp-low.h"
|
||||
|
||||
/* Chain containing all defined memory-tag subcommands. */
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@
|
||||
#include "prologue-value.h"
|
||||
#include "arch/riscv.h"
|
||||
#include "riscv-ravenscar-thread.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
|
||||
/* The stack must be 16-byte aligned. */
|
||||
#define SP_ALIGNMENT 16
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#include "tui/tui-layout.h"
|
||||
#include "tui/tui-source.h"
|
||||
#include "gdb_curses.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
|
||||
static void extract_display_start_addr (struct gdbarch **, CORE_ADDR *);
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "source.h"
|
||||
#include "objfiles.h"
|
||||
#include "filenames.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
|
||||
#include "tui/tui.h"
|
||||
#include "tui/tui-data.h"
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
#include "xml-builtin.h"
|
||||
#include "xml-support.h"
|
||||
#include "gdbsupport/filestuff.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "common-defs.h"
|
||||
#include "common-utils.h"
|
||||
#include "host-defs.h"
|
||||
#include "safe-ctype.h"
|
||||
#include "gdbsupport/gdb-safe-ctype.h"
|
||||
#include "gdbsupport/gdb-xfree.h"
|
||||
|
||||
void *
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
/* After safe-ctype.h is included, we can no longer use the host's
|
||||
ctype routines. Trying to do so results in compile errors. Code
|
||||
that uses safe-ctype.h that wants to refer to the locale-dependent
|
||||
ctype functions must call these wrapper versions instead. */
|
||||
ctype functions must call these wrapper versions instead.
|
||||
When compiling in C++ mode, also include <locale> before "safe-ctype.h"
|
||||
which also defines is* functions. */
|
||||
|
||||
static inline int
|
||||
gdb_isprint (int ch)
|
||||
@@ -41,6 +43,7 @@ gdb_isprint (int ch)
|
||||
#undef ISUPPER
|
||||
#undef ISXDIGIT
|
||||
|
||||
#include <locale>
|
||||
#include "safe-ctype.h"
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user