diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 8cdb62bde03..c34733e754f 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -358,7 +358,7 @@ maint_show_ada_cmd (const char *args, int from_tty)
 
 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
 
-static int ada_ignore_descriptive_types_p = 0;
+static bool ada_ignore_descriptive_types_p = false;
 
 			/* Inferior-specific data.  */
 
@@ -3795,7 +3795,7 @@ sort_choices (struct block_symbol syms[], int nsyms)
 
 /* Whether GDB should display formals and return types for functions in the
    overloads selection menu.  */
-static int print_signatures = 1;
+static bool print_signatures = true;
 
 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
    all but functions, the signature is just the name of the symbol.  For
@@ -9299,7 +9299,7 @@ ada_is_string_type (struct type *type)
 
    Set to True if the debugger should trust the contents of PAD types.
    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
-static int trust_pad_over_xvs = 1;
+static bool trust_pad_over_xvs = true;
 
 /* True if TYPE is a struct type introduced by the compiler to force the
    alignment of a value.  Such types have a single field with a
diff --git a/gdb/arch/aarch64-insn.c b/gdb/arch/aarch64-insn.c
index e04ad87fefb..48d0be83ff9 100644
--- a/gdb/arch/aarch64-insn.c
+++ b/gdb/arch/aarch64-insn.c
@@ -20,7 +20,7 @@
 #include "aarch64-insn.h"
 
 /* Toggle this file's internal debugging dump.  */
-int aarch64_debug = 0;
+bool aarch64_debug = false;
 
 /* Extract a signed value from a bit field within an instruction
    encoding.
diff --git a/gdb/arch/aarch64-insn.h b/gdb/arch/aarch64-insn.h
index 4492594c1b9..47a825b1142 100644
--- a/gdb/arch/aarch64-insn.h
+++ b/gdb/arch/aarch64-insn.h
@@ -19,7 +19,7 @@
 #ifndef ARCH_AARCH64_INSN_H
 #define ARCH_AARCH64_INSN_H
 
-extern int aarch64_debug;
+extern bool aarch64_debug;
 
 /* List of opcodes that we need for building the jump pad and relocating
    an instruction.  */
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index 6a374bbc74b..ef44e68d319 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -66,7 +66,7 @@
 #define PTRACE_SETHBPREGS 30
 #endif
 
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 class arm_linux_nat_target final : public linux_nat_target
 {
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index aec20877d9d..31ea4564dbb 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -56,7 +56,7 @@
 #include "user-regs.h"
 #include <ctype.h>
 #include "elf/common.h"
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 /* Under ARM GNU/Linux the traditional way of performing a breakpoint
    is to execute a particular software interrupt, rather than use a
diff --git a/gdb/arm-nbsd-nat.c b/gdb/arm-nbsd-nat.c
index 2a83553a3fe..38a9e954b92 100644
--- a/gdb/arm-nbsd-nat.c
+++ b/gdb/arm-nbsd-nat.c
@@ -40,7 +40,7 @@ public:
 
 static arm_netbsd_nat_target the_arm_netbsd_nat_target;
 
-extern int arm_apcs_32;
+extern bool arm_apcs_32;
 
 static void
 arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 5dcc4431220..0650485bf04 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -65,7 +65,7 @@
 #include "gdbsupport/selftest.h"
 #endif
 
-static int arm_debug;
+static bool arm_debug;
 
 /* Macros for setting and testing a bit in a minimal symbol that marks
    it as Thumb function.  The MSB of the minimal symbol's "info" field
@@ -296,7 +296,7 @@ static CORE_ADDR arm_analyze_prologue (struct gdbarch *gdbarch,
 
 /* Set to true if the 32-bit mode is in use.  */
 
-int arm_apcs_32 = 1;
+bool arm_apcs_32 = true;
 
 /* Return the bit mask in ARM_PS_REGNUM that indicates Thumb mode.  */
 
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 115d5c10e82..2d18629f9f1 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -61,7 +61,7 @@ static void maybe_print_script_not_found_warning
    const char *section_name, unsigned offset);
 
 /* Value of the 'set debug auto-load' configuration variable.  */
-static int debug_auto_load = 0;
+static bool debug_auto_load = false;
 
 /* "show" command for the debug_auto_load configuration variable.  */
 
@@ -79,7 +79,7 @@ show_debug_auto_load (struct ui_file *file, int from_tty,
    set auto-load gdb-scripts on|off
    This is true if we should auto-load associated scripts when an objfile
    is opened, false otherwise.  */
-static int auto_load_gdb_scripts = 1;
+static bool auto_load_gdb_scripts = true;
 
 /* "show" command for the auto_load_gdb_scripts configuration variable.  */
 
@@ -110,16 +110,16 @@ auto_load_gdb_scripts_enabled (const struct extension_language_defn *extlang)
    This flag exists to facilitate deferring auto-loading during start-up
    until after ./.gdbinit has been read; it may augment the search directories
    used to find the scripts.  */
-int global_auto_load = 1;
+bool global_auto_load = true;
 
 /* Auto-load .gdbinit file from the current directory?  */
-int auto_load_local_gdbinit = 1;
+bool auto_load_local_gdbinit = true;
 
 /* Absolute pathname to the current directory .gdbinit, if it exists.  */
 char *auto_load_local_gdbinit_pathname = NULL;
 
-/* Boolean value if AUTO_LOAD_LOCAL_GDBINIT_PATHNAME has been loaded.  */
-int auto_load_local_gdbinit_loaded = 0;
+/* if AUTO_LOAD_LOCAL_GDBINIT_PATHNAME has been loaded.  */
+bool auto_load_local_gdbinit_loaded = true;
 
 /* "show" command for the auto_load_local_gdbinit configuration variable.  */
 
diff --git a/gdb/auto-load.h b/gdb/auto-load.h
index 5d5903e1198..ab865e9fa51 100644
--- a/gdb/auto-load.h
+++ b/gdb/auto-load.h
@@ -25,11 +25,11 @@ struct program_space;
 struct auto_load_pspace_info;
 struct extension_language_defn;
 
-extern int global_auto_load;
+extern bool global_auto_load;
 
-extern int auto_load_local_gdbinit;
+extern bool auto_load_local_gdbinit;
 extern char *auto_load_local_gdbinit_pathname;
-extern int auto_load_local_gdbinit_loaded;
+extern bool auto_load_local_gdbinit_loaded;
 
 extern struct auto_load_pspace_info *
   get_auto_load_pspace_data_for_loading (struct program_space *pspace);
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 9478d2dcf20..8c7c3ea2895 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -290,7 +290,7 @@ static char *dprintf_channel;
 
 /* True if dprintf commands should continue to operate even if GDB
    has disconnected.  */
-static int disconnected_dprintf = 1;
+static bool disconnected_dprintf = true;
 
 struct command_line *
 breakpoint_commands (struct breakpoint *b)
@@ -301,7 +301,7 @@ breakpoint_commands (struct breakpoint *b)
 /* Flag indicating that a command has proceeded the inferior past the
    current breakpoint.  */
 
-static int breakpoint_proceeded;
+static bool breakpoint_proceeded;
 
 const char *
 bpdisp_text (enum bpdisp disp)
@@ -350,7 +350,7 @@ show_pending_break_support (struct ui_file *file, int from_tty,
    set with "break" but falling in read-only memory.
    If 0, gdb will warn about such breakpoints, but won't automatically
    use hardware breakpoints.  */
-static int automatic_hardware_breakpoints;
+static bool automatic_hardware_breakpoints;
 static void
 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
 				     struct cmd_list_element *c,
@@ -368,7 +368,7 @@ show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
    breakpoints until the next resume, and removes them again when the
    target fully stops.  This is a bit safer in case GDB crashes while
    processing user input.  */
-static int always_inserted_mode = 0;
+static bool always_inserted_mode = true;
 
 static void
 show_always_inserted_mode (struct ui_file *file, int from_tty,
@@ -477,7 +477,7 @@ static int executing_breakpoint_commands;
 static int overlay_events_enabled;
 
 /* See description in breakpoint.h. */
-int target_exact_watchpoints = 0;
+bool target_exact_watchpoints = false;
 
 /* Walk the following statement or block through all breakpoints.
    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 69a043c7676..49380e30c26 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -675,7 +675,7 @@ enum watchpoint_triggered
    only one register per watchpoint, thus assuming that all acesses that
    modify a memory location happen at its starting address. */
 
-extern int target_exact_watchpoints;
+extern bool target_exact_watchpoints;
 
 /* Note that the ->silent field is not currently used by any commands
    (though the code is in there if it was to be, and set_raw_breakpoint
diff --git a/gdb/btrace.c b/gdb/btrace.c
index 466607dbfc2..1b809fb5c08 100644
--- a/gdb/btrace.c
+++ b/gdb/btrace.c
@@ -51,7 +51,7 @@ static struct cmd_list_element *maint_btrace_pt_set_cmdlist;
 static struct cmd_list_element *maint_btrace_pt_show_cmdlist;
 
 /* Control whether to skip PAD packets when computing the packet history.  */
-static int maint_btrace_pt_skip_pad = 1;
+static bool maint_btrace_pt_skip_pad = true;
 
 static void btrace_add_pc (struct thread_info *tp);
 
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 4fc656775c9..59c71f67561 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -165,7 +165,7 @@ struct cmd_list_element *showchecklist;
 /* Command tracing state.  */
 
 int source_verbose = 0;
-int trace_commands = 0;
+bool trace_commands = false;
 
 /* 'script-extension' option support.  */
 
diff --git a/gdb/cli/cli-cmds.h b/gdb/cli/cli-cmds.h
index 5bfffde04a1..1a8b9a0d506 100644
--- a/gdb/cli/cli-cmds.h
+++ b/gdb/cli/cli-cmds.h
@@ -139,7 +139,7 @@ extern gdb::optional<open_script>
 /* Command tracing state.  */
 
 extern int source_verbose;
-extern int trace_commands;
+extern bool trace_commands;
 
 /* Common code for the "with" and "maintenance with" commands.
    SET_CMD_PREFIX is the spelling of the corresponding "set" command
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 7d4b39f467c..debffbc0f74 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -589,7 +589,7 @@ const char * const boolean_enums[] = { "on", "off", NULL };
    Returns the new command element.  */
 
 cmd_list_element *
-add_setshow_boolean_cmd (const char *name, enum command_class theclass, int *var,
+add_setshow_boolean_cmd (const char *name, enum command_class theclass, bool *var,
 			 const char *set_doc, const char *show_doc,
 			 const char *help_doc,
 			 cmd_const_sfunc_ftype *set_func,
diff --git a/gdb/cli/cli-logging.c b/gdb/cli/cli-logging.c
index 9e39be197b8..22b540b4812 100644
--- a/gdb/cli/cli-logging.c
+++ b/gdb/cli/cli-logging.c
@@ -33,7 +33,7 @@ show_logging_filename (struct ui_file *file, int from_tty,
 		    value);
 }
 
-static int logging_overwrite;
+static bool logging_overwrite;
 
 static void
 maybe_warn_already_logging ()
@@ -61,8 +61,8 @@ show_logging_overwrite (struct ui_file *file, int from_tty,
 }
 
 /* Value as configured by the user.  */
-static int logging_redirect;
-static int debug_redirect;
+static bool logging_redirect;
+static bool debug_redirect;
 
 static void
 set_logging_redirect (const char *args,
diff --git a/gdb/cli/cli-option.h b/gdb/cli/cli-option.h
index d231d8b1adb..3fd0c0cdae9 100644
--- a/gdb/cli/cli-option.h
+++ b/gdb/cli/cli-option.h
@@ -82,7 +82,7 @@ public:
      returns the address of some member.  */
   union
     {
-      int *(*boolean) (const option_def &, void *ctx);
+      bool *(*boolean) (const option_def &, void *ctx);
       unsigned int *(*uinteger) (const option_def &, void *ctx);
       int *(*integer) (const option_def &, void *ctx);
       const char **(*enumeration) (const option_def &, void *ctx);
@@ -155,7 +155,7 @@ template<typename Context>
 struct boolean_option_def : option_def
 {
   boolean_option_def (const char *long_option_,
-		      int *(*get_var_address_cb_) (Context *),
+		      bool *(*get_var_address_cb_) (Context *),
 		      show_value_ftype *show_cmd_cb_,
 		      const char *set_doc_,
 		      const char *show_doc_ = nullptr,
@@ -165,7 +165,7 @@ struct boolean_option_def : option_def
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
   {
-    var_address.boolean = detail::get_var_address<int, Context>;
+    var_address.boolean = detail::get_var_address<bool, Context>;
   }
 };
 
@@ -173,11 +173,11 @@ struct boolean_option_def : option_def
    hood, but unlike boolean options, flag options don't take an on/off
    argument.  */
 
-template<typename Context = int>
+template<typename Context = bool>
 struct flag_option_def : boolean_option_def<Context>
 {
   flag_option_def (const char *long_option_,
-		     int *(*var_address_cb_) (Context *),
+		     bool *(*var_address_cb_) (Context *),
 		     const char *set_doc_,
 		     const char *help_doc_ = nullptr)
     : boolean_option_def<Context> (long_option_,
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 40538832b5d..d8391597acf 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -416,9 +416,9 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
 
 	if (val < 0)
 	  error (_("\"on\" or \"off\" expected."));
-	if (val != *(int *) c->var)
+	if (val != *(bool *) c->var)
 	  {
-	    *(int *) c->var = val;
+	    *(bool *) c->var = val;
 
 	    option_changed = 1;
 	  }
@@ -588,7 +588,7 @@ do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
 	  break;
 	case var_boolean:
 	  {
-	    const char *opt = *(int *) c->var ? "on" : "off";
+	    const char *opt = *(bool *) c->var ? "on" : "off";
 
 	    gdb::observers::command_param_changed.notify (name, opt);
 	  }
@@ -645,7 +645,7 @@ get_setshow_command_value_string (cmd_list_element *c)
 	stb.puts (*(char **) c->var);
       break;
     case var_boolean:
-      stb.puts (*(int *) c->var ? "on" : "off");
+      stb.puts (*(bool *) c->var ? "on" : "off");
       break;
     case var_auto_boolean:
       switch (*(enum auto_boolean*) c->var)
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index e594e38cd6d..ea301774d22 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -26,15 +26,15 @@
 /* True if styling is enabled.  */
 
 #if defined (__MSDOS__) || defined (__CYGWIN__)
-int cli_styling = 0;
+bool cli_styling = false;
 #else
-int cli_styling = 1;
+bool cli_styling = true;
 #endif
 
 /* True if source styling is enabled.  Note that this is only
    consulted when cli_styling is true.  */
 
-int source_styling = 1;
+bool source_styling = true;
 
 /* Name of colors; must correspond to ui_file_style::basic_color.  */
 static const char * const cli_colors[] = {
diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h
index cdcea84f0ee..826162f5788 100644
--- a/gdb/cli/cli-style.h
+++ b/gdb/cli/cli-style.h
@@ -110,9 +110,9 @@ extern cli_style_option title_style;
 
 
 /* True if source styling is enabled.  */
-extern int source_styling;
+extern bool source_styling;
 
 /* True if styling is enabled.  */
-extern int cli_styling;
+extern bool cli_styling;
 
 #endif /* CLI_CLI_STYLE_H */
diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
index cbe8ff66e15..33b8663e9ae 100644
--- a/gdb/cli/cli-utils.h
+++ b/gdb/cli/cli-utils.h
@@ -215,9 +215,9 @@ check_for_argument (char **str, const char *arg)
 
 struct qcs_flags
 {
-  int quiet = false;
-  int cont = false;
-  int silent = false;
+  bool quiet = false;
+  bool cont = false;
+  bool silent = false;
 };
 
 /* Validate FLAGS.  Throws an error if both FLAGS->CONT and
diff --git a/gdb/command.h b/gdb/command.h
index 2c608048d54..cf190ef649d 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -62,8 +62,8 @@ cmd_types;
 /* Types of "set" or "show" command.  */
 typedef enum var_types
   {
-    /* "on" or "off".  *VAR is an integer which is nonzero for on,
-       zero for off.  */
+    /* "on" or "off".  *VAR is a bool which is true for on,
+       false for off.  */
     var_boolean,
 
     /* "on" / "true" / "enable" or "off" / "false" / "disable" or
@@ -331,7 +331,7 @@ extern void add_setshow_auto_boolean_cmd (const char *name,
 extern cmd_list_element *
   add_setshow_boolean_cmd (const char *name,
 			   enum command_class theclass,
-			   int *var,
+			   bool *var,
 			   const char *set_doc, const char *show_doc,
 			   const char *help_doc,
 			   cmd_const_sfunc_ftype *set_func,
diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c
index 3a7c8b01f7d..042c2afbe90 100644
--- a/gdb/compile/compile-cplus-types.c
+++ b/gdb/compile/compile-cplus-types.c
@@ -41,11 +41,11 @@ const char *compile_cplus_instance::m_default_cflags = "-std=gnu++11";
 
 /* Flag to enable internal debugging.  */
 
-static int debug_compile_cplus_types = 0;
+static bool debug_compile_cplus_types = false;
 
 /* Flag to enable internal scope switching debugging.  */
 
-static int debug_compile_cplus_scopes = 0;
+static bool debug_compile_cplus_scopes = false;
 
 /* Forward declarations.  */
 
diff --git a/gdb/compile/compile-internal.h b/gdb/compile/compile-internal.h
index 406a369d683..9c0e9894108 100644
--- a/gdb/compile/compile-internal.h
+++ b/gdb/compile/compile-internal.h
@@ -21,7 +21,7 @@
 
 /* Debugging flag for the "compile" family of commands.  */
 
-extern int compile_debug;
+extern bool compile_debug;
 
 struct block;
 
diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c
index 87970d2c948..5c3400ffec8 100644
--- a/gdb/compile/compile.c
+++ b/gdb/compile/compile.c
@@ -56,7 +56,7 @@ static struct cmd_list_element *compile_command_list;
 
 /* Debug flag for "compile" commands.  */
 
-int compile_debug;
+bool compile_debug;
 
 /* Object of this type are stored in the compiler's symbol_err_map.  */
 
@@ -241,7 +241,7 @@ show_compile_debug (struct ui_file *file, int from_tty,
 struct compile_options
 {
   /* For -raw.  */
-  int raw = false;
+  bool raw = false;
 };
 
 using compile_flag_option_def
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index b8b0fcc0ae2..cd732b60e7d 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1469,10 +1469,10 @@ cp_lookup_rtti_type (const char *name, const struct block *block)
 
 #ifdef HAVE_WORKING_FORK
 
-/* If nonzero, attempt to catch crashes in the demangler and print
+/* If true, attempt to catch crashes in the demangler and print
    useful debugging information.  */
 
-static int catch_demangler_crashes = 1;
+static bool catch_demangler_crashes = true;
 
 /* Stack context and environment for demangler crash recovery.  */
 
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 8eda05806f8..578f9516265 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -148,7 +148,7 @@ extern const struct cris_spec_reg cris_spec_regs[];
 static unsigned int usr_cmd_cris_version;
 
 /* Indicates whether to trust the above variable.  */
-static int usr_cmd_cris_version_valid = 0;
+static bool usr_cmd_cris_version_valid = true;
 
 static const char cris_mode_normal[] = "normal";
 static const char cris_mode_guru[] = "guru";
@@ -163,7 +163,7 @@ static const char *const cris_modes[] = {
 static const char *usr_cmd_cris_mode = cris_mode_normal;
 
 /* Whether to make use of Dwarf-2 CFI (default on).  */
-static int usr_cmd_cris_dwarf2_cfi = 1;
+static bool usr_cmd_cris_dwarf2_cfi = true;
 
 /* Sigtramp identification code copied from i386-linux-tdep.c.  */
 
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 54b856af067..a6f78a187cf 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -59,7 +59,7 @@
 #include <vector>
 
 /* Control debugging information emitted in this file.  */
-static int csky_debug = 0;
+static bool csky_debug = false;
 
 static struct reggroup *cr_reggroup;
 static struct reggroup *fr_reggroup;
diff --git a/gdb/dcache.c b/gdb/dcache.c
index 1716def4c4a..509782c319a 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -126,7 +126,7 @@ static int dcache_read_line (DCACHE *dcache, struct dcache_block *db);
 
 static struct dcache_block *dcache_alloc (DCACHE *dcache, CORE_ADDR addr);
 
-static int dcache_enabled_p = 0; /* OBSOLETE */
+static bool dcache_enabled_p = false; /* OBSOLETE */
 
 static void
 show_dcache_enabled_p (struct ui_file *file, int from_tty,
diff --git a/gdb/defs.h b/gdb/defs.h
index c9a38b60a6d..f12ba366ccf 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -314,7 +314,7 @@ struct ui;
 
 extern int input_interactive_p (struct ui *);
 
-extern int info_verbose;
+extern bool info_verbose;
 
 /* From printcmd.c */
 
diff --git a/gdb/demangle.c b/gdb/demangle.c
index 29f46968a29..cfe3421b23c 100644
--- a/gdb/demangle.c
+++ b/gdb/demangle.c
@@ -44,7 +44,7 @@
 #endif
 
 /* See documentation in gdb-demangle.h.  */
-int demangle = 1;
+bool demangle = true;
 
 static void
 show_demangle (struct ui_file *file, int from_tty,
@@ -57,7 +57,7 @@ show_demangle (struct ui_file *file, int from_tty,
 }
 
 /* See documentation in gdb-demangle.h.  */
-int asm_demangle = 0;
+bool asm_demangle = false;
 
 static void
 show_asm_demangle (struct ui_file *file, int from_tty,
diff --git a/gdb/dwarf-index-cache.c b/gdb/dwarf-index-cache.c
index e56cb59343c..74f06dfbfb7 100644
--- a/gdb/dwarf-index-cache.c
+++ b/gdb/dwarf-index-cache.c
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 
 /* When set to 1, show debug messages about the index cache.  */
-static int debug_index_cache = 0;
+static bool debug_index_cache = false;
 
 /* The index cache directory, used for "set/show index-cache directory".  */
 static char *index_cache_directory = NULL;
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index 7839942b8c7..e18b35e7dba 100644
--- a/gdb/dwarf2-frame.c
+++ b/gdb/dwarf2-frame.c
@@ -171,7 +171,7 @@ static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
 
 
 /* See dwarf2-frame.h.  */
-int dwarf2_frame_unwinders_enabled_p = 1;
+bool dwarf2_frame_unwinders_enabled_p = true;
 
 /* Store the length the expression for the CFA in the `cfa_reg' field,
    which is unused in that case.  */
diff --git a/gdb/dwarf2-frame.h b/gdb/dwarf2-frame.h
index 6caf82ae0fc..3c54f0950e0 100644
--- a/gdb/dwarf2-frame.h
+++ b/gdb/dwarf2-frame.h
@@ -201,7 +201,7 @@ struct dwarf2_frame_state
    registered with the gdbarch.  Not all architectures can or do use the
    DWARF unwinders.  Setting this to true on a target that does not
    otherwise support the DWARF unwinders has no effect.  */
-extern int dwarf2_frame_unwinders_enabled_p;
+extern bool dwarf2_frame_unwinders_enabled_p;
 
 /* Set the architecture-specific register state initialization
    function for GDBARCH to INIT_REG.  */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index a2b80ebbc15..ea9904c4162 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -102,11 +102,11 @@ static unsigned int dwarf_die_debug = 0;
 /* When non-zero, dump line number entries as they are read in.  */
 static unsigned int dwarf_line_debug = 0;
 
-/* When non-zero, cross-check physname against demangler.  */
-static int check_physname = 0;
+/* When true, cross-check physname against demangler.  */
+static bool check_physname = false;
 
-/* When non-zero, do not reject deprecated .gdb_index sections.  */
-static int use_deprecated_index_sections = 0;
+/* When true, do not reject deprecated .gdb_index sections.  */
+static bool use_deprecated_index_sections = false;
 
 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
 
@@ -25837,7 +25837,7 @@ show_dwarf_cmd (const char *args, int from_tty)
   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
 }
 
-int dwarf_always_disassemble;
+bool dwarf_always_disassemble;
 
 static void
 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
diff --git a/gdb/eval.c b/gdb/eval.c
index aed89e5f85a..f8915b99578 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -43,7 +43,7 @@
 #include <ctype.h>
 
 /* This is defined in valops.c */
-extern int overload_resolution;
+extern bool overload_resolution;
 
 /* Prototypes for local functions.  */
 
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 2132fb550dc..0b05b2f85a5 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -86,11 +86,11 @@ static void async_sigterm_handler (gdb_client_data arg);
    ezannoni: as of 1999-04-29 I expect that this
    variable will not be used after gdb is changed to use the event
    loop as default engine, and event-top.c is merged into top.c.  */
-int set_editing_cmd_var;
+bool set_editing_cmd_var;
 
 /* This is used to display the notification of the completion of an
    asynchronous execution command.  */
-int exec_done_display_p = 0;
+bool exec_done_display_p = false;
 
 /* Used by the stdin event handler to compensate for missed stdin events.
    Setting this to a non-zero value inside an stdin callback makes the callback
diff --git a/gdb/event-top.h b/gdb/event-top.h
index 4c3e6cb8612..1dc7b13d4f8 100644
--- a/gdb/event-top.h
+++ b/gdb/event-top.h
@@ -52,8 +52,8 @@ extern void async_enable_stdin (void);
 /* Exported variables from event-top.c.
    FIXME: these should really go into top.h.  */
 
-extern int set_editing_cmd_var;
-extern int exec_done_display_p;
+extern bool set_editing_cmd_var;
+extern bool exec_done_display_p;
 extern struct prompts the_prompts;
 extern void (*after_char_processing_hook) (void);
 extern int call_stdin_event_handler_again_p;
diff --git a/gdb/exec.c b/gdb/exec.c
index 3098fcaadd5..4e4cacffda0 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -84,7 +84,7 @@ static exec_target exec_ops;
 
 /* Whether to open exec and core files read-only or read-write.  */
 
-int write_files = 0;
+bool write_files = false;
 static void
 show_write_files (struct ui_file *file, int from_tty,
 		  struct cmd_list_element *c, const char *value)
diff --git a/gdb/frame.h b/gdb/frame.h
index 09842c92a34..624bc87c9d3 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -808,9 +808,9 @@ struct frame_print_options
   const char *print_frame_info = print_frame_info_auto;
   const char *print_entry_values = print_entry_values_default;
 
-  /* If non-zero, don't invoke pretty-printers for frame
+  /* If true, don't invoke pretty-printers for frame
      arguments.  */
-  int print_raw_frame_arguments;
+  bool print_raw_frame_arguments;
 };
 
 /* The values behind the global "set print ..." settings.  */
@@ -931,11 +931,11 @@ struct set_backtrace_options
 {
   /* Flag to indicate whether backtraces should continue past
      main.  */
-  int backtrace_past_main = 0;
+  bool backtrace_past_main = false;
 
   /* Flag to indicate whether backtraces should continue past
      entry.  */
-  int backtrace_past_entry = 0;
+  bool backtrace_past_entry = false;
 
   /* Upper bound on the number of backtrace levels.  Note this is not
      exposed as a command option, because "backtrace" and "frame
diff --git a/gdb/gdb-demangle.h b/gdb/gdb-demangle.h
index 9c944a5017f..c048987aa01 100644
--- a/gdb/gdb-demangle.h
+++ b/gdb/gdb-demangle.h
@@ -19,14 +19,14 @@
 #ifndef GDB_DEMANGLE_H
 #define GDB_DEMANGLE_H
 
-/* Nonzero means that encoded C++/ObjC names should be printed out in their
+/* True means that encoded C++/ObjC names should be printed out in their
    C++/ObjC form rather than raw.  */
-extern int demangle;
+extern bool demangle;
 
-/* Nonzero means that encoded C++/ObjC names should be printed out in their
+/* True means that encoded C++/ObjC names should be printed out in their
    C++/ObjC form even in assembler language displays.  If this is set, but
    DEMANGLE is zero, names are printed raw, i.e. DEMANGLE controls.  */
-extern int asm_demangle;
+extern bool asm_demangle;
 
 /* Check if a character is one of the commonly used C++ marker characters.  */
 extern int is_cplus_marker (int);
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
index d3b4c749f50..a17460a8a00 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -137,7 +137,7 @@ static htab_t gdb_bfd_cache;
 /* When true gdb will reuse an existing bfd object if the filename,
    modification time, and file size all match.  */
 
-static int bfd_sharing = 1;
+static bool bfd_sharing = true;
 static void
 show_bfd_sharing  (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h
index 6f9b4d88ecd..cac91c097ba 100644
--- a/gdb/gdbcore.h
+++ b/gdb/gdbcore.h
@@ -137,7 +137,7 @@ extern void specify_exec_file_hook (void (*hook) (const char *filename));
 
 /* Whether to open exec and core files read-only or read-write.  */
 
-extern int write_files;
+extern bool write_files;
 
 /* Open and set up the core file bfd.  */
 
diff --git a/gdb/gdbsupport/common-debug.c b/gdb/gdbsupport/common-debug.c
index 97c90032ebd..7e7e5c3f018 100644
--- a/gdb/gdbsupport/common-debug.c
+++ b/gdb/gdbsupport/common-debug.c
@@ -22,7 +22,7 @@
 
 /* See gdbsupport/common-debug.h.  */
 
-int show_debug_regs;
+bool show_debug_regs;
 
 /* See gdbsupport/common-debug.h.  */
 
diff --git a/gdb/gdbsupport/common-debug.h b/gdb/gdbsupport/common-debug.h
index d5bfc9eb3ae..5584f098442 100644
--- a/gdb/gdbsupport/common-debug.h
+++ b/gdb/gdbsupport/common-debug.h
@@ -20,10 +20,10 @@
 #ifndef COMMON_COMMON_DEBUG_H
 #define COMMON_COMMON_DEBUG_H
 
-/* Set to nonzero to enable debugging of hardware breakpoint/
+/* Set to true to enable debugging of hardware breakpoint/
    watchpoint support code.  */
 
-extern int show_debug_regs;
+extern bool show_debug_regs;
 
 /* Print a formatted message to the appropriate channel for
    debugging output for the client.  */
diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h
index 04230d3c170..0daea9c2dac 100644
--- a/gdb/gdbthread.h
+++ b/gdb/gdbthread.h
@@ -623,7 +623,7 @@ extern void thread_command (const char *tidstr, int from_tty);
 
 /* Print notices on thread events (attach, detach, etc.), set with
    `set print thread-events'.  */
-extern int print_thread_events;
+extern bool print_thread_events;
 
 /* Prints the list of threads and their details on UIOUT.  If
    REQUESTED_THREADS, a list of GDB ids/ranges, is not NULL, only
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 4bc02e08f96..afda89e43fc 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -116,7 +116,7 @@ const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
 
 /* Should opaque types be resolved?  */
 
-static int opaque_type_resolution = 1;
+static bool opaque_type_resolution = true;
 
 /* A flag to enable printing of debugging information of C++
    overloading.  */
@@ -125,7 +125,7 @@ unsigned int overload_debug = 0;
 
 /* A flag to enable strict type checking.  */
 
-static int strict_type_checking = 1;
+static bool strict_type_checking = true;
 
 /* A function to show whether opaque types are resolved.  */
 
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index be30359638c..b1f71883ec3 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -41,7 +41,7 @@
 #include "hppa-tdep.h"
 #include <algorithm>
 
-static int hppa_debug = 0;
+static bool hppa_debug = false;
 
 /* Some local constants.  */
 static const int hppa32_num_regs = 128;
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 23f17ee0e23..726f14d525f 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -55,7 +55,7 @@
    asynchronous inferior function call implementation, and that in
    turn means restructuring the code so that it is event driven.  */
 
-static int may_call_functions_p = 1;
+static bool may_call_functions_p = true;
 static void
 show_may_call_functions_p (struct ui_file *file, int from_tty,
 			   struct cmd_list_element *c,
@@ -86,7 +86,7 @@ show_may_call_functions_p (struct ui_file *file, int from_tty,
    trust the debug information; the user can override this behavior
    with "set coerce-float-to-double 0".  */
 
-static int coerce_float_to_double_p = 1;
+static bool coerce_float_to_double_p = true;
 static void
 show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
 			       struct cmd_list_element *c, const char *value)
@@ -104,7 +104,7 @@ show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
 
    The default is to stop in the frame where the signal was received.  */
 
-static int unwind_on_signal_p = 0;
+static bool unwind_on_signal_p = false;
 static void
 show_unwind_on_signal_p (struct ui_file *file, int from_tty,
 			 struct cmd_list_element *c, const char *value)
@@ -127,7 +127,7 @@ show_unwind_on_signal_p (struct ui_file *file, int from_tty,
    The default is to unwind the frame if a std::terminate call is
    made.  */
 
-static int unwind_on_terminating_exception_p = 1;
+static bool unwind_on_terminating_exception_p = true;
 
 static void
 show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index d7a7e6f9336..dc82ef043fe 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -105,7 +105,7 @@ int stopped_by_random_signal;
 
 /* See inferior.h.  */
 
-int startup_with_shell = 1;
+bool startup_with_shell = true;
 
 
 /* Accessor routines.  */
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 2d58a11ba85..cf2175494d1 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -46,7 +46,7 @@ struct inferior *inferior_list = NULL;
 static int highest_inferior_num;
 
 /* See inferior.h.  */
-int print_inferior_events = 1;
+bool print_inferior_events = true;
 
 /* The Current Inferior.  This is a strong reference.  I.e., whenever
    an inferior is the current inferior, its refcount is
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 9cfb03cdbb3..3a64a7cfeae 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -244,7 +244,7 @@ extern void prepare_execution_command (struct target_ops *target,
 
    The catch-exec traps expected during start-up will be one more if
    the target is started up with a shell.  */
-extern int startup_with_shell;
+extern bool startup_with_shell;
 
 /* Nonzero if stopped due to completion of a stack dummy routine.  */
 
@@ -257,7 +257,7 @@ extern int stopped_by_random_signal;
 
 /* Print notices on inferior events (attach, detach, etc.), set with
    `set print inferior-events'.  */
-extern int print_inferior_events;
+extern bool print_inferior_events;
 
 /* Anything but NO_STOP_QUIETLY means we expect a trap and the caller
    will handle it themselves.  STOP_QUIETLY is used when running in
diff --git a/gdb/infrun.c b/gdb/infrun.c
index a9588f896a5..e39e0c2416c 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -136,7 +136,7 @@ mark_infrun_async_event_handler (void)
 /* When set, stop the 'step' command if we enter a function which has
    no line number information.  The normal behavior is that we step
    over such function.  */
-int step_stop_if_no_debug = 0;
+bool step_stop_if_no_debug = false;
 static void
 show_step_stop_if_no_debug (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
@@ -155,9 +155,9 @@ static ptid_t previous_inferior_ptid;
    Exactly which branch is detached depends on 'set follow-fork-mode'
    setting.  */
 
-static int detach_fork = 1;
+static bool detach_fork = true;
 
-int debug_displaced = 0;
+bool debug_displaced = false;
 static void
 show_debug_displaced (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
@@ -176,7 +176,7 @@ show_debug_infrun (struct ui_file *file, int from_tty,
 
 /* Support for disabling address space randomization.  */
 
-int disable_randomization = 1;
+bool disable_randomization = true;
 
 static void
 show_disable_randomization (struct ui_file *file, int from_tty,
@@ -206,7 +206,7 @@ set_disable_randomization (const char *args, int from_tty,
 /* User interface for non-stop mode.  */
 
 int non_stop = 0;
-static int non_stop_1 = 0;
+static bool non_stop_1 = false;
 
 static void
 set_non_stop (const char *args, int from_tty,
@@ -214,7 +214,7 @@ set_non_stop (const char *args, int from_tty,
 {
   if (target_has_execution)
     {
-      non_stop_1 = non_stop;
+      non_stop_1 = (non_stop != 0);
       error (_("Cannot change this setting while the inferior is running."));
     }
 
@@ -235,7 +235,7 @@ show_non_stop (struct ui_file *file, int from_tty,
    target's execution have been disabled.  */
 
 int observer_mode = 0;
-static int observer_mode_1 = 0;
+static bool observer_mode_1 = false;
 
 static void
 set_observer_mode (const char *args, int from_tty,
@@ -243,7 +243,7 @@ set_observer_mode (const char *args, int from_tty,
 {
   if (target_has_execution)
     {
-      observer_mode_1 = observer_mode;
+      observer_mode_1 = (observer_mode != 0);
       error (_("Cannot change this setting while the inferior is running."));
     }
 
@@ -265,7 +265,8 @@ set_observer_mode (const char *args, int from_tty,
   if (observer_mode)
     {
       pagination_enabled = 0;
-      non_stop = non_stop_1 = 1;
+      non_stop = 1;
+      non_stop_1 = true;
     }
 
   if (from_tty)
@@ -289,13 +290,11 @@ show_observer_mode (struct ui_file *file, int from_tty,
 void
 update_observer_mode (void)
 {
-  int newval;
-
-  newval = (!may_insert_breakpoints
-	    && !may_insert_tracepoints
-	    && may_insert_fast_tracepoints
-	    && !may_stop
-	    && non_stop);
+  bool newval = (!may_insert_breakpoints
+		 && !may_insert_tracepoints
+		 && may_insert_fast_tracepoints
+		 && !may_stop
+		 && non_stop);
 
   /* Let the user know if things change.  */
   if (newval != observer_mode)
@@ -2089,7 +2088,7 @@ set_schedlock_func (const char *args, int from_tty, struct cmd_list_element *c)
 /* True if execution commands resume all threads of all processes by
    default; otherwise, resume only threads of the current inferior
    process.  */
-int sched_multi = 0;
+bool sched_multi = false;
 
 /* Try to setup for software single stepping over the specified location.
    Return 1 if target_resume() should use hardware single step.
diff --git a/gdb/infrun.h b/gdb/infrun.h
index 30374ee51c4..04f388206d1 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -30,7 +30,7 @@ struct return_value_info;
 extern unsigned int debug_infrun;
 
 /* True if we are debugging displaced stepping.  */
-extern int debug_displaced;
+extern bool debug_displaced;
 
 /* Nonzero if we want to give control to the user when we're notified
    of shared library events by the dynamic linker.  */
@@ -39,12 +39,12 @@ extern int stop_on_solib_events;
 /* True if execution commands resume all threads of all processes by
    default; otherwise, resume only threads of the current inferior
    process.  */
-extern int sched_multi;
+extern bool sched_multi;
 
 /* When set, stop the 'step' command if we enter a function which has
    no line number information.  The normal behavior is that we step
    over such function.  */
-extern int step_stop_if_no_debug;
+extern bool step_stop_if_no_debug;
 
 /* If set, the inferior should be controlled in non-stop mode.  In
    this mode, each thread is controlled independently.  Execution
@@ -56,7 +56,7 @@ extern int non_stop;
 /* When set (default), the target should attempt to disable the
    operating system's address space randomization feature when
    starting an inferior.  */
-extern int disable_randomization;
+extern bool disable_randomization;
 
 /* Returns a unique identifier for the current stop.  This can be used
    to tell whether a command has proceeded the inferior past the
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 7d0c3e9fc95..ff888a90678 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -91,12 +91,12 @@ struct smaps_vmflags
 /* Whether to take the /proc/PID/coredump_filter into account when
    generating a corefile.  */
 
-static int use_coredump_filter = 1;
+static bool use_coredump_filter = true;
 
 /* Whether the value of smaps_vmflags->exclude_coredump should be
    ignored, including mappings marked with the VM_DONTDUMP flag in
    the dump.  */
-static int dump_excluded_mappings = 0;
+static bool dump_excluded_mappings = false;
 
 /* This enum represents the signals' numbers on a generic architecture
    running the Linux kernel.  The definition of "generic" comes from
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 1d32e9195c0..100434e2c9d 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -110,13 +110,13 @@ public:
 
 static char *libthread_db_search_path;
 
-/* Set to non-zero if thread_db auto-loading is enabled
+/* Set to true if thread_db auto-loading is enabled
    by the "set auto-load libthread-db" command.  */
-static int auto_load_thread_db = 1;
+static bool auto_load_thread_db = true;
 
-/* Set to non-zero if load-time libthread_db tests have been enabled
+/* Set to true if load-time libthread_db tests have been enabled
    by the "maintenence set check-libthread-db" command.  */
-static int check_thread_db_on_load = 0;
+static bool check_thread_db_on_load = false;
 
 /* "show" command for the auto_load_thread_db configuration variable.  */
 
diff --git a/gdb/main.c b/gdb/main.c
index 6b75fced236..7fab8ff8dad 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -594,6 +594,9 @@ captured_main_1 (struct captured_main_args *context)
       OPT_READNOW,
       OPT_READNEVER
     };
+    /* This struct requires int* in the struct, but write_files is a bool.
+       So use this temporary int that we write back after argument parsing.  */
+    int write_files_1 = 0;
     static struct option long_options[] =
     {
       {"tui", no_argument, 0, OPT_TUI},
@@ -658,7 +661,7 @@ captured_main_1 (struct captured_main_args *context)
       {"w", no_argument, NULL, OPT_WINDOWS},
       {"windows", no_argument, NULL, OPT_WINDOWS},
       {"statistics", no_argument, 0, OPT_STATISTICS},
-      {"write", no_argument, &write_files, 1},
+      {"write", no_argument, &write_files_1, 1},
       {"args", no_argument, &set_args, 1},
       {"l", required_argument, 0, 'l'},
       {"return-child-result", no_argument, &return_child_result, 1},
@@ -842,6 +845,7 @@ captured_main_1 (struct captured_main_args *context)
 		   gdb_program_name);
 	  }
       }
+    write_files = (write_files_1 != 0);
 
     if (batch_flag)
       {
diff --git a/gdb/maint-test-options.c b/gdb/maint-test-options.c
index 7039f932f1d..9bda34a3fd2 100644
--- a/gdb/maint-test-options.c
+++ b/gdb/maint-test-options.c
@@ -126,10 +126,10 @@ static const char *const test_options_enum_values_choices[] =
 
 struct test_options_opts
 {
-  int flag_opt = 0;
-  int xx1_opt = 0;
-  int xx2_opt = 0;
-  int boolean_opt = 0;
+  bool flag_opt = false;
+  bool xx1_opt = false;
+  bool xx2_opt = false;
+  bool boolean_opt = false;
   const char *enum_opt = test_options_enum_values_xxx;
   unsigned int uint_opt = 0;
   int zuint_unl_opt = 0;
diff --git a/gdb/maint-test-settings.c b/gdb/maint-test-settings.c
index a1c43ee9173..86d201a3c6f 100644
--- a/gdb/maint-test-settings.c
+++ b/gdb/maint-test-settings.c
@@ -50,7 +50,7 @@ maintenance_show_test_settings_cmd (const char *args, int from_tty)
 /* Control variables for all the "maintenance set/show test-settings
    xxx" commands.  */
 
-static int maintenance_test_settings_boolean;
+static bool maintenance_test_settings_boolean;
 
 static auto_boolean maintenance_test_settings_auto_boolean = AUTO_BOOLEAN_AUTO;
 
diff --git a/gdb/maint.c b/gdb/maint.c
index 1a621a17191..b8eb93827c8 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -770,7 +770,7 @@ maintenance_with_cmd_completer (struct cmd_list_element *ignore,
 
 /* Profiling support.  */
 
-static int maintenance_profile_p;
+static bool maintenance_profile_p;
 static void
 show_maintenance_profile_p (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
@@ -841,17 +841,17 @@ maintenance_set_profile_cmd (const char *args, int from_tty,
 }
 #endif
 
-/* If nonzero, display time usage both at startup and for each command.  */
+/* If true, display time usage both at startup and for each command.  */
 
-static int per_command_time;
+static bool per_command_time;
 
-/* If nonzero, display space usage both at startup and for each command.  */
+/* If true, display space usage both at startup and for each command.  */
 
-static int per_command_space;
+static bool per_command_space;
 
-/* If nonzero, display basic symtab stats for each command.  */
+/* If true, display basic symtab stats for each command.  */
 
-static int per_command_symtab;
+static bool per_command_symtab;
 
 /* mt per-command commands.  */
 
diff --git a/gdb/memattr.c b/gdb/memattr.c
index e695f6e07e7..0475780b29f 100644
--- a/gdb/memattr.c
+++ b/gdb/memattr.c
@@ -53,7 +53,7 @@ static bool target_mem_regions_valid;
 /* If this flag is set, gdb will assume that memory ranges not
    specified by the memory map have type MEM_NONE, and will
    emit errors on all accesses to that memory.  */
-static int inaccessible_by_default = 1;
+static bool inaccessible_by_default = true;
 
 static void
 show_inaccessible_by_default (struct ui_file *file, int from_tty,
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 5dc436bfd8c..a83e668f981 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -105,7 +105,7 @@ static int mi_async = 0;
 
 /* The set command writes to this variable.  If the inferior is
    executing, mi_async is *not* updated.  */
-static int mi_async_1 = 0;
+static bool mi_async_1 = false;
 
 static void
 set_mi_async_command (const char *args, int from_tty,
@@ -113,7 +113,7 @@ set_mi_async_command (const char *args, int from_tty,
 {
   if (have_live_inferiors ())
     {
-      mi_async_1 = mi_async;
+      mi_async_1 = (mi_async != 0);
       error (_("Cannot change this setting while the inferior is running."));
     }
 
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 3fb53bc76da..37a1b2a0b8f 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -858,7 +858,7 @@ static int heuristic_fence_post = 0;
    register N.  NOTE: This defines the pseudo register type so need to
    rebuild the architecture vector.  */
 
-static int mips64_transfers_32bit_regs_p = 0;
+static bool mips64_transfers_32bit_regs_p = false;
 
 static void
 set_mips64_transfers_32bit_regs (const char *args, int from_tty,
diff --git a/gdb/nat/fork-inferior.h b/gdb/nat/fork-inferior.h
index 1d0519fb26c..065496c3827 100644
--- a/gdb/nat/fork-inferior.h
+++ b/gdb/nat/fork-inferior.h
@@ -72,7 +72,7 @@ extern ptid_t startup_inferior (pid_t pid, int ntraps,
 
    The catch-exec traps expected during start-up will be one more if
    the target is started up with a shell.  */
-extern int startup_with_shell;
+extern bool startup_with_shell;
 
 /* Perform any necessary tasks before a fork/vfork takes place.  ARGS
    is a string containing all the arguments received by the inferior.
diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c
index e49bc1ade36..8cadea9be26 100644
--- a/gdb/nat/linux-namespaces.c
+++ b/gdb/nat/linux-namespaces.c
@@ -31,7 +31,7 @@
 #include "gdbsupport/scope-exit.h"
 
 /* See nat/linux-namespaces.h.  */
-int debug_linux_namespaces;
+bool debug_linux_namespaces;
 
 /* Handle systems without fork.  */
 
diff --git a/gdb/nat/linux-namespaces.h b/gdb/nat/linux-namespaces.h
index 166b11cbdca..fe7e8a452ee 100644
--- a/gdb/nat/linux-namespaces.h
+++ b/gdb/nat/linux-namespaces.h
@@ -20,9 +20,9 @@
 #ifndef NAT_LINUX_NAMESPACES_H
 #define NAT_LINUX_NAMESPACES_H
 
-/* Set to nonzero to enable debugging of Linux namespaces code.  */
+/* Set to true to enable debugging of Linux namespaces code.  */
 
-extern int debug_linux_namespaces;
+extern bool debug_linux_namespaces;
 
 /* Enumeration of Linux namespace types.  */
 
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index 8d685d4acaa..cb17e4f3750 100644
--- a/gdb/nios2-tdep.c
+++ b/gdb/nios2-tdep.c
@@ -52,7 +52,7 @@
 
 /* Control debugging information emitted in this file.  */
 
-static int nios2_debug = 0;
+static bool nios2_debug = false;
 
 /* The following structures are used in the cache for prologue
    analysis; see the reg_value and reg_saved tables in
diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
index 8f6f6e19609..6a6dce15273 100644
--- a/gdb/or1k-tdep.c
+++ b/gdb/or1k-tdep.c
@@ -50,7 +50,7 @@
 
 /* Global debug flag.  */
 
-static int or1k_debug = 0;
+static bool or1k_debug = false;
 
 static void
 show_or1k_debug (struct ui_file *file, int from_tty,
diff --git a/gdb/parse.c b/gdb/parse.c
index a1ab75297a1..a17cae6b551 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -74,8 +74,8 @@ show_expressiondebug (struct ui_file *file, int from_tty,
 }
 
 
-/* Non-zero if an expression parser should set yydebug.  */
-int parser_debug;
+/* True if an expression parser should set yydebug.  */
+bool parser_debug;
 
 static void
 show_parserdebug (struct ui_file *file, int from_tty,
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
index 33670b29c4c..64aa9b8b1e0 100644
--- a/gdb/parser-defs.h
+++ b/gdb/parser-defs.h
@@ -32,7 +32,7 @@ struct language_defn;
 struct internalvar;
 class innermost_block_tracker;
 
-extern int parser_debug;
+extern bool parser_debug;
 
 /* A class that can be used to build a "struct expression".  */
 
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 22356bfd6db..b3f7b59863b 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -100,7 +100,7 @@ show_max_symbolic_offset (struct ui_file *file, int from_tty,
 
 /* Append the source filename and linenumber of the symbol when
    printing a symbolic value as `<symbol at filename:linenum>' if set.  */
-static int print_symbol_filename = 0;
+static bool print_symbol_filename = false;
 static void
 show_print_symbol_filename (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
diff --git a/gdb/python/py-auto-load.c b/gdb/python/py-auto-load.c
index c7b9afdb112..ade2aa1b377 100644
--- a/gdb/python/py-auto-load.c
+++ b/gdb/python/py-auto-load.c
@@ -29,7 +29,7 @@
    set auto-load python-scripts on|off
    This is true if we should auto-load associated Python scripts when an
    objfile is opened, false otherwise.  */
-static int auto_load_python_scripts = 1;
+static bool auto_load_python_scripts = true;
 
 /* "show" command for the auto_load_python_scripts configuration variable.  */
 
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index afeff581ee4..4794366583a 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -55,7 +55,10 @@ struct parm_constant parm_constants[] =
 /* A union that can hold anything described by enum var_types.  */
 union parmpy_variable
 {
-  /* Hold an integer value, for boolean and integer types.  */
+  /* Hold a boolean value.  */
+  bool boolval;
+
+  /* Hold an integer value.  */
   int intval;
 
   /* Hold an auto_boolean.  */
@@ -198,7 +201,7 @@ set_parameter_value (parmpy_object *self, PyObject *value)
       cmp = PyObject_IsTrue (value);
       if (cmp < 0)
 	  return -1;
-      self->value.intval = cmp;
+      self->value.boolval = cmp;
       break;
 
     case var_auto_boolean:
@@ -475,7 +478,7 @@ add_setshow_generic (int parmclass, enum command_class cmdclass,
     case var_boolean:
 
       add_setshow_boolean_cmd (cmd_name, cmdclass,
-			       &self->value.intval, set_doc, show_doc,
+			       &self->value.boolval, set_doc, show_doc,
 			       help_doc, get_set_value, get_show_value,
 			       set_list, show_list);
 
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index ede4c0e759a..1428b7abe5c 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -580,7 +580,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
 			   encoding, errors);
 }
 
-/* Given a Python object, copy its truth value to a C int (the value
+/* Given a Python object, copy its truth value to a C bool (the value
    pointed by dest).
    If src_obj is NULL, then *dest is not modified.
 
@@ -588,7 +588,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
    in case of error.  */
 
 static bool
-copy_py_bool_obj (int *dest, PyObject *src_obj)
+copy_py_bool_obj (bool *dest, PyObject *src_obj)
 {
   if (src_obj)
     {
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 9c8c635f72b..ddf0e72d26f 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -441,7 +441,7 @@ gdbpy_parameter_value (enum var_types type, void *var)
 
     case var_boolean:
       {
-	if (* (int *) var)
+	if (* (bool *) var)
 	  Py_RETURN_TRUE;
 	else
 	  Py_RETURN_FALSE;
diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c
index f217d949f61..0cc7e1dc75a 100644
--- a/gdb/ravenscar-thread.c
+++ b/gdb/ravenscar-thread.c
@@ -57,8 +57,8 @@
    is running, switching to its corresponding ptid, and then performing
    the operation on that ptid using the target beneath us.  */
 
-/* If non-null, ravenscar task support is enabled.  */
-static int ravenscar_task_support = 1;
+/* If true, ravenscar task support is enabled.  */
+static bool ravenscar_task_support = true;
 
 static const char running_thread_name[] = "__gnat_running_thread_table";
 
diff --git a/gdb/record-full.c b/gdb/record-full.c
index e83ce01b715..c1d124f5192 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -159,7 +159,7 @@ struct record_full_entry
 
 /* If true, query if PREC cannot record memory
    change of next instruction.  */
-int record_full_memory_query = 0;
+bool record_full_memory_query = false;
 
 struct record_full_core_buf_entry
 {
@@ -196,8 +196,8 @@ static struct record_full_entry *record_full_list = &record_full_first;
 static struct record_full_entry *record_full_arch_list_head = NULL;
 static struct record_full_entry *record_full_arch_list_tail = NULL;
 
-/* 1 ask user. 0 auto delete the last struct record_full_entry.  */
-static int record_full_stop_at_limit = 1;
+/* true ask user. false auto delete the last struct record_full_entry.  */
+static bool record_full_stop_at_limit = true;
 /* Maximum allowed number of insns in execution log.  */
 static unsigned int record_full_insn_max_num
 	= DEFAULT_RECORD_FULL_INSN_MAX_NUM;
diff --git a/gdb/record-full.h b/gdb/record-full.h
index 8d1693af11d..d1eff9760e2 100644
--- a/gdb/record-full.h
+++ b/gdb/record-full.h
@@ -20,7 +20,7 @@
 #ifndef RECORD_FULL_H
 #define RECORD_FULL_H
 
-extern int record_full_memory_query;
+extern bool record_full_memory_query;
 
 extern int record_full_arch_list_add_reg (struct regcache *regcache, int num);
 extern int record_full_arch_list_add_mem (CORE_ADDR addr, int len);
diff --git a/gdb/remote-notif.c b/gdb/remote-notif.c
index 2680618b3fa..2ff7b3b66c6 100644
--- a/gdb/remote-notif.c
+++ b/gdb/remote-notif.c
@@ -41,7 +41,7 @@
 #include "infrun.h"
 #include "gdbcmd.h"
 
-int notif_debug = 0;
+bool notif_debug = false;
 
 /* Supported clients of notifications.  */
 
diff --git a/gdb/remote-notif.h b/gdb/remote-notif.h
index f9b0b2c6180..c735cc2918a 100644
--- a/gdb/remote-notif.h
+++ b/gdb/remote-notif.h
@@ -129,6 +129,6 @@ remote_notif_state *remote_notif_state_allocate (remote_target *remote);
 
 extern struct notif_client notif_client_stop;
 
-extern int notif_debug;
+extern bool notif_debug;
 
 #endif /* REMOTE_NOTIF_H */
diff --git a/gdb/remote.c b/gdb/remote.c
index ae06c4ba791..e39366d8b20 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1038,7 +1038,7 @@ static struct cmd_list_element *remote_show_cmdlist;
 
 /* Controls whether GDB is willing to use range stepping.  */
 
-static int use_range_stepping = 1;
+static bool use_range_stepping = true;
 
 /* The max number of chars in debug output.  The rest of chars are
    omitted.  */
@@ -1492,12 +1492,12 @@ show_interrupt_sequence (struct ui_file *file, int from_tty,
    to the remote target when gdb connects to it.
    This is mostly needed when you debug the Linux kernel: The Linux kernel
    expects BREAK g which is Magic SysRq g for connecting gdb.  */
-static int interrupt_on_connect = 0;
+static bool interrupt_on_connect = false;
 
 /* This variable is used to implement the "set/show remotebreak" commands.
    Since these commands are now deprecated in favor of "set/show remote
    interrupt-sequence", it no longer has any effect on the code.  */
-static int remote_break;
+static bool remote_break;
 
 static void
 set_remotebreak (const char *args, int from_tty, struct cmd_list_element *c)
diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c
index 7498319cc41..079f24828e9 100644
--- a/gdb/ser-tcp.c
+++ b/gdb/ser-tcp.c
@@ -72,7 +72,7 @@ static struct cmd_list_element *tcp_show_cmdlist;
 
 /* Whether to auto-retry refused connections.  */
 
-static int tcp_auto_retry = 1;
+static bool tcp_auto_retry = true;
 
 /* Timeout period for connections, in seconds.  */
 
diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c
index 049dfd5261f..c49bd84eb63 100644
--- a/gdb/ser-unix.c
+++ b/gdb/ser-unix.c
@@ -41,7 +41,7 @@ struct hardwire_ttystate
 
 #ifdef CRTSCTS
 /* Boolean to explicitly enable or disable h/w flow control.  */
-static int serial_hwflow;
+static bool serial_hwflow;
 static void
 show_serial_hwflow (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
diff --git a/gdb/skip.c b/gdb/skip.c
index 5258f50ab1f..a549aca897c 100644
--- a/gdb/skip.c
+++ b/gdb/skip.c
@@ -39,7 +39,7 @@
 
 /* True if we want to print debug printouts related to file/function
    skipping. */
-static int debug_skip = 0;
+static bool debug_skip = false;
 
 class skiplist_entry
 {
diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
index 0c8a18267c9..1a25a0d4a93 100644
--- a/gdb/solib-aix.c
+++ b/gdb/solib-aix.c
@@ -30,7 +30,7 @@
 
 /* Variable controlling the output of the debugging traces for
    this module.  */
-static int solib_aix_debug;
+static bool solib_aix_debug;
 
 /* Our private data in struct so_list.  */
 
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
index ddaee54b306..d01f3af3009 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
@@ -52,9 +52,9 @@ static struct cmd_list_element *setspucmdlist = NULL;
 static struct cmd_list_element *showspucmdlist = NULL;
 
 /* Whether to stop for new SPE contexts.  */
-static int spu_stop_on_load_p = 0;
+static bool spu_stop_on_load_p = false;
 /* Whether to automatically flush the SW-managed cache.  */
-static int spu_auto_flush_cache_p = 1;
+static bool spu_auto_flush_cache_p = true;
 
 
 /* The tdep structure.  */
diff --git a/gdb/stack.c b/gdb/stack.c
index 10a88e99aba..0f7fbf5e6ef 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -183,9 +183,9 @@ pretty-printers for that value.")
 
 struct backtrace_cmd_options
 {
-  int full = 0;
-  int no_filters = 0;
-  int hide = 0;
+  bool full = false;
+  bool no_filters = false;
+  bool hide = false;
 };
 
 using bt_flag_option_def
@@ -2423,7 +2423,7 @@ print_frame_local_vars (struct frame_info *frame,
 
 struct info_print_options
 {
-  int quiet = false;
+  bool quiet = false;
   char *type_regexp = nullptr;
 
   ~info_print_options ()
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index 9a5d0fa0a66..37959bf0d40 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -48,8 +48,8 @@ struct debug_sym_fns_data
 static const struct objfile_key<debug_sym_fns_data>
   symfile_debug_objfile_data_key;
 
-/* If non-zero all calls to the symfile functions are logged.  */
-static int debug_symfile = 0;
+/* If true all calls to the symfile functions are logged.  */
+static bool debug_symfile = false;
 
 /* Return non-zero if symfile debug logging is installed.  */
 
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 3cd514409b0..2792ab43282 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -151,7 +151,7 @@ static const char *print_symbol_loading = print_symbol_loading_full;
    library symbols are not loaded, commands like "info fun" will *not*
    report all the functions that are actually present.  */
 
-int auto_solib_add = 1;
+bool auto_solib_add = true;
 
 
 /* Return non-zero if symbol-loading messages should be printed.
@@ -1273,7 +1273,7 @@ symbol_file_clear (int from_tty)
 
 /* See symfile.h.  */
 
-int separate_debug_file_debug = 0;
+bool separate_debug_file_debug = false;
 
 static int
 separate_debug_file_exists (const std::string &name, unsigned long crc,
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 6fa6db4750e..43dd2a60f9f 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -449,7 +449,7 @@ extern section_addr_info
    library symbols are not loaded, commands like "info fun" will *not*
    report all the functions that are actually present.  */
 
-extern int auto_solib_add;
+extern bool auto_solib_add;
 
 /* From symfile.c */
 
@@ -625,6 +625,6 @@ extern gdb_bfd_ref_ptr find_separate_debug_file_in_section (struct objfile *);
 
 /* True if we are printing debug output about separate debug info files.  */
 
-extern int separate_debug_file_debug;
+extern bool separate_debug_file_debug;
 
 #endif /* !defined(SYMFILE_H) */
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 4b528b4270a..e2edad4fb11 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -241,10 +241,10 @@ static unsigned int new_symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
    the original value from here.  */
 static unsigned int symbol_cache_size = DEFAULT_SYMBOL_CACHE_SIZE;
 
-/* Non-zero if a file may be known by two different basenames.
+/* True if a file may be known by two different basenames.
    This is the uncommon case, and significantly slows down gdb.
    Default set to "off" to not slow down the common case.  */
-int basenames_may_differ = 0;
+bool basenames_may_differ = false;
 
 /* Allow the user to configure the debugger behavior with respect
    to multiple-choice menus when more than one symbol matches during
@@ -4131,10 +4131,10 @@ operator_chars (const char *p, const char **end)
 struct filename_partial_match_opts
 {
   /* Only match the directory name part.   */
-  int dirname = false;
+  bool dirname = false;
 
   /* Only match the basename part.  */
-  int basename = false;
+  bool basename = false;
 };
 
 /* Data structure to maintain printing state for output_source_filename.  */
@@ -4912,8 +4912,8 @@ symtab_symbol_info (bool quiet, bool exclude_minsyms,
 
 struct info_print_options
 {
-  int quiet = false;
-  int exclude_minsyms = false;
+  bool quiet = false;
+  bool exclude_minsyms = false;
   char *type_regexp = nullptr;
 
   ~info_print_options ()
@@ -5010,7 +5010,7 @@ info_functions_command (const char *args, int from_tty)
 
 struct info_types_options
 {
-  int quiet = false;
+  bool quiet = false;
 };
 
 /* The options used by the 'info types' command.  */
diff --git a/gdb/symtab.h b/gdb/symtab.h
index c54b8ee4b7a..d0465987749 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -544,7 +544,7 @@ extern const char *symbol_demangled_name
 
 #define SYMBOL_PRINT_NAME(symbol)					\
   (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol))
-extern int demangle;
+extern bool demangle;
 
 /* Macro that returns the name to be used when sorting and searching symbols.
    In C++, we search for the demangled form of a name,
@@ -2064,7 +2064,7 @@ extern unsigned int symtab_create_debug;
 
 extern unsigned int symbol_lookup_debug;
 
-extern int basenames_may_differ;
+extern bool basenames_may_differ;
 
 int compare_filenames_for_search (const char *filename,
 				  const char *search_name);
diff --git a/gdb/target-dcache.c b/gdb/target-dcache.c
index 98d5c1f83b6..c8a415512c5 100644
--- a/gdb/target-dcache.c
+++ b/gdb/target-dcache.c
@@ -77,7 +77,7 @@ target_dcache_get_or_init (void)
 }
 
 /* The option sets this.  */
-static int stack_cache_enabled_1 = 1;
+static bool stack_cache_enabled_1 = true;
 /* And set_stack_cache updates this.
    The reason for the separation is so that we don't flush the cache for
    on->on transitions.  */
@@ -114,7 +114,7 @@ stack_cache_enabled_p (void)
 
 /* The option sets this.  */
 
-static int code_cache_enabled_1 = 1;
+static bool code_cache_enabled_1 = true;
 
 /* And set_code_cache updates this.
    The reason for the separation is so that we don't flush the cache for
diff --git a/gdb/target.c b/gdb/target.c
index a19a9bce133..f199f0527c1 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -128,10 +128,10 @@ current_top_target ()
 
 static struct cmd_list_element *targetlist = NULL;
 
-/* Nonzero if we should trust readonly sections from the
+/* True if we should trust readonly sections from the
    executable when reading memory.  */
 
-static int trust_readonly = 0;
+static bool trust_readonly = false;
 
 /* Nonzero if we should show true memory content including
    memory breakpoint inserted by gdb.  */
@@ -2374,7 +2374,7 @@ target_require_runnable (void)
 
 /* Whether GDB is allowed to fall back to the default run target for
    "run", "attach", etc. when no target is connected yet.  */
-static int auto_connect_native_target = 1;
+static bool auto_connect_native_target = true;
 
 static void
 show_auto_connect_native_target (struct ui_file *file, int from_tty,
@@ -3841,11 +3841,11 @@ target_thread_events (int enable)
 
 /* Controls if targets can report that they can/are async.  This is
    just for maintainers to use when debugging gdb.  */
-int target_async_permitted = 1;
+bool target_async_permitted = true;
 
 /* The set command writes to this variable.  If the inferior is
    executing, target_async_permitted is *not* updated.  */
-static int target_async_permitted_1 = 1;
+static bool target_async_permitted_1 = true;
 
 static void
 maint_set_target_async_command (const char *args, int from_tty,
@@ -3853,7 +3853,7 @@ maint_set_target_async_command (const char *args, int from_tty,
 {
   if (have_live_inferiors ())
     {
-      target_async_permitted_1 = target_async_permitted;
+      target_async_permitted_1 = (target_async_permitted != 0);
       error (_("Cannot change this setting while the inferior is running."));
     }
 
@@ -3933,24 +3933,24 @@ maint_show_target_non_stop_command (struct ui_file *file, int from_tty,
 
 /* Temporary copies of permission settings.  */
 
-static int may_write_registers_1 = 1;
-static int may_write_memory_1 = 1;
-static int may_insert_breakpoints_1 = 1;
-static int may_insert_tracepoints_1 = 1;
-static int may_insert_fast_tracepoints_1 = 1;
-static int may_stop_1 = 1;
+static bool may_write_registers_1 = true;
+static bool may_write_memory_1 = true;
+static bool may_insert_breakpoints_1 = true;
+static bool may_insert_tracepoints_1 = true;
+static bool may_insert_fast_tracepoints_1 = true;
+static bool may_stop_1 = true;
 
 /* Make the user-set values match the real values again.  */
 
 void
 update_target_permissions (void)
 {
-  may_write_registers_1 = may_write_registers;
-  may_write_memory_1 = may_write_memory;
-  may_insert_breakpoints_1 = may_insert_breakpoints;
-  may_insert_tracepoints_1 = may_insert_tracepoints;
-  may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
-  may_stop_1 = may_stop;
+  may_write_registers_1 = (may_write_registers != 0);
+  may_write_memory_1 = (may_write_memory != 0);
+  may_insert_breakpoints_1 = (may_insert_breakpoints != 0);
+  may_insert_tracepoints_1 = (may_insert_tracepoints != 0);
+  may_insert_fast_tracepoints_1 = (may_insert_fast_tracepoints != 0);
+  may_stop_1 = (may_stop != 0);
 }
 
 /* The one function handles (most of) the permission flags in the same
diff --git a/gdb/target.h b/gdb/target.h
index 4e2e75cb806..6018bf90ef6 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1802,7 +1802,7 @@ extern int target_has_execution_current (void);
   (current_top_target ()->get_thread_control_capabilities () & tc_schedlock)
 
 /* Controls whether async mode is permitted.  */
-extern int target_async_permitted;
+extern bool target_async_permitted;
 
 /* Can the target support asynchronous execution?  */
 #define target_can_async_p() (current_top_target ()->can_async_p ())
diff --git a/gdb/thread.c b/gdb/thread.c
index 4a7fe689dbb..17bc642b84d 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -1204,7 +1204,7 @@ print_thread_info (struct ui_out *uiout, const char *requested_threads,
 struct info_threads_opts
 {
   /* For "-gid".  */
-  int show_global_ids = 0;
+  bool show_global_ids = false;
 };
 
 static const gdb::option::option_def info_threads_option_defs[] = {
@@ -1574,7 +1574,7 @@ static const gdb::option::option_def thr_qcs_flags_option_defs[] = {
    ASCENDING and FLAGS as context.  */
 
 static inline std::array<gdb::option::option_def_group, 2>
-make_thread_apply_all_options_def_group (int *ascending,
+make_thread_apply_all_options_def_group (bool *ascending,
 					 qcs_flags *flags)
 {
   return {{
@@ -1603,7 +1603,7 @@ make_thread_apply_options_def_group (qcs_flags *flags)
 static void
 thread_apply_all_command (const char *cmd, int from_tty)
 {
-  int ascending = false;
+  bool ascending = false;
   qcs_flags flags;
 
   auto group = make_thread_apply_all_options_def_group (&ascending,
@@ -1951,7 +1951,7 @@ thread_find_command (const char *arg, int from_tty)
 }
 
 /* Print notices when new threads are attached and detached.  */
-int print_thread_events = 1;
+bool print_thread_events = true;
 static void
 show_print_thread_events (struct ui_file *file, int from_tty,
 			  struct cmd_list_element *c, const char *value)
diff --git a/gdb/top.c b/gdb/top.c
index 2b53640af06..49e6daae949 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -115,7 +115,7 @@ extern char lang_frame_mismatch_warn[];		/* language.c */
 /* Flag for whether we want to confirm potentially dangerous
    operations.  Default is yes.  */
 
-int confirm = 1;
+bool confirm = true;
 
 static void
 show_confirm (struct ui_file *file, int from_tty,
@@ -850,15 +850,15 @@ gdb_readline_no_editing (const char *prompt)
 /* Variables which control command line editing and history
    substitution.  These variables are given default values at the end
    of this file.  */
-static int command_editing_p;
+static bool command_editing_p;
 
 /* NOTE 1999-04-29: This variable will be static again, once we modify
    gdb to use the event loop as the default command loop and we merge
    event-top.c into this file, top.c.  */
 
-/* static */ int history_expansion_p;
+/* static */ bool history_expansion_p;
 
-static int write_history_p;
+static bool write_history_p;
 static void
 show_write_history_p (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
@@ -1876,7 +1876,7 @@ show_history (const char *args, int from_tty)
   cmd_show_list (showhistlist, from_tty, "");
 }
 
-int info_verbose = 0;		/* Default verbose msgs off.  */
+bool info_verbose = false;	/* Default verbose msgs off.  */
 
 /* Called by do_set_command.  An elaborate joke.  */
 void
diff --git a/gdb/top.h b/gdb/top.h
index 32a898b82f5..176104f1fd1 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -217,7 +217,7 @@ extern void ui_register_input_event_handler (struct ui *ui);
 extern void ui_unregister_input_event_handler (struct ui *ui);
 
 /* From top.c.  */
-extern int confirm;
+extern bool confirm;
 extern int inhibit_gdbinit;
 
 /* Print the GDB version banner to STREAM.  If INTERACTIVE is false,
@@ -280,7 +280,7 @@ extern void gdb_init (char *);
 /* Variables from top.c.  */
 extern int source_line_number;
 extern std::string source_file_name;
-extern int history_expansion_p;
+extern bool history_expansion_p;
 extern int server_command;
 extern char *lim_at_start;
 
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 2d5b9c705ef..436cb21f5df 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -131,12 +131,12 @@ static struct cmd_list_element *tfindlist;
 /* List of expressions to collect by default at each tracepoint hit.  */
 char *default_collect;
 
-static int disconnected_tracing;
+static bool disconnected_tracing;
 
 /* This variable controls whether we ask the target for a linear or
    circular trace buffer.  */
 
-static int circular_trace_buffer;
+static bool circular_trace_buffer = false;
 
 /* This variable is the requested trace buffer size, or -1 to indicate
    that we don't care and leave it up to the target to set a size.  */
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
index c87f6d13e02..41d95c2afb2 100644
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
@@ -727,7 +727,7 @@ show_print_type (const char *args, int from_tty)
   cmd_show_list (showprinttypelist, from_tty, "");
 }
 
-static int print_methods = 1;
+static bool print_methods = true;
 
 static void
 set_print_type_methods (const char *args,
@@ -744,7 +744,7 @@ show_print_type_methods (struct ui_file *file, int from_tty,
 		    value);
 }
 
-static int print_typedefs = 1;
+static bool print_typedefs = true;
 
 static void
 set_print_type_typedefs (const char *args,
diff --git a/gdb/utils.c b/gdb/utils.c
index f642cf470f4..dafea999267 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -99,13 +99,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
 
 /* A flag indicating whether to timestamp debugging messages.  */
 
-static int debug_timestamp = 0;
+static bool debug_timestamp = false;
 
-/* Nonzero means that strings with character values >0x7F should be printed
+/* True means that strings with character values >0x7F should be printed
    as octal escapes.  Zero means just print the value (e.g. it's an
    international character, and the terminal or window can cope.)  */
 
-int sevenbit_strings = 0;
+bool sevenbit_strings = false;
 static void
 show_sevenbit_strings (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *c, const char *value)
@@ -119,7 +119,7 @@ show_sevenbit_strings (struct ui_file *file, int from_tty,
 
 const char *warning_pre_print = "\nwarning: ";
 
-int pagination_enabled = 1;
+bool pagination_enabled = true;
 static void
 show_pagination_enabled (struct ui_file *file, int from_tty,
 			 struct cmd_list_element *c, const char *value)
diff --git a/gdb/utils.h b/gdb/utils.h
index fd724444aa0..7cdc73ef54f 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -32,7 +32,7 @@ extern void initialize_utils (void);
 
 /* String utilities.  */
 
-extern int sevenbit_strings;
+extern bool sevenbit_strings;
 
 /* Modes of operation for strncmp_iw_with_mode.  */
 
@@ -316,7 +316,7 @@ extern void wrap_here (const char *);
 
 extern void reinitialize_more_filter (void);
 
-extern int pagination_enabled;
+extern bool pagination_enabled;
 
 extern struct ui_file **current_ui_gdb_stdout_ptr (void);
 extern struct ui_file **current_ui_gdb_stdin_ptr (void);
diff --git a/gdb/valops.c b/gdb/valops.c
index 0f6ff7b0a57..fc7a4c5918d 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -97,7 +97,7 @@ static CORE_ADDR allocate_space_in_inferior (int);
 
 static struct value *cast_into_complex (struct type *, struct value *);
 
-int overload_resolution = 0;
+bool overload_resolution = false;
 static void
 show_overload_resolution (struct ui_file *file, int from_tty,
 			  struct cmd_list_element *c, 
diff --git a/gdb/valprint.h b/gdb/valprint.h
index 07014c11b9f..6d57554594c 100644
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -30,23 +30,23 @@ struct value_print_options
   enum val_prettyformat prettyformat;
 
   /* Controls pretty formatting of arrays.  */
-  int prettyformat_arrays;
+  bool prettyformat_arrays;
 
   /* Controls pretty formatting of structures.  */
-  int prettyformat_structs;
+  bool prettyformat_structs;
 
   /* Controls printing of virtual tables.  */
-  int vtblprint;
+  bool vtblprint;
 
   /* Controls printing of nested unions.  */
-  int unionprint;
+  bool unionprint;
 
   /* Controls printing of addresses.  */
-  int addressprint;
+  bool addressprint;
 
   /* Controls looking up an object's derived type using what we find
      in its vtables.  */
-  int objectprint;
+  bool objectprint;
 
   /* Maximum number of chars to print for a string pointer value or vector
      contents, or UINT_MAX for no limit.  Note that "set print elements 0"
@@ -66,40 +66,40 @@ struct value_print_options
   int format;
 
   /* Stop printing at null character?  */
-  int stop_print_at_null;
+  bool stop_print_at_null;
 
   /* True if we should print the index of each element when printing
      an array.  */
-  int print_array_indexes;
+  bool print_array_indexes;
 
-  /* If nonzero, then dereference references, otherwise just print
+  /* If true, then dereference references, otherwise just print
      them like pointers.  */
-  int deref_ref;
+  bool deref_ref;
 
-  /* If nonzero, print static fields.  */
-  int static_field_print;
+  /* If true, print static fields.  */
+  bool static_field_print;
 
-  /* If nonzero, print static fields for Pascal.  FIXME: C++ has a
+  /* If true, print static fields for Pascal.  FIXME: C++ has a
      flag, why not share with Pascal too?  */
-  int pascal_static_field_print;
+  bool pascal_static_field_print;
 
-  /* If non-zero don't do Python pretty-printing.  */
-  int raw;
+  /* If true, don't do Python pretty-printing.  */
+  bool raw;
 
-  /* If nonzero, print the value in "summary" form.
-     If raw and summary are both non-zero, don't print non-scalar values
+  /* If true, print the value in "summary" form.
+     If raw and summary are both true, don't print non-scalar values
      ("..." is printed instead).  */
-  int summary;
+  bool summary;
 
-  /* If nonzero, when printing a pointer, print the symbol to which it
+  /* If true, when printing a pointer, print the symbol to which it
      points, if any.  */
-  int symbol_print;
+  bool symbol_print;
 
   /* Maximum print depth when printing nested aggregates.  */
   int max_depth;
 
   /* Whether "finish" should print the value.  */
-  int finish_print;
+  bool finish_print;
 };
 
 /* Create an option_def_group for the value_print options, with OPTS
diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c
index 42083e789a5..bb69a79996a 100644
--- a/gdb/windows-tdep.c
+++ b/gdb/windows-tdep.c
@@ -100,7 +100,7 @@ static const int MAX_TIB64 =
   sizeof (thread_information_64) / sizeof (uint64_t);
 static const int FULL_TIB_SIZE = 0x1000;
 
-static int maint_display_all_tib = 0;
+static bool maint_display_all_tib = false;
 
 /* Define Thread Local Base pointer type.  */
 
diff --git a/gdb/xml-support.c b/gdb/xml-support.c
index 8b79d69a6d5..eaf99efa6b9 100644
--- a/gdb/xml-support.c
+++ b/gdb/xml-support.c
@@ -26,7 +26,7 @@
 #include <string>
 
 /* Debugging flag.  */
-static int debug_xml;
+static bool debug_xml;
 
 /* The contents of this file are only useful if XML support is
    available.  */
