From e0f4b3ec5f36ff90dbea21aab2190fb4565ca67b Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 17 Apr 2023 13:33:15 -0700 Subject: [PATCH] gdb: Fix building with latest libc++ Latest libc++[1] causes transitive include to when or header is included. This causes gdb to not build[2] since 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 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 --- gdb/cp-name-parser.y | 2 +- gdb/cp-support.c | 2 +- gdb/dictionary.c | 2 +- gdb/disasm.c | 2 +- gdb/dwarf2/cooked-index.c | 2 +- gdb/mi/mi-cmd-stack.c | 2 +- gdb/minsyms.c | 2 +- gdb/or1k-tdep.c | 2 +- gdb/printcmd.c | 2 +- gdb/riscv-tdep.c | 2 +- gdb/tui/tui-layout.c | 2 +- gdb/tui/tui-winsource.c | 2 +- gdb/xml-support.c | 2 +- gdbsupport/common-utils.cc | 2 +- gdbsupport/gdb-safe-ctype.h | 5 ++++- 15 files changed, 18 insertions(+), 15 deletions(-) diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 175e763a423..80188074202 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -40,7 +40,7 @@ #include "defs.h" #include -#include "safe-ctype.h" +#include "gdbsupport/gdb-safe-ctype.h" #include "demangle.h" #include "cp-support.h" #include "c-support.h" diff --git a/gdb/cp-support.c b/gdb/cp-support.c index f39c5d051dd..e804024c08f 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -36,7 +36,7 @@ #include "namespace.h" #include #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 diff --git a/gdb/dictionary.c b/gdb/dictionary.c index 403508adfdc..4f8df240a3e 100644 --- a/gdb/dictionary.c +++ b/gdb/dictionary.c @@ -26,7 +26,7 @@ #include "symtab.h" #include "buildsym.h" #include "dictionary.h" -#include "safe-ctype.h" +#include "gdbsupport/gdb-safe-ctype.h" #include #include "language.h" diff --git a/gdb/disasm.c b/gdb/disasm.c index 03cd4b7ee02..e6b31bf3633 100644 --- a/gdb/disasm.c +++ b/gdb/disasm.c @@ -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 #include "gdbsupport/gdb_optional.h" #include "valprint.h" diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index 1b1a16b1ae2..25635d9b72e 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -29,7 +29,7 @@ #include "observable.h" #include "run-on-main-thread.h" #include -#include "safe-ctype.h" +#include "gdbsupport/gdb-safe-ctype.h" #include "gdbsupport/selftest.h" #include #include diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index 4c4662ab5d7..b8169a67e44 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -35,7 +35,7 @@ #include #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" diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 5fcc7242626..07e83e87c1a 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -52,7 +52,7 @@ #include "cli/cli-utils.h" #include "gdbsupport/symbol.h" #include -#include "safe-ctype.h" +#include "gdbsupport/gdb-safe-ctype.h" #include "gdbsupport/parallel-for.h" #include "inferior.h" diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c index 0d520661f09..5cef1fa279c 100644 --- a/gdb/or1k-tdep.c +++ b/gdb/or1k-tdep.c @@ -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" diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 6435311736b..f6d5bad8ae0 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -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. */ diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index 144eb7e0132..500279e1ae9 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -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 diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 01d243ba9a1..50c568fb7d7 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -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 *); diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index 84f9d97c554..3c4ce501e5e 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -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" diff --git a/gdb/xml-support.c b/gdb/xml-support.c index 255c10864c5..0c98dc7e6b4 100644 --- a/gdb/xml-support.c +++ b/gdb/xml-support.c @@ -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 #include diff --git a/gdbsupport/common-utils.cc b/gdbsupport/common-utils.cc index 4a96f2c0e11..a2dde636011 100644 --- a/gdbsupport/common-utils.cc +++ b/gdbsupport/common-utils.cc @@ -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 * diff --git a/gdbsupport/gdb-safe-ctype.h b/gdbsupport/gdb-safe-ctype.h index f9743ba26f1..bec85c0014d 100644 --- a/gdbsupport/gdb-safe-ctype.h +++ b/gdbsupport/gdb-safe-ctype.h @@ -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 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 #include "safe-ctype.h" #endif -- 2.30.2