Re: [PATCH] gdb, gdbserver, gdbsupport: replace many uses of strcmp with streq

Andrew Burgess
2026-03-16T17:19:43Z

Simon Marchi <simon.marchi@efficios.com> writes:

> Replace all occurrences of:
>
> strcmp (...) == 0
> strcmp (...) != 0
> !strcmp (...)
> 0 == strcmp (...)
> strcmp (...) directly used as a boolean predicate
>
> with the equivalent expression using streq.
>
> This is for consistency (we already use streq as some places in the
> testsuite) but also for clarity. I think that streq is clearer on the
> intent than strcmp. It's also a bit shorter.

I haven't looked through every line of this patch, life's too short :)
But I took a random sampling and it all looked good. I agree with the
intent here, so:

Approved-By: Andrew Burgess <aburgess@redhat.com>

Thanks,
Andrew

>
> Change-Id: Ibbf5261b1872c240bc0c982c147f6a5477275a91
> ---
> gdb/aarch64-tdep.c | 11 +-
> gdb/ada-exp.y | 4 +-
> gdb/ada-lang.c | 91 ++++++++--------
> gdb/amd64-dicos-tdep.c | 3 +-
> gdb/amd64-gnu-tdep.c | 2 +-
> gdb/amd64-linux-tdep.c | 2 +-
> gdb/amd64-obsd-tdep.c | 7 +-
> gdb/amd64-windows-tdep.c | 4 +-
> gdb/arch-utils.c | 4 +-
> gdb/arm-pikeos-tdep.c | 6 +-
> gdb/arm-tdep.c | 18 ++--
> gdb/arm-wince-tdep.c | 4 +-
> gdb/auto-load.c | 15 ++-
> gdb/avr-tdep.c | 2 +-
> gdb/ax-gdb.c | 6 +-
> gdb/bfin-tdep.c | 2 +-
> gdb/break-catch-sig.c | 2 +-
> gdb/break-cond-parse.c | 4 +-
> gdb/breakpoint.c | 13 ++-
> gdb/bt-utils.c | 2 +-
> gdb/btrace.c | 10 +-
> gdb/c-lang.c | 6 +-
> gdb/c-typeprint.c | 8 +-
> gdb/c-valprint.c | 9 +-
> gdb/charset.c | 36 +++----
> gdb/cli/cli-cmds.c | 7 +-
> gdb/cli/cli-decode.c | 9 +-
> gdb/cli/cli-dump.c | 4 +-
> gdb/cli/cli-option.c | 4 +-
> gdb/cli/cli-script.c | 2 +-
> gdb/cli/cli-style.c | 6 +-
> gdb/coff-pe-read.c | 48 ++++-----
> gdb/compile/compile-object-load.c | 6 +-
> gdb/compile/compile.c | 4 +-
> gdb/completer.c | 4 +-
> gdb/corelow.c | 4 +-
> gdb/cp-abi.c | 4 +-
> gdb/cp-name-parser.y | 2 +-
> gdb/cp-namespace.c | 14 +--
> gdb/cp-support.c | 24 ++---
> gdb/cp-valprint.c | 4 +-
> gdb/csky-tdep.c | 33 +++---
> gdb/ctfread.c | 8 +-
> gdb/d-namespace.c | 13 +--
> gdb/d-valprint.c | 4 +-
> gdb/darwin-nat-info.c | 6 +-
> gdb/dicos-tdep.c | 2 +-
> gdb/dictionary.c | 2 +-
> gdb/disasm.c | 4 +-
> gdb/dtrace-probe.c | 2 +-
> gdb/dwarf2/cooked-index-shard.c | 2 +-
> gdb/dwarf2/cooked-index.c | 2 +-
> gdb/dwarf2/cooked-indexer.c | 2 +-
> gdb/dwarf2/cu.c | 2 +-
> gdb/dwarf2/index-write.c | 5 +-
> gdb/dwarf2/read-gdb-index.c | 2 +-
> gdb/dwarf2/read.c | 39 ++++---
> gdb/dwarf2/sect-names.h | 4 +-
> gdb/elfread.c | 12 +--
> gdb/eval.c | 2 +-
> gdb/event-top.c | 2 +-
> gdb/exec.c | 6 +-
> gdb/extension.c | 2 +-
> gdb/f-typeprint.c | 2 +-
> gdb/f-valprint.c | 5 +-
> gdb/fbsd-nat.c | 2 +-
> gdb/fbsd-tdep.c | 2 +-
> gdb/frame.c | 2 +-
> gdb/frv-tdep.c | 6 +-
> gdb/ft32-tdep.c | 2 +-
> gdb/gcore-elf.c | 2 +-
> gdb/gcore.c | 2 +-
> gdb/gdb-demangle.c | 5 +-
> gdb/gdb_bfd.c | 2 +-
> gdb/gdbtypes.c | 16 +--
> gdb/gnu-nat.c | 8 +-
> gdb/gnu-v2-abi.c | 9 +-
> gdb/go-lang.c | 19 ++--
> gdb/go32-nat.c | 6 +-
> gdb/guile/scm-lazy-string.c | 2 +-
> gdb/guile/scm-param.c | 2 +-
> gdb/hppa-bsd-tdep.c | 2 +-
> gdb/hppa-linux-tdep.c | 2 +-
> gdb/hppa-tdep.c | 10 +-
> gdb/i386-dicos-tdep.c | 3 +-
> gdb/i386-gnu-tdep.c | 2 +-
> gdb/i386-go32-tdep.c | 4 +-
> gdb/i386-linux-tdep.c | 3 +-
> gdb/i386-obsd-tdep.c | 9 +-
> gdb/i386-tdep.c | 39 +++----
> gdb/i386-windows-tdep.c | 2 +-
> gdb/ia64-tdep.c | 8 +-
> gdb/infrun.c | 4 +-
> gdb/interps.c | 8 +-
> gdb/language.c | 27 +++--
> gdb/linespec.c | 7 +-
> gdb/linux-tdep.c | 22 ++--
> gdb/linux-thread-db.c | 7 +-
> gdb/m2-typeprint.c | 9 +-
> gdb/m32c-tdep.c | 6 +-
> gdb/m32r-linux-tdep.c | 3 +-
> gdb/machoread.c | 6 +-
> gdb/macrocmd.c | 2 +-
> gdb/macroexp.c | 7 +-
> gdb/macrotab.c | 4 +-
> gdb/main.c | 4 +-
> gdb/memattr.c | 2 +-
> gdb/mi/mi-cmd-disas.c | 6 +-
> gdb/mi/mi-cmd-var.c | 14 +--
> gdb/mi/mi-getopt.c | 4 +-
> gdb/mi/mi-main.c | 46 ++++-----
> gdb/mi/mi-parse.c | 33 +++---
> gdb/minsyms.c | 24 ++---
> gdb/mips-sde-tdep.c | 5 +-
> gdb/mips-tdep.c | 12 +--
> gdb/namespace.c | 10 +-
> gdb/nat/linux-btrace.c | 2 +-
> gdb/nat/linux-osdata.c | 4 +-
> gdb/nat/linux-procfs.c | 2 +-
> gdb/nds32-tdep.c | 2 +-
> gdb/objc-lang.c | 10 +-
> gdb/objfiles.c | 4 +-
> gdb/opencl-lang.c | 8 +-
> gdb/osabi.c | 18 ++--
> gdb/p-exp.y | 14 +--
> gdb/p-lang.c | 8 +-
> gdb/p-valprint.c | 9 +-
> gdb/ppc-linux-tdep.c | 20 ++--
> gdb/ppc64-tdep.c | 2 +-
> gdb/probe.c | 5 +-
> gdb/python/py-breakpoint.c | 2 +-
> gdb/python/py-lazy-string.c | 2 +-
> gdb/python/py-micmd.c | 5 +-
> gdb/python/py-param.c | 6 +-
> gdb/python/py-prettyprint.c | 6 +-
> gdb/python/py-style.c | 11 +-
> gdb/python/python.c | 2 +-
> gdb/record.c | 16 +--
> gdb/regformats/regdef.h | 2 +-
> gdb/reggroups.c | 2 +-
> gdb/remote-fileio.c | 2 +-
> gdb/remote.c | 114 ++++++++++-----------
> gdb/riscv-tdep.c | 14 +--
> gdb/rs6000-tdep.c | 16 ++-
> gdb/rust-lang.c | 28 ++---
> gdb/rust-parse.c | 2 +-
> gdb/s390-tdep.c | 2 +-
> gdb/selftest-arch.c | 20 ++--
> gdb/serial.c | 2 +-
> gdb/sh-tdep.c | 2 +-
> gdb/sol2-tdep.c | 7 +-
> gdb/solib-aix.c | 10 +-
> gdb/solib-darwin.c | 2 +-
> gdb/solib-dsbt.c | 2 +-
> gdb/solib-frv.c | 4 +-
> gdb/solib-svr4.c | 23 ++---
> gdb/solib-target.c | 2 +-
> gdb/solib.c | 4 +-
> gdb/source.c | 8 +-
> gdb/sparc64-fbsd-tdep.c | 2 +-
> gdb/sparc64-obsd-tdep.c | 2 +-
> gdb/stack.c | 5 +-
> gdb/stap-probe.c | 3 +-
> gdb/symfile.c | 30 +++---
> gdb/symmisc.c | 12 +--
> gdb/symtab.c | 14 +--
> gdb/target.c | 2 +-
> gdb/top.c | 4 +-
> gdb/tracectf.c | 31 +++---
> gdb/tracefile-tfile.c | 2 +-
> gdb/tracefile.c | 4 +-
> gdb/tracepoint.c | 6 +-
> gdb/tui/tui-layout.c | 12 +--
> gdb/tui/tui-win.c | 4 +-
> gdb/tui/tui.c | 2 +-
> gdb/ui-style.c | 4 +-
> gdb/unittests/child-path-selftests.c | 2 +-
> gdb/unittests/cli-utils-selftests.c | 14 +--
> gdb/unittests/copy_bitwise-selftests.c | 2 +-
> gdb/unittests/environ-selftests.c | 34 +++---
> gdb/unittests/intrusive_list-selftests.c | 4 +-
> gdb/unittests/lookup_name_info-selftests.c | 2 +-
> gdb/unittests/scoped_mmap-selftests.c | 2 +-
> gdb/unittests/unique_xmalloc_ptr_char.c | 4 +-
> gdb/utils.c | 10 +-
> gdb/valops.c | 18 ++--
> gdb/varobj.c | 2 +-
> gdb/windows-tdep.c | 8 +-
> gdb/x86-tdep.c | 4 +-
> gdb/xcoffread.c | 11 +-
> gdb/xml-support.c | 10 +-
> gdb/xml-syscall.c | 8 +-
> gdb/xml-tdesc.c | 17 ++-
> gdb/xstormy16-tdep.c | 6 +-
> gdbserver/gdbreplay.cc | 2 +-
> gdbserver/linux-arc-low.cc | 2 +-
> gdbserver/linux-low.cc | 4 +-
> gdbserver/linux-x86-low.cc | 2 +-
> gdbserver/linux-x86-tdesc.cc | 3 +-
> gdbserver/regcache.cc | 2 +-
> gdbserver/remote-utils.cc | 6 +-
> gdbserver/server.cc | 105 +++++++++----------
> gdbserver/thread-db.cc | 2 +-
> gdbserver/tracepoint.cc | 26 ++---
> gdbsupport/common-exceptions.h | 2 +-
> gdbsupport/osabi.cc | 2 +-
> gdbsupport/signals.cc | 3 +-
> 207 files changed, 923 insertions(+), 984 deletions(-)
>
> diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
> index de0d7ddb73b9..ce00f5182992 100644
> --- a/gdb/aarch64-tdep.c
> +++ b/gdb/aarch64-tdep.c
> @@ -355,8 +355,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch,
> break;
>
> if (inst.opcode->iclass == addsub_imm
> - && (inst.opcode->op == OP_ADD
> - || strcmp ("sub", inst.opcode->name) == 0))
> + && (inst.opcode->op == OP_ADD || streq ("sub", inst.opcode->name)))
> {
> unsigned rd = inst.operands[0].reg.regno;
> unsigned rn = inst.operands[1].reg.regno;
> @@ -382,7 +381,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch,
> seen_stack_set = true;
> }
> else if (inst.opcode->iclass == addsub_ext
> - && strcmp ("sub", inst.opcode->name) == 0)
> + && streq ("sub", inst.opcode->name))
> {
> unsigned rd = inst.operands[0].reg.regno;
> unsigned rn = inst.operands[1].reg.regno;
> @@ -433,7 +432,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch,
> << inst.operands[1].shifter.amount);
> }
> else if (inst.opcode->iclass == log_shift
> - && strcmp (inst.opcode->name, "orr") == 0)
> + && streq (inst.opcode->name, "orr"))
> {
> unsigned rd = inst.operands[0].reg.regno;
> unsigned rn = inst.operands[1].reg.regno;
> @@ -477,7 +476,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch,
> else if ((inst.opcode->iclass == ldstpair_off
> || (inst.opcode->iclass == ldstpair_indexed
> && inst.operands[2].addr.preind))
> - && strcmp ("stp", inst.opcode->name) == 0)
> + && streq ("stp", inst.opcode->name))
> {
> /* STP with addressing mode Pre-indexed and Base register. */
> unsigned rt1;
> @@ -526,7 +525,7 @@ aarch64_analyze_prologue (struct gdbarch *gdbarch,
> && (inst.opcode->op == OP_STR_POS
> || inst.opcode->op == OP_STRF_POS)))
> && inst.operands[1].addr.base_regno == AARCH64_SP_REGNUM
> - && strcmp ("str", inst.opcode->name) == 0)
> + && streq ("str", inst.opcode->name))
> {
> /* STR (immediate) */
> unsigned int rt = inst.operands[0].reg.regno;
> diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
> index 0663de01fda1..7c691d5a0990 100644
> --- a/gdb/ada-exp.y
> +++ b/gdb/ada-exp.y
> @@ -563,7 +563,7 @@ exp1 : exp
>
> primary : primary DOT_ID
> {
> - if (strcmp ($2.ptr, "all") == 0)
> + if (streq ($2.ptr, "all"))
> ada_wrap<ada_unop_ind_operation> ();
> else
> {
> @@ -1553,7 +1553,7 @@ find_primitive_type (struct parser_state *par_state, const char *name)
> type = language_lookup_primitive_type (par_state->language (),
> par_state->gdbarch (),
> name);
> - if (type == NULL && strcmp ("system__address", name) == 0)
> + if (type == NULL && streq ("system__address", name))
> type = type_system_address (par_state);
>
> if (type != NULL)
> diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
> index 908b33d9c72a..ddffc2973e45 100644
> --- a/gdb/ada-lang.c
> +++ b/gdb/ada-lang.c
> @@ -454,12 +454,11 @@ field_name_match (const char *field_name, const char *target)
> {
> int len = strlen (target);
>
> - return
> - (strncmp (field_name, target, len) == 0
> - && (field_name[len] == '\0'
> - || (startswith (field_name + len, "___")
> - && strcmp (field_name + strlen (field_name) - 6,
> - "___XVN") != 0)));
> + return (strncmp (field_name, target, len) == 0
> + && (field_name[len] == '\0'
> + || (startswith (field_name + len, "___")
> + && !streq (field_name + strlen (field_name) - 6,
> + "___XVN"))));
> }
>
>
> @@ -519,7 +518,7 @@ is_suffix (const char *str, const char *suffix)
> return false;
> len1 = strlen (str);
> len2 = strlen (suffix);
> - return len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0;
> + return len1 >= len2 && streq (str + len1 - len2, suffix);
> }
>
> /* The contents of value VAL, treated as a value of type TYPE. The
> @@ -1699,8 +1698,8 @@ ada_fixup_array_indexes_type (struct type *index_desc_type)
> the field type should be a meaningless integer type whose name
> is not equal to the field name. */
> if (index_desc_type->field (0).type ()->name () != NULL
> - && strcmp (index_desc_type->field (0).type ()->name (),
> - index_desc_type->field (0).name ()) == 0)
> + && streq (index_desc_type->field (0).type ()->name (),
> + index_desc_type->field (0).name ()))
> return;
>
> /* Fixup each field of INDEX_DESC_TYPE. */
> @@ -3850,7 +3849,7 @@ ada_resolve_enum (std::vector<struct block_symbol> &syms,
> /* We let an anonymous enum type match a non-anonymous one. */
> if (type1->name () != nullptr
> && type2->name () != nullptr
> - && strcmp (type1->name (), type2->name ()) != 0)
> + && !streq (type1->name (), type2->name ()))
> continue;
> if (ada_identical_enum_types_p (type1, type2))
> return i;
> @@ -4847,10 +4846,9 @@ equiv_types (struct type *type0, struct type *type1)
> if (type0 == NULL || type1 == NULL
> || type0->code () != type1->code ())
> return false;
> - if ((type0->code () == TYPE_CODE_STRUCT
> - || type0->code () == TYPE_CODE_ENUM)
> + if ((type0->code () == TYPE_CODE_STRUCT || type0->code () == TYPE_CODE_ENUM)
> && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
> - && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
> + && streq (ada_type_name (type0), ada_type_name (type1)))
> return true;
>
> return false;
> @@ -4894,7 +4892,7 @@ lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
> {
> const char *name0 = sym0->linkage_name ();
> const char *name1 = sym1->linkage_name ();
> - return (strcmp (name0, name1) == 0
> + return (streq (name0, name1)
> && sym0->value_address () == sym1->value_address ());
> }
>
> @@ -4983,7 +4981,7 @@ is_nondebugging_type (struct type *type)
> {
> const char *name = ada_type_name (type);
>
> - return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
> + return (name != NULL && streq (name, "<variable, no debug info>"));
> }
>
> /* Return true if TYPE1 and TYPE2 are two enumeration types
> @@ -5112,8 +5110,8 @@ remove_extra_symbols (std::vector<struct block_symbol> &syms)
> if (j != i
> && !syms[j].symbol->type ()->is_stub ()
> && syms[j].symbol->linkage_name () != NULL
> - && strcmp (syms[i].symbol->linkage_name (),
> - syms[j].symbol->linkage_name ()) == 0)
> + && streq (syms[i].symbol->linkage_name (),
> + syms[j].symbol->linkage_name ()))
> remove_p = true;
> }
> }
> @@ -5129,12 +5127,12 @@ remove_extra_symbols (std::vector<struct block_symbol> &syms)
> {
> if (i != j
> && syms[j].symbol->linkage_name () != NULL
> - && strcmp (syms[i].symbol->linkage_name (),
> - syms[j].symbol->linkage_name ()) == 0
> + && streq (syms[i].symbol->linkage_name (),
> + syms[j].symbol->linkage_name ())
> && (syms[i].symbol->loc_class ()
> == syms[j].symbol->loc_class ())
> - && syms[i].symbol->value_address ()
> - == syms[j].symbol->value_address ())
> + && (syms[i].symbol->value_address ()
> + == syms[j].symbol->value_address ()))
> remove_p = true;
> }
> }
> @@ -5820,7 +5818,7 @@ is_name_suffix (const char *str)
>
> /* "TKB" suffixes are used for subprograms implementing task bodies. */
>
> - if (strcmp (str, "TKB") == 0)
> + if (streq (str, "TKB"))
> return true;
>
> #if 0
> @@ -5876,14 +5874,14 @@ is_name_suffix (const char *str)
> return false;
> if (str[2] == '_')
> {
> - if (strcmp (str + 3, "JM") == 0)
> + if (streq (str + 3, "JM"))
> return true;
> /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
> the LJM suffix in favor of the JM one. But we will
> still accept LJM as a valid suffix for a reasonable
> amount of time, just to allow ourselves to debug programs
> compiled using an older version of GNAT. */
> - if (strcmp (str + 3, "LJM") == 0)
> + if (streq (str + 3, "LJM"))
> return true;
> if (str[3] != 'X')
> return false;
> @@ -6211,7 +6209,7 @@ ada_is_dispatch_table_ptr_type (struct type *type)
> if (name == NULL)
> return false;
>
> - return (strcmp (name, "ada__tags__dispatch_table") == 0);
> + return (streq (name, "ada__tags__dispatch_table"));
> }
>
> /* Return true if TYPE is an interface tag. */
> @@ -6224,7 +6222,7 @@ ada_is_interface_tag (struct type *type)
> if (name == nullptr)
> return false;
>
> - return (strcmp (name, "ada__tags__interface_tag") == 0);
> + return (streq (name, "ada__tags__interface_tag"));
> }
>
> /* True if field number FIELD_NUM in struct or union type TYPE is supposed
> @@ -6304,8 +6302,7 @@ ada_is_tag_type (struct type *type)
> {
> const char *name = ada_type_name (type->target_type ());
>
> - return (name != NULL
> - && strcmp (name, "ada__tags__dispatch_table") == 0);
> + return name != nullptr && streq (name, "ada__tags__dispatch_table");
> }
> }
>
> @@ -6654,7 +6651,7 @@ ada_is_wrapper_field (struct type *type, int field_num)
> {
> const char *name = type->field (field_num).name ();
>
> - if (name != NULL && strcmp (name, "RETVAL") == 0)
> + if (name != NULL && streq (name, "RETVAL"))
> {
> /* This happens in functions with "out" or "in out" parameters
> which are passed by copy. For such functions, GNAT describes
> @@ -6667,7 +6664,7 @@ ada_is_wrapper_field (struct type *type, int field_num)
>
> return (name != NULL
> && (startswith (name, "PARENT")
> - || strcmp (name, "REP") == 0
> + || streq (name, "REP")
> || startswith (name, "_parent")
> || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
> }
> @@ -7565,7 +7562,7 @@ find_parallel_type_by_descriptive_type (struct type *type, const char *name)
> }
>
> /* If the names match, stop. */
> - if (strcmp (result_name, name) == 0)
> + if (streq (result_name, name))
> break;
>
> /* Otherwise, look at the next item on the list, if any. */
> @@ -7652,7 +7649,7 @@ dynamic_template_type (struct type *type)
> {
> int len = strlen (ada_type_name (type));
>
> - if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
> + if (len > 6 && streq (ada_type_name (type) + len - 6, "___XVE"))
> return type;
> else
> return ada_find_parallel_type (type, "___XVE");
> @@ -8873,10 +8870,10 @@ ada_is_character_type (struct type *type)
> return (name != NULL
> && (type->code () == TYPE_CODE_INT
> || type->code () == TYPE_CODE_RANGE)
> - && (strcmp (name, "character") == 0
> - || strcmp (name, "wide_character") == 0
> - || strcmp (name, "wide_wide_character") == 0
> - || strcmp (name, "unsigned char") == 0));
> + && (streq (name, "character")
> + || streq (name, "wide_character")
> + || streq (name, "wide_wide_character")
> + || streq (name, "unsigned char")));
> }
>
> /* True if TYPE appears to be an Ada string type. */
> @@ -8924,7 +8921,7 @@ ada_is_aligner_type (struct type *type)
>
> return (type->code () == TYPE_CODE_STRUCT
> && type->num_fields () == 1
> - && strcmp (type->field (0).name (), "F") == 0);
> + && streq (type->field (0).name (), "F"));
> }
>
> /* If there is an ___XVS-convention type parallel to SUBTYPE, return
> @@ -10646,7 +10643,7 @@ convert_char_literal (struct type *type, LONGEST val)
> const char *ename = field.name ();
> size_t elen = strlen (ename);
>
> - if (elen >= len && strcmp (name, ename + elen - len) == 0)
> + if (elen >= len && streq (name, ename + elen - len))
> return field.loc_enumval ();
> }
> return val;
> @@ -11432,7 +11429,7 @@ ada_ternop_slice_operation::resolve (struct expression *exp,
> bool
> ada_is_system_address_type (struct type *type)
> {
> - return (type->name () && strcmp (type->name (), "system__address") == 0);
> + return (type->name () && streq (type->name (), "system__address"));
> }
>
> \f
> @@ -12020,8 +12017,8 @@ ada_unhandled_exception_name_addr_from_raise (void)
> = find_frame_funname (fi, &func_lang, NULL);
> if (func_name != NULL)
> {
> - if (strcmp (func_name.get (),
> - data->exception_info->catch_exception_sym) == 0)
> + if (streq (func_name.get (),
> + data->exception_info->catch_exception_sym))
> break; /* We found the frame we were looking for... */
> }
> fi = get_prev_frame (fi);
> @@ -12773,7 +12770,7 @@ ada_exception_catchpoint_cond_string (const char *excep_string,
>
> for (const char *name : standard_exc)
> {
> - if (strcmp (name, excep_string) == 0)
> + if (streq (name, excep_string))
> {
> is_standard_exc = true;
> break;
> @@ -12981,7 +12978,7 @@ ada_is_exception_sym (struct symbol *sym)
> && sym->loc_class () != LOC_BLOCK
> && sym->loc_class () != LOC_CONST
> && sym->loc_class () != LOC_UNRESOLVED
> - && type_name != NULL && strcmp (type_name, "exception") == 0);
> + && type_name != nullptr && streq (type_name, "exception"));
> }
>
> /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
> @@ -12995,13 +12992,13 @@ ada_is_non_standard_exception_sym (struct symbol *sym)
> return false;
>
> for (const char *name : standard_exc)
> - if (strcmp (sym->linkage_name (), name) == 0)
> + if (streq (sym->linkage_name (), name))
> return false; /* A standard exception. */
>
> /* Numeric_Error is also a standard exception, so exclude it.
> See the STANDARD_EXC description for more details as to why
> this exception is not listed in that array. */
> - if (strcmp (sym->linkage_name (), "numeric_error") == 0)
> + if (streq (sym->linkage_name (), "numeric_error"))
> return false;
>
> return true;
> @@ -13029,7 +13026,7 @@ ada_exc_info::operator< (const ada_exc_info &other) const
> bool
> ada_exc_info::operator== (const ada_exc_info &other) const
> {
> - return addr == other.addr && strcmp (name, other.name) == 0;
> + return addr == other.addr && streq (name, other.name);
> }
>
> /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
> @@ -13373,7 +13370,7 @@ do_exact_match (const char *symbol_search_name,
> const lookup_name_info &lookup_name,
> completion_match_result *comp_match_res)
> {
> - return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
> + return streq (symbol_search_name, ada_lookup_name (lookup_name));
> }
>
> /* Build the Ada lookup name for LOOKUP_NAME. */
> diff --git a/gdb/amd64-dicos-tdep.c b/gdb/amd64-dicos-tdep.c
> index 915d1141110a..259d4e86c003 100644
> --- a/gdb/amd64-dicos-tdep.c
> +++ b/gdb/amd64-dicos-tdep.c
> @@ -38,8 +38,7 @@ amd64_dicos_osabi_sniffer (bfd *abfd)
>
> /* On amd64-DICOS, the Load Module's "header" section is 72
> bytes. */
> - if (strcmp (target_name, "elf64-x86-64") == 0
> - && dicos_load_module_p (abfd, 72))
> + if (streq (target_name, "elf64-x86-64") && dicos_load_module_p (abfd, 72))
> return GDB_OSABI_DICOS;
>
> return GDB_OSABI_UNKNOWN;
> diff --git a/gdb/amd64-gnu-tdep.c b/gdb/amd64-gnu-tdep.c
> index 963ca791b100..366cc4584ada 100644
> --- a/gdb/amd64-gnu-tdep.c
> +++ b/gdb/amd64-gnu-tdep.c
> @@ -90,7 +90,7 @@ amd64_gnu_sigtramp_p (const frame_info_ptr &this_frame)
> find_pc_partial_function (pc, &name, NULL, NULL);
>
> /* If we have a NAME, we can check for the trampoline function */
> - if (name != NULL && strcmp (name, "trampoline") == 0)
> + if (name != NULL && streq (name, "trampoline"))
> return 1;
>
> return amd64_gnu_sigtramp_start (this_frame) != 0;
> diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
> index ff0c58464f25..17d9f78f32d1 100644
> --- a/gdb/amd64-linux-tdep.c
> +++ b/gdb/amd64-linux-tdep.c
> @@ -206,7 +206,7 @@ amd64_linux_sigtramp_p (const frame_info_ptr &this_frame)
> if (name == NULL || strstr (name, "sigaction") != NULL)
> return (amd64_linux_sigtramp_start (this_frame) != 0);
>
> - return (strcmp ("__restore_rt", name) == 0);
> + return (streq ("__restore_rt", name));
> }
>
> /* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>. */
> diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
> index 81bc5f5d93ca..0dbc47be6f9a 100644
> --- a/gdb/amd64-obsd-tdep.c
> +++ b/gdb/amd64-obsd-tdep.c
> @@ -396,10 +396,9 @@ amd64obsd_trapframe_sniffer (const struct frame_unwind *self,
> return 0;
>
> find_pc_partial_function (get_frame_pc (this_frame), &name, NULL, NULL);
> - return (name && ((strcmp (name, "calltrap") == 0)
> - || (strcmp (name, "osyscall1") == 0)
> - || (strcmp (name, "Xsyscall") == 0)
> - || (startswith (name, "Xintr"))));
> + return (name != nullptr
> + && (streq (name, "calltrap") || streq (name, "osyscall1")
> + || streq (name, "Xsyscall") || startswith (name, "Xintr")));
> }
>
> static const struct frame_unwind_legacy amd64obsd_trapframe_unwind (
> diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
> index a9ca7b2ac79b..85f7ac51a4f9 100644
> --- a/gdb/amd64-windows-tdep.c
> +++ b/gdb/amd64-windows-tdep.c
> @@ -444,7 +444,7 @@ amd64_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
> bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
> if (s.minsym != NULL
> && s.minsym->linkage_name () != NULL
> - && strcmp (s.minsym->linkage_name (), "__main") == 0)
> + && streq (s.minsym->linkage_name (), "__main"))
> pc += 5;
> }
> }
> @@ -1379,7 +1379,7 @@ amd64_cygwin_core_osabi_sniffer (bfd *abfd)
>
> /* Cygwin uses elf core dumps. Do not claim all ELF executables,
> check whether there is a .reg section of proper size. */
> - if (strcmp (target_name, "elf64-x86-64") == 0)
> + if (streq (target_name, "elf64-x86-64"))
> {
> asection *section = bfd_get_section_by_name (abfd, ".reg");
> if (section != nullptr
> diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
> index 8de7655e6384..ea0b3c111f99 100644
> --- a/gdb/arch-utils.c
> +++ b/gdb/arch-utils.c
> @@ -295,7 +295,7 @@ default_floatformat_for_type (struct gdbarch *gdbarch,
> /* Check if this is a bfloat16 type. It has the same size as the
> IEEE half float type, so we use the base type name to tell them
> apart. */
> - if (name != nullptr && strcmp (name, "__bf16") == 0
> + if (name != nullptr && streq (name, "__bf16")
> && len == gdbarch_bfloat16_bit (gdbarch))
> format = gdbarch_bfloat16_format (gdbarch);
> else if (len == gdbarch_half_bit (gdbarch))
> @@ -553,7 +553,7 @@ set_architecture (const char *ignore_args,
> {
> struct gdbarch_info info;
>
> - if (strcmp (set_architecture_string, "auto") == 0)
> + if (streq (set_architecture_string, "auto"))
> {
> target_architecture_user = NULL;
> if (!gdbarch_update_p (current_inferior (), info))
> diff --git a/gdb/arm-pikeos-tdep.c b/gdb/arm-pikeos-tdep.c
> index ce7297d51bea..8b84cc3f68a1 100644
> --- a/gdb/arm-pikeos-tdep.c
> +++ b/gdb/arm-pikeos-tdep.c
> @@ -58,12 +58,10 @@ arm_pikeos_osabi_sniffer (bfd *abfd)
> {
> const char *name = bfd_asymbol_name (sym);
>
> - if (strcmp (name, "_vm_stack") == 0
> - || strcmp (name, "__p4_stack") == 0)
> + if (streq (name, "_vm_stack") || streq (name, "__p4_stack"))
> pikeos_stack_found = 1;
>
> - if (strcmp (name, "_vm_stack_size") == 0
> - || strcmp (name, "__p4_stack_end") == 0)
> + if (streq (name, "_vm_stack_size") || streq (name, "__p4_stack_end"))
> pikeos_stack_size_found = 1;
> }
>
> diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
> index dabae0aec0f0..83dc71cc9da8 100644
> --- a/gdb/arm-tdep.c
> +++ b/gdb/arm-tdep.c
> @@ -734,9 +734,9 @@ arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr)
> return 1;
>
> /* If the user wants to override the symbol table, let him. */
> - if (strcmp (arm_force_mode_string, "arm") == 0)
> + if (streq (arm_force_mode_string, "arm"))
> return 0;
> - if (strcmp (arm_force_mode_string, "thumb") == 0)
> + if (streq (arm_force_mode_string, "thumb"))
> return 1;
>
> /* ARM v6-M and v7-M are always in Thumb mode. */
> @@ -754,9 +754,9 @@ arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr)
> return (MSYMBOL_IS_SPECIAL (sym.minsym));
>
> /* If the user wants to override the fallback mode, let them. */
> - if (strcmp (arm_fallback_mode_string, "arm") == 0)
> + if (streq (arm_fallback_mode_string, "arm"))
> return 0;
> - if (strcmp (arm_fallback_mode_string, "thumb") == 0)
> + if (streq (arm_fallback_mode_string, "thumb"))
> return 1;
>
> /* If we couldn't find any symbol, but we're talking to a running
> @@ -9408,7 +9408,7 @@ arm_skip_stub (const frame_info_ptr &frame, CORE_ADDR pc)
> int offset = strlen (name) - 2;
>
> for (regno = 0; regno <= 14; regno++)
> - if (strcmp (&name[offset], table[regno]) == 0)
> + if (streq (&name[offset], table[regno]))
> return get_frame_register_unsigned (frame, regno);
> }
>
> @@ -9476,7 +9476,7 @@ set_fp_model_sfunc (const char *args, int from_tty,
> int fp_model;
>
> for (fp_model = ARM_FLOAT_AUTO; fp_model != ARM_FLOAT_LAST; fp_model++)
> - if (strcmp (current_fp_model, fp_model_strings[fp_model]) == 0)
> + if (streq (current_fp_model, fp_model_strings[fp_model]))
> {
> arm_fp_model = (enum arm_float_model) fp_model;
> break;
> @@ -9516,7 +9516,7 @@ arm_set_abi (const char *args, int from_tty,
> int arm_abi;
>
> for (arm_abi = ARM_ABI_AUTO; arm_abi != ARM_ABI_LAST; arm_abi++)
> - if (strcmp (arm_abi_string, arm_abi_strings[arm_abi]) == 0)
> + if (streq (arm_abi_string, arm_abi_strings[arm_abi]))
> {
> arm_abi_global = (enum arm_abi_kind) arm_abi;
> break;
> @@ -10043,7 +10043,7 @@ arm_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame
> static const char *
> arm_gnu_triplet_regexp (struct gdbarch *gdbarch)
> {
> - if (strcmp (gdbarch_bfd_arch_info (gdbarch)->arch_name, "arm") == 0)
> + if (streq (gdbarch_bfd_arch_info (gdbarch)->arch_name, "arm"))
> return "arm(v[^- ]*)?";
> return gdbarch_bfd_arch_info (gdbarch)->arch_name;
> }
> @@ -11010,7 +11010,7 @@ INIT_GDB_FILE (arm_tdep)
> size_t offset = strlen ("reg-names-");
> const char *style = disasm_options->name[i];
> valid_disassembly_styles[j++] = &style[offset];
> - if (strcmp (&style[offset], "std") == 0)
> + if (streq (&style[offset], "std"))
> disassembly_style = &style[offset];
> length = snprintf (rdptr, rest, "%s - %s\n", &style[offset],
> disasm_options->description[i]);
> diff --git a/gdb/arm-wince-tdep.c b/gdb/arm-wince-tdep.c
> index 39593f4c3f37..1a03e63bb681 100644
> --- a/gdb/arm-wince-tdep.c
> +++ b/gdb/arm-wince-tdep.c
> @@ -103,7 +103,7 @@ arm_wince_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> if (s.minsym != NULL
> && s.minsym->linkage_name () != NULL
> - && strcmp (s.minsym->linkage_name (), "__gccmain") == 0)
> + && streq (s.minsym->linkage_name (), "__gccmain"))
> pc += 4;
> }
>
> @@ -143,7 +143,7 @@ arm_wince_osabi_sniffer (bfd *abfd)
> {
> const char *target_name = bfd_get_target (abfd);
>
> - if (strcmp (target_name, "pei-arm-wince-little") == 0)
> + if (streq (target_name, "pei-arm-wince-little"))
> return GDB_OSABI_WINCE;
>
> return GDB_OSABI_UNKNOWN;
> diff --git a/gdb/auto-load.c b/gdb/auto-load.c
> index b5fec13743cb..7bb062ed4322 100644
> --- a/gdb/auto-load.c
> +++ b/gdb/auto-load.c
> @@ -279,7 +279,7 @@ auto_load_safe_path_vec_update (void)
>
> if (debug_auto_load)
> {
> - if (strcmp (in_vec.get (), original.get ()) == 0)
> + if (streq (in_vec.get (), original.get ()))
> auto_load_debug_printf ("Using directory \"%s\".",
> in_vec.get ());
> else
> @@ -288,7 +288,7 @@ auto_load_safe_path_vec_update (void)
> }
>
> /* If gdb_realpath returns a different content, append it. */
> - if (strcmp (real_path.get (), in_vec.get ()) != 0)
> + if (!streq (real_path.get (), in_vec.get ()))
> {
> auto_load_debug_printf ("And canonicalized as \"%s\".",
> real_path.get ());
> @@ -468,12 +468,12 @@ filename_is_in_auto_load_safe_path_vec (const char *filename,
> if (*filename_realp == NULL)
> {
> *filename_realp = gdb_realpath (filename);
> - if (debug_auto_load && strcmp (filename_realp->get (), filename) != 0)
> + if (debug_auto_load && !streq (filename_realp->get (), filename))
> auto_load_debug_printf ("Resolved file \"%s\" as \"%s\".",
> filename, filename_realp->get ());
> }
>
> - if (strcmp (filename_realp->get (), filename) != 0)
> + if (!streq (filename_realp->get (), filename))
> for (const gdb::unique_xmalloc_ptr<char> &p : auto_load_safe_path_vec)
> if (filename_is_in_pattern (filename_realp->get (), p.get ()))
> {
> @@ -629,7 +629,7 @@ eq_loaded_script_entry (const void *a, const void *b)
> const struct loaded_script *ea = (const struct loaded_script *) a;
> const struct loaded_script *eb = (const struct loaded_script *) b;
>
> - return strcmp (ea->name, eb->name) == 0 && ea->language == eb->language;
> + return streq (ea->name, eb->name) && ea->language == eb->language;
> }
>
> /* Initialize the table to track loaded scripts.
> @@ -915,7 +915,7 @@ auto_load_objfile_script (struct objfile *objfile,
> (bfd_get_debug_link_info (parent->obfd.get (), &crc32));
>
> if (debuglink.get () != nullptr
> - && strcmp (debuglink.get (), lbasename (realname.get ())) != 0)
> + && !streq (debuglink.get (), lbasename (realname.get ())))
> {
> /* Replace the last component of the parent's path with the
> debuglink name. */
> @@ -1261,8 +1261,7 @@ print_script (struct loaded_script *script)
> uiout->text ("\n");
>
> /* If the name isn't the full path, print it too. */
> - if (script->full_path != NULL
> - && strcmp (script->name, script->full_path) != 0)
> + if (script->full_path != NULL && !streq (script->name, script->full_path))
> {
> uiout->text ("\tfull name: ");
> uiout->field_string ("full_path", script->full_path);
> diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
> index 8b88f69a04f2..f445a2db6ba7 100644
> --- a/gdb/avr-tdep.c
> +++ b/gdb/avr-tdep.c
> @@ -1412,7 +1412,7 @@ avr_address_class_name_to_type_flags (struct gdbarch *gdbarch,
> const char* name,
> type_instance_flags *type_flags_ptr)
> {
> - if (strcmp (name, "flash") == 0)
> + if (streq (name, "flash"))
> {
> *type_flags_ptr = AVR_TYPE_INSTANCE_FLAG_ADDRESS_CLASS_FLASH;
> return true;
> diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
> index 2a96ff1c6213..498a307c8688 100644
> --- a/gdb/ax-gdb.c
> +++ b/gdb/ax-gdb.c
> @@ -1345,7 +1345,7 @@ gen_struct_ref_recursive (struct agent_expr *ax, struct axs_value *value,
>
> if (this_name)
> {
> - if (strcmp (field, this_name) == 0)
> + if (streq (field, this_name))
> {
> /* Note that bytecodes for the struct's base (aka
> "this") will have been generated already, which will
> @@ -1486,7 +1486,7 @@ gen_struct_elt_for_reference (struct agent_expr *ax, struct axs_value *value,
> {
> const char *t_field_name = t->field (i).name ();
>
> - if (t_field_name && strcmp (t_field_name, fieldname) == 0)
> + if (t_field_name && streq (t_field_name, fieldname))
> {
> if (t->field (i).is_static ())
> {
> @@ -2478,7 +2478,7 @@ agent_eval_command_one (const char *exp, int eval, CORE_ADDR pc)
> agent_expr_up agent;
>
> arg = exp;
> - if (!eval && strcmp (arg, "$_ret") == 0)
> + if (!eval && streq (arg, "$_ret"))
> {
> agent = gen_trace_for_return_address (pc, get_current_arch (),
> trace_string);
> diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
> index 5e1330166458..2a9e458e51cd 100644
> --- a/gdb/bfin-tdep.c
> +++ b/gdb/bfin-tdep.c
> @@ -597,7 +597,7 @@ bfin_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
>
> *size = kind;
>
> - if (strcmp (target_shortname (), "sim") == 0)
> + if (streq (target_shortname (), "sim"))
> return bfin_sim_breakpoint;
> else
> return bfin_breakpoint;
> diff --git a/gdb/break-catch-sig.c b/gdb/break-catch-sig.c
> index fbc4458145a2..ea85083b6f86 100644
> --- a/gdb/break-catch-sig.c
> +++ b/gdb/break-catch-sig.c
> @@ -87,7 +87,7 @@ signal_to_name_or_int (enum gdb_signal sig)
> {
> const char *result = gdb_signal_to_name (sig);
>
> - if (strcmp (result, "?") == 0)
> + if (streq (result, "?"))
> result = plongest (sig);
>
> return result;
> diff --git a/gdb/break-cond-parse.c b/gdb/break-cond-parse.c
> index e2283a8d59f4..4fec4dbef94f 100644
> --- a/gdb/break-cond-parse.c
> +++ b/gdb/break-cond-parse.c
> @@ -588,9 +588,9 @@ test (const char *input, const char *condition, int thread = -1,
>
> if ((condition == nullptr) != (extracted_condition.get () == nullptr)
> || (condition != nullptr
> - && strcmp (condition, extracted_condition.get ()) != 0)
> + && !streq (condition, extracted_condition.get ()))
> || (rest == nullptr) != (extracted_rest.get () == nullptr)
> - || (rest != nullptr && strcmp (rest, extracted_rest.get ()) != 0)
> + || (rest != nullptr && !streq (rest, extracted_rest.get ()))
> || thread != extracted_thread
> || inferior != extracted_inferior
> || task != extracted_task
> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
> index a48a2ceb4f3b..d7be1b44229e 100644
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -4836,7 +4836,7 @@ breakpoint_about_to_proceed (void)
> static bool
> command_line_is_silent (struct command_line *cmd)
> {
> - return cmd && (strcmp ("silent", cmd->line) == 0);
> + return cmd && (streq ("silent", cmd->line));
> }
>
> /* Sets the $_hit_bpnum and $_hit_locno to bpnum and locno.
> @@ -6325,7 +6325,7 @@ wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
> total_width = 0;
> for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
> {
> - if (strcmp (text, col_name) == 0)
> + if (streq (text, col_name))
> return total_width;
>
> total_width += width + 1;
> @@ -8723,9 +8723,9 @@ update_dprintf_command_list (struct breakpoint *b)
> if (*dprintf_args != '"')
> error (_("Bad format string, missing '\"'."));
>
> - if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
> + if (streq (dprintf_style, dprintf_style_gdb))
> printf_line = xstrprintf ("printf %s", dprintf_args);
> - else if (strcmp (dprintf_style, dprintf_style_call) == 0)
> + else if (streq (dprintf_style, dprintf_style_call))
> {
> if (dprintf_function.empty ())
> error (_("No function supplied for dprintf call"));
> @@ -8740,7 +8740,7 @@ update_dprintf_command_list (struct breakpoint *b)
> dprintf_function.c_str (),
> dprintf_args);
> }
> - else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
> + else if (streq (dprintf_style, dprintf_style_agent))
> {
> if (target_can_run_breakpoint_commands ())
> printf_line = xstrprintf ("agent-printf %s", dprintf_args);
> @@ -13102,8 +13102,7 @@ update_breakpoint_locations (code_breakpoint *b,
> {
> for (bp_location &l : b->locations ())
> if (l.function_name
> - && strcmp (e.function_name.get (),
> - l.function_name.get ()) == 0)
> + && streq (e.function_name.get (), l.function_name.get ()))
> {
> l.enabled = e.enabled;
> break;
> diff --git a/gdb/bt-utils.c b/gdb/bt-utils.c
> index c2566931bf2f..7fc8d04f306b 100644
> --- a/gdb/bt-utils.c
> +++ b/gdb/bt-utils.c
> @@ -104,7 +104,7 @@ libbacktrace_print (void *data, uintptr_t pc, const char *filename,
> }
> sig_write ("\n");
>
> - return function != nullptr && strcmp (function, "main") == 0;
> + return function != nullptr && streq (function, "main");
> }
>
> /* Write a backtrace to GDB's stderr in an async safe manner. This is a
> diff --git a/gdb/btrace.c b/gdb/btrace.c
> index 27487f526ab5..6a8f0f549d1a 100644
> --- a/gdb/btrace.c
> +++ b/gdb/btrace.c
> @@ -196,7 +196,7 @@ ftrace_function_switched (const struct btrace_function *bfun,
>
> /* If the minimal symbol changed, we certainly switched functions. */
> if (mfun != NULL && msym != NULL
> - && strcmp (mfun->linkage_name (), msym->linkage_name ()) != 0)
> + && !streq (mfun->linkage_name (), msym->linkage_name ()))
> return 1;
>
> /* If the symbol changed, we certainly switched functions. */
> @@ -205,7 +205,7 @@ ftrace_function_switched (const struct btrace_function *bfun,
> const char *bfname, *fname;
>
> /* Check the function name. */
> - if (strcmp (fun->linkage_name (), sym->linkage_name ()) != 0)
> + if (!streq (fun->linkage_name (), sym->linkage_name ()))
> return 1;
>
> /* Check the location of those functions, as well. */
> @@ -604,7 +604,7 @@ ftrace_update_function (struct btrace_thread_info *btinfo,
> create a stack back trace with the same function names but
> different frame id's. This will confuse stepping. */
> fname = ftrace_print_function_name (bfun);
> - if (strcmp (fname, "_dl_runtime_resolve") == 0)
> + if (streq (fname, "_dl_runtime_resolve"))
> return ftrace_new_tailcall (btinfo, mfun, fun);
>
> return ftrace_new_return (btinfo, mfun, fun);
> @@ -3316,7 +3316,7 @@ maint_btrace_packet_history_cmd (const char *arg, int from_tty)
> return;
> }
>
> - if (arg == NULL || *arg == 0 || strcmp (arg, "+") == 0)
> + if (arg == NULL || *arg == 0 || streq (arg, "+"))
> {
> from = to;
>
> @@ -3324,7 +3324,7 @@ maint_btrace_packet_history_cmd (const char *arg, int from_tty)
> size = end - from;
> to = from + size;
> }
> - else if (strcmp (arg, "-") == 0)
> + else if (streq (arg, "-"))
> {
> to = from;
>
> diff --git a/gdb/c-lang.c b/gdb/c-lang.c
> index a8e3a467bec4..fdb5be7b2b7a 100644
> --- a/gdb/c-lang.c
> +++ b/gdb/c-lang.c
> @@ -90,19 +90,19 @@ classify_type (struct type *elttype, struct gdbarch *gdbarch,
> goto done;
> }
>
> - if (!strcmp (name, "wchar_t"))
> + if (streq (name, "wchar_t"))
> {
> result = C_WIDE_CHAR;
> goto done;
> }
>
> - if (!strcmp (name, "char16_t"))
> + if (streq (name, "char16_t"))
> {
> result = C_CHAR_16;
> goto done;
> }
>
> - if (!strcmp (name, "char32_t"))
> + if (streq (name, "char32_t"))
> {
> result = C_CHAR_32;
> goto done;
> diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
> index 76472c23254f..821b78becf41 100644
> --- a/gdb/c-typeprint.c
> +++ b/gdb/c-typeprint.c
> @@ -128,7 +128,7 @@ c_print_type_1 (struct type *type,
> || code == TYPE_CODE_METHODPTR
> || TYPE_IS_REFERENCE (type))))
> gdb_puts (" ", stream);
> - need_post_space = (varstring != NULL && strcmp (varstring, "") != 0);
> + need_post_space = (varstring != NULL && !streq (varstring, ""));
> c_type_print_varspec_prefix (type, stream, show, 0, need_post_space,
> language, flags, podata);
> }
> @@ -181,8 +181,7 @@ c_print_typedef (struct type *type,
> gdb_printf (stream, "typedef ");
> type_print (type, "", stream, -1);
> if ((new_symbol->type ())->name () == 0
> - || strcmp ((new_symbol->type ())->name (),
> - new_symbol->linkage_name ()) != 0
> + || !streq ((new_symbol->type ())->name (), new_symbol->linkage_name ())
> || new_symbol->type ()->code () == TYPE_CODE_TYPEDEF)
> gdb_printf (stream, " %s", new_symbol->print_name ());
> gdb_printf (stream, ";");
> @@ -1100,8 +1099,7 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
> int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
> const char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
> const char *name = type->name ();
> - int is_constructor = name && strcmp (method_name,
> - name) == 0;
> + int is_constructor = name != nullptr && streq (method_name, name);
>
> for (j = 0; j < len2; j++)
> {
> diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
> index 522b42497d12..9f9f61ea2e0d 100644
> --- a/gdb/c-valprint.c
> +++ b/gdb/c-valprint.c
> @@ -38,9 +38,9 @@
> static int
> textual_name (const char *name)
> {
> - return (!strcmp (name, "wchar_t")
> - || !strcmp (name, "char16_t")
> - || !strcmp (name, "char32_t"));
> + return (streq (name, "wchar_t")
> + || streq (name, "char16_t")
> + || streq (name, "char32_t"));
> }
>
> /* Apply a heuristic to decide whether an array of TYPE or a pointer
> @@ -500,8 +500,7 @@ c_value_print (struct value *val, struct ui_file *stream,
> if (original_type->code () == TYPE_CODE_PTR
> && original_type->name () == NULL
> && original_type->target_type ()->name () != NULL
> - && (strcmp (original_type->target_type ()->name (),
> - "char") == 0
> + && (streq (original_type->target_type ()->name (), "char")
> || textual_name (original_type->target_type ()->name ())))
> {
> /* Print nothing. */
> diff --git a/gdb/charset.c b/gdb/charset.c
> index 2f0ceafd57d0..1b0725b50783 100644
> --- a/gdb/charset.c
> +++ b/gdb/charset.c
> @@ -106,16 +106,16 @@
> static iconv_t
> phony_iconv_open (const char *to, const char *from)
> {
> - if (strcmp (to, "wchar_t") && strcmp (to, GDB_DEFAULT_HOST_CHARSET))
> + if (!streq (to, "wchar_t") && !streq (to, GDB_DEFAULT_HOST_CHARSET))
> return -1;
>
> - if (!strcmp (from, "UTF-32BE") || !strcmp (from, "UTF-32"))
> + if (streq (from, "UTF-32BE") || streq (from, "UTF-32"))
> return 1;
>
> - if (!strcmp (from, "UTF-32LE"))
> + if (streq (from, "UTF-32LE"))
> return 2;
>
> - if (strcmp (from, "wchar_t") && strcmp (from, GDB_DEFAULT_HOST_CHARSET))
> + if (!streq (from, "wchar_t") && !streq (from, GDB_DEFAULT_HOST_CHARSET))
> return -1;
>
> return 0;
> @@ -232,7 +232,7 @@ show_host_charset_name (struct ui_file *file, int from_tty,
> struct cmd_list_element *c,
> const char *value)
> {
> - if (!strcmp (value, "auto"))
> + if (streq (value, "auto"))
> gdb_printf (file,
> _("The host character set is \"auto; currently %s\".\n"),
> auto_host_charset_name);
> @@ -245,7 +245,7 @@ static void
> show_target_charset_name (struct ui_file *file, int from_tty,
> struct cmd_list_element *c, const char *value)
> {
> - if (!strcmp (value, "auto"))
> + if (streq (value, "auto"))
> gdb_printf (file,
> _("The target character set is \"auto; "
> "currently %s\".\n"),
> @@ -262,7 +262,7 @@ show_target_wide_charset_name (struct ui_file *file,
> struct cmd_list_element *c,
> const char *value)
> {
> - if (!strcmp (value, "auto"))
> + if (streq (value, "auto"))
> gdb_printf (file,
> _("The target wide character set is \"auto; "
> "currently %s\".\n"),
> @@ -311,7 +311,7 @@ set_be_le_names (struct gdbarch *gdbarch)
> target_wide_charset_be_name = NULL;
>
> target_wide = target_wide_charset_name;
> - if (!strcmp (target_wide, "auto"))
> + if (streq (target_wide, "auto"))
> target_wide = gdbarch_auto_wide_charset (gdbarch);
>
> len = strlen (target_wide);
> @@ -344,7 +344,7 @@ validate (struct gdbarch *gdbarch)
> const char *target_cset = target_charset (gdbarch);
> const char *target_wide_cset = target_wide_charset_name;
>
> - if (!strcmp (target_wide_cset, "auto"))
> + if (streq (target_wide_cset, "auto"))
> target_wide_cset = gdbarch_auto_wide_charset (gdbarch);
>
> desc = iconv_open (target_wide_cset, host_cset);
> @@ -416,7 +416,7 @@ show_charset (struct ui_file *file, int from_tty,
> const char *
> host_charset (void)
> {
> - if (!strcmp (host_charset_name, "auto"))
> + if (streq (host_charset_name, "auto"))
> return auto_host_charset_name;
> return host_charset_name;
> }
> @@ -424,7 +424,7 @@ host_charset (void)
> const char *
> target_charset (struct gdbarch *gdbarch)
> {
> - if (!strcmp (target_charset_name, "auto"))
> + if (streq (target_charset_name, "auto"))
> return default_auto_charset ();
> return target_charset_name;
> }
> @@ -446,7 +446,7 @@ target_wide_charset (struct gdbarch *gdbarch)
> return target_wide_charset_le_name;
> }
>
> - if (!strcmp (target_wide_charset_name, "auto"))
> + if (streq (target_wide_charset_name, "auto"))
> return gdbarch_auto_wide_charset (gdbarch);
>
> return target_wide_charset_name;
> @@ -505,7 +505,7 @@ convert_between_encodings (const char *from, const char *to,
> unsigned int space_request;
>
> /* Often, the host and target charsets will be the same. */
> - if (!strcmp (from, to))
> + if (streq (from, to))
> {
> obstack_grow (output, bytes, num_bytes);
> return;
> @@ -1004,7 +1004,7 @@ INIT_GDB_FILE (charset)
> /* Solaris will return `646' here -- but the Solaris iconv then does
> not accept this. Darwin (and maybe FreeBSD) may return "" here,
> which GNU libiconv doesn't like (infinite loop). */
> - if (!strcmp (auto_host_charset_name, "646") || !*auto_host_charset_name)
> + if (streq (auto_host_charset_name, "646") || !*auto_host_charset_name)
> auto_host_charset_name = "ASCII";
> auto_target_charset_name = auto_host_charset_name;
> #elif defined (USE_WIN32API)
> @@ -1031,7 +1031,7 @@ INIT_GDB_FILE (charset)
> auto_target_charset_name = auto_host_charset_name;
>
> /* Windows Terminal supports Emoji when using UTF-8 output. */
> - if (strcmp (w32_host_default_charset, "UTF-8") != 0)
> + if (!streq (w32_host_default_charset, "UTF-8"))
> no_emojis ();
> }
> #endif
> @@ -1039,7 +1039,7 @@ INIT_GDB_FILE (charset)
>
> /* Recall that the first element is always "auto". */
> host_charset_name = charset_enum[0];
> - gdb_assert (strcmp (host_charset_name, "auto") == 0);
> + gdb_assert (streq (host_charset_name, "auto"));
> add_setshow_enum_cmd ("charset", class_support,
> charset_enum, &host_charset_name, _("\
> Set the host and target character sets."), _("\
> @@ -1070,7 +1070,7 @@ To see a list of the character sets GDB supports, type `set host-charset <TAB>'.
>
> /* Recall that the first element is always "auto". */
> target_charset_name = charset_enum[0];
> - gdb_assert (strcmp (target_charset_name, "auto") == 0);
> + gdb_assert (streq (target_charset_name, "auto"));
> add_setshow_enum_cmd ("target-charset", class_support,
> charset_enum, &target_charset_name, _("\
> Set the target character set."), _("\
> @@ -1085,7 +1085,7 @@ To see a list of the character sets GDB supports, type `set target-charset'<TAB>
>
> /* Recall that the first element is always "auto". */
> target_wide_charset_name = charset_enum[0];
> - gdb_assert (strcmp (target_wide_charset_name, "auto") == 0);
> + gdb_assert (streq (target_wide_charset_name, "auto"));
> add_setshow_enum_cmd ("target-wide-charset", class_support,
> charset_enum, &target_wide_charset_name,
> _("\
> diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
> index 760889fbc720..e58553245b31 100644
> --- a/gdb/cli/cli-cmds.c
> +++ b/gdb/cli/cli-cmds.c
> @@ -497,7 +497,7 @@ pwd_command (const char *args, int from_tty)
> error (_("Error finding name of working directory: %s"),
> safe_strerror (errno));
>
> - if (strcmp (cwd.get (), current_directory) != 0)
> + if (!streq (cwd.get (), current_directory))
> gdb_printf (_("Working directory %ps\n (canonically %ps).\n"),
> styled_string (file_name_style.style (),
> current_directory),
> @@ -2193,13 +2193,12 @@ alias_command (const char *args, int from_tty)
>
> if (alias_cmd != nullptr
> && alias_cmd->prefix == prefix_cmd
> - && strcmp (alias_name, alias_cmd->name) == 0)
> + && streq (alias_name, alias_cmd->name))
> error (_("Alias already exists: %s"), alias);
>
> /* Check ALIAS differs from the found CMD. */
>
> - if (cmd->prefix == prefix_cmd
> - && strcmp (alias_name, cmd->name) == 0)
> + if (cmd->prefix == prefix_cmd && streq (alias_name, cmd->name))
> error (_("Alias %s is the name of an existing command"), alias);
> }
> }
> diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
> index 285f5f1f0c40..de40faeed591 100644
> --- a/gdb/cli/cli-decode.c
> +++ b/gdb/cli/cli-decode.c
> @@ -1528,7 +1528,7 @@ delete_cmd (const char *name, struct cmd_list_element **list,
>
> for (iter = *previous_chain_ptr; iter; iter = *previous_chain_ptr)
> {
> - if (strcmp (iter->name, name) == 0)
> + if (streq (iter->name, name))
> {
> if (iter->destroyer)
> iter->destroyer (iter, iter->context ());
> @@ -1638,8 +1638,7 @@ user_documented_alias (const cmd_list_element &alias)
> gdb_assert (alias.is_alias ());
> /* Alias is user documented if it has an allocated documentation
> that differs from the aliased command. */
> - return (alias.doc_allocated
> - && strcmp (alias.doc, alias.alias_target->doc) != 0);
> + return alias.doc_allocated && !streq (alias.doc, alias.alias_target->doc);
> }
>
> /* Print the definition of alias C using title style for alias
> @@ -1838,7 +1837,7 @@ help_cmd (const char *command, struct ui_file *stream)
> return;
> }
>
> - if (strcmp (command, "all") == 0)
> + if (streq (command, "all"))
> {
> help_all (stream);
> return;
> @@ -2502,7 +2501,7 @@ lookup_cmd_exact (const char *name,
> const char *tem = name;
> struct cmd_list_element *cmd = lookup_cmd (&tem, list, "", NULL, -1,
> ignore_help_classes);
> - if (cmd != nullptr && strcmp (name, cmd->name) != 0)
> + if (cmd != nullptr && !streq (name, cmd->name))
> cmd = nullptr;
> return cmd;
> }
> diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c
> index 3084aa111288..59c5827c0939 100644
> --- a/gdb/cli/cli-dump.c
> +++ b/gdb/cli/cli-dump.c
> @@ -193,7 +193,7 @@ dump_memory_to_file (const char *cmd, const char *mode, const char *file_format)
> read_memory (lo, buf.data (), count);
>
> /* Have everything. Open/write the data. */
> - if (file_format == NULL || strcmp (file_format, "binary") == 0)
> + if (file_format == NULL || streq (file_format, "binary"))
> dump_binary_file (filename.get (), mode, buf.data (), count);
> else
> dump_bfd_file (filename.get (), mode, file_format, lo, buf.data (), count);
> @@ -221,7 +221,7 @@ dump_value_to_file (const char *cmd, const char *mode, const char *file_format)
> error (_("Invalid expression."));
>
> /* Have everything. Open/write the data. */
> - if (file_format == NULL || strcmp (file_format, "binary") == 0)
> + if (file_format == NULL || streq (file_format, "binary"))
> dump_binary_file (filename.get (), mode, val->contents ().data (),
> val->type ()->length ());
> else
> diff --git a/gdb/cli/cli-option.c b/gdb/cli/cli-option.c
> index 24409d0e0075..ded79adaa141 100644
> --- a/gdb/cli/cli-option.c
> +++ b/gdb/cli/cli-option.c
> @@ -588,12 +588,12 @@ complete_options (completion_tracker &tracker,
> *args = skip_spaces (*args);
> completion_info.word = *args;
>
> - if (strcmp (*args, "-") == 0)
> + if (streq (*args, "-"))
> {
> complete_on_options (options_group, tracker, *args + 1,
> completion_info.word);
> }
> - else if (strcmp (*args, "--") == 0)
> + else if (streq (*args, "--"))
> {
> tracker.add_completion (make_unique_xstrdup (*args));
> }
> diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
> index e403f7e9b5e7..253e63af570f 100644
> --- a/gdb/cli/cli-script.c
> +++ b/gdb/cli/cli-script.c
> @@ -1662,7 +1662,7 @@ commands_equal (const command_line *a, const command_line *b)
> }
>
> /* Check lines are identical. */
> - if (a->line != nullptr && strcmp (a->line, b->line) != 0)
> + if (a->line != nullptr && !streq (a->line, b->line))
> return false;
>
> /* Check body_list_0. */
> diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
> index ac4fb27e725b..272e857c2a5e 100644
> --- a/gdb/cli/cli-style.c
> +++ b/gdb/cli/cli-style.c
> @@ -89,13 +89,13 @@ terminal_supports_styling ()
> /* Windows doesn't by default define $TERM, but can support styles
> regardless. */
> #ifndef _WIN32
> - if (term == nullptr || strcmp (term, "dumb") == 0)
> + if (term == nullptr || streq (term, "dumb"))
> return false;
> #else
> /* But if they do define $TERM, let us behave the same as on Posix
> platforms, for the benefit of programs which invoke GDB as their
> back-end. */
> - if (term != nullptr && strcmp (term, "dumb") == 0)
> + if (term != nullptr && streq (term, "dumb"))
> return false;
> #endif
>
> @@ -438,7 +438,7 @@ emojis_ok ()
> return false;
> if (emoji_styling == AUTO_BOOLEAN_TRUE)
> return true;
> - return strcmp (host_charset (), "UTF-8") == 0;
> + return streq (host_charset (), "UTF-8");
> }
>
> /* See cli-style.h. */
> diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c
> index 5073a4b0c4b7..48963ff8d054 100644
> --- a/gdb/coff-pe-read.c
> +++ b/gdb/coff-pe-read.c
> @@ -71,17 +71,17 @@ struct read_pe_section_data
> static int
> read_pe_section_index (const char *section_name)
> {
> - if (strcmp (section_name, ".text") == 0)
> + if (streq (section_name, ".text"))
> {
> return PE_SECTION_INDEX_TEXT;
> }
>
> - else if (strcmp (section_name, ".data") == 0)
> + else if (streq (section_name, ".data"))
> {
> return PE_SECTION_INDEX_DATA;
> }
>
> - else if (strcmp (section_name, ".bss") == 0)
> + else if (streq (section_name, ".bss"))
> {
> return PE_SECTION_INDEX_BSS;
> }
> @@ -336,15 +336,15 @@ read_pe_exported_syms (minimal_symbol_reader &reader,
> section_data[PE_SECTION_INDEX_BSS].ms_type = mst_bss;
> section_data[PE_SECTION_INDEX_BSS].section_name = ".bss";
>
> - is_pe64 = (strcmp (target, "pe-x86-64") == 0
> - || strcmp (target, "pei-x86-64") == 0
> - || strcmp (target, "pe-aarch64") == 0
> - || strcmp (target, "pei-aarch64") == 0
> - || strcmp (target, "pei-aarch64-little") == 0);
> - is_pe32 = (strcmp (target, "pe-i386") == 0
> - || strcmp (target, "pei-i386") == 0
> - || strcmp (target, "pe-arm-wince-little") == 0
> - || strcmp (target, "pei-arm-wince-little") == 0);
> + is_pe64 = (streq (target, "pe-x86-64")
> + || streq (target, "pei-x86-64")
> + || streq (target, "pe-aarch64")
> + || streq (target, "pei-aarch64")
> + || streq (target, "pei-aarch64-little"));
> + is_pe32 = (streq (target, "pe-i386")
> + || streq (target, "pei-i386")
> + || streq (target, "pe-arm-wince-little")
> + || streq (target, "pei-arm-wince-little"));
>
> /* Possibly print a debug message about DLL not having a valid format. */
> auto maybe_print_debug_msg = [&] () -> void {
> @@ -406,10 +406,10 @@ read_pe_exported_syms (minimal_symbol_reader &reader,
> || bfd_read (sname, sizeof (sname), dll) != sizeof (sname))
> return maybe_print_debug_msg ();
>
> - if ((strcmp (sname, ".edata") == 0)
> + if (streq (sname, ".edata")
> || (vaddr <= export_opthdrrva && export_opthdrrva < vaddr + vsize))
> {
> - if (strcmp (sname, ".edata") != 0)
> + if (!streq (sname, ".edata"))
> {
> if (debug_coff_pe_read)
> gdb_printf (gdb_stdlog, _("Export RVA for dll "
> @@ -636,15 +636,15 @@ pe_text_section_offset (struct bfd *abfd)
>
> target = bfd_get_target (abfd);
>
> - is_pe64 = (strcmp (target, "pe-x86-64") == 0
> - || strcmp (target, "pei-x86-64") == 0
> - || strcmp (target, "pe-aarch64") == 0
> - || strcmp (target, "pei-aarch64") == 0
> - || strcmp (target, "pei-aarch64-little") == 0);
> - is_pe32 = (strcmp (target, "pe-i386") == 0
> - || strcmp (target, "pei-i386") == 0
> - || strcmp (target, "pe-arm-wince-little") == 0
> - || strcmp (target, "pei-arm-wince-little") == 0);
> + is_pe64 = (streq (target, "pe-x86-64")
> + || streq (target, "pei-x86-64")
> + || streq (target, "pe-aarch64")
> + || streq (target, "pei-aarch64")
> + || streq (target, "pei-aarch64-little"));
> + is_pe32 = (streq (target, "pe-i386")
> + || streq (target, "pei-i386")
> + || streq (target, "pe-arm-wince-little")
> + || streq (target, "pei-arm-wince-little"));
>
> if (!is_pe32 && !is_pe64)
> {
> @@ -677,7 +677,7 @@ pe_text_section_offset (struct bfd *abfd)
> || bfd_read (sname, SCNNMLEN, abfd) != SCNNMLEN)
> return DEFAULT_COFF_PE_TEXT_SECTION_OFFSET;
> sname[SCNNMLEN] = '\0';
> - if (strcmp (sname, ".text") == 0)
> + if (streq (sname, ".text"))
> return vaddr;
> }
>
> diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c
> index bbee2f7cc560..fe48979e4f68 100644
> --- a/gdb/compile/compile-object-load.c
> +++ b/gdb/compile/compile-object-load.c
> @@ -561,7 +561,7 @@ store_regs (struct type *regs_type, CORE_ADDR regs_base)
> struct value *regval;
> CORE_ADDR inferior_addr;
>
> - if (strcmp (reg_name, COMPILE_I_SIMPLE_REGISTER_DUMMY) == 0)
> + if (streq (reg_name, COMPILE_I_SIMPLE_REGISTER_DUMMY))
> continue;
>
> if ((reg_bitpos % 8) != 0 || reg_bitsize != 0)
> @@ -694,7 +694,7 @@ compile_object_load (const compile_file_names &file_names,
> continue;
> sym->flags = BSF_GLOBAL;
> sym->section = bfd_abs_section_ptr;
> - if (strcmp (sym->name, "_GLOBAL_OFFSET_TABLE_") == 0)
> + if (streq (sym->name, "_GLOBAL_OFFSET_TABLE_"))
> {
> if (compile_debug)
> gdb_printf (gdb_stdlog,
> @@ -707,7 +707,7 @@ compile_object_load (const compile_file_names &file_names,
> sym->value = 0;
> continue;
> }
> - if (strcmp (sym->name, ".TOC.") == 0)
> + if (streq (sym->name, ".TOC."))
> {
> /* Handle the .TOC. symbol as the linker would do. Set the .TOC.
> sections value to 0x8000 (see bfd/elf64-ppc.c TOC_BASE_OFF);
> diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c
> index 2a9702ee8526..a64297bcbe1c 100644
> --- a/gdb/compile/compile.c
> +++ b/gdb/compile/compile.c
> @@ -462,7 +462,7 @@ filter_args (char **argv)
> for (destv = argv; *argv != NULL; argv++)
> {
> /* -fpreprocessed may get in commonly from ccache. */
> - if (strcmp (*argv, "-fpreprocessed") == 0)
> + if (streq (*argv, "-fpreprocessed"))
> {
> xfree (*argv);
> continue;
> @@ -767,7 +767,7 @@ compile_register_name_demangle (struct gdbarch *gdbarch,
> regname += 2;
>
> for (regnum = 0; regnum < gdbarch_num_regs (gdbarch); regnum++)
> - if (strcmp (regname, gdbarch_register_name (gdbarch, regnum)) == 0)
> + if (streq (regname, gdbarch_register_name (gdbarch, regnum)))
> return regnum;
>
> error (_("Cannot find gdbarch register \"%s\"."), regname);
> diff --git a/gdb/completer.c b/gdb/completer.c
> index 01c607c3850c..8c70a61cdec6 100644
> --- a/gdb/completer.c
> +++ b/gdb/completer.c
> @@ -90,7 +90,7 @@ class completion_tracker::completion_hash_entry
> /* Return true of the name in this hash entry is STR. */
> bool is_name_eq (const char *str) const
> {
> - return strcmp (m_name.get (), str) == 0;
> + return streq (m_name.get (), str);
> }
>
> /* Return the hash value based on the name of the entry. */
> @@ -2200,7 +2200,7 @@ signal_completer (struct cmd_list_element *ignore,
> signame = gdb_signal_to_name ((enum gdb_signal) signum);
>
> /* Ignore the unknown signal case. */
> - if (!signame || strcmp (signame, "?") == 0)
> + if (!signame || streq (signame, "?"))
> continue;
>
> if (strncasecmp (signame, word, len) == 0)
> diff --git a/gdb/corelow.c b/gdb/corelow.c
> index f6e8179d1f40..79b902118fab 100644
> --- a/gdb/corelow.c
> +++ b/gdb/corelow.c
> @@ -1345,13 +1345,13 @@ get_core_registers_cb (const char *sect_name, int supply_size, int collect_size,
> if (!variable_size_section)
> gdb_assert (supply_size == collect_size);
>
> - if (strcmp (sect_name, ".reg") == 0)
> + if (streq (sect_name, ".reg"))
> {
> required = true;
> if (human_name == NULL)
> human_name = "general-purpose";
> }
> - else if (strcmp (sect_name, ".reg2") == 0)
> + else if (streq (sect_name, ".reg2"))
> {
> if (human_name == NULL)
> human_name = "floating-point";
> diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
> index 4c2429dafc7b..a2189579cb5e 100644
> --- a/gdb/cp-abi.c
> +++ b/gdb/cp-abi.c
> @@ -284,7 +284,7 @@ set_cp_abi_as_auto_default (const char *short_name)
> /* Since we copy the current ABI into current_cp_abi instead of
> using a pointer, if auto is currently the default, we need to
> reset it. */
> - if (strcmp (current_cp_abi.shortname, "auto") == 0)
> + if (streq (current_cp_abi.shortname, "auto"))
> switch_to_cp_abi ("auto");
> }
>
> @@ -296,7 +296,7 @@ find_cp_abi (const char *short_name)
> int i;
>
> for (i = 0; i < num_cp_abis; i++)
> - if (strcmp (cp_abis[i]->shortname, short_name) == 0)
> + if (streq (cp_abis[i]->shortname, short_name))
> return cp_abis[i];
>
> return NULL;
> diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y
> index fe3c6dce8ca4..4be50599762e 100644
> --- a/gdb/cp-name-parser.y
> +++ b/gdb/cp-name-parser.y
> @@ -2092,7 +2092,7 @@ should_be_the_same (const char *one, const char *two)
> if (cptwo != nullptr)
> two = cptwo.get ();
>
> - SELF_CHECK (strcmp (one, two) == 0);
> + SELF_CHECK (streq (one, two));
> }
>
> static void
> diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
> index efdb2a2c850a..c8cd5c245aa7 100644
> --- a/gdb/cp-namespace.c
> +++ b/gdb/cp-namespace.c
> @@ -431,7 +431,7 @@ cp_lookup_symbol_via_imports (const char *scope,
> && (len == 0
> || scope[len] == ':'
> || scope[len] == '\0'))
> - : strcmp (scope, current->import_dest) == 0);
> + : streq (scope, current->import_dest));
>
> /* If the import destination is the current scope or one of its
> ancestors then it is applicable. */
> @@ -447,9 +447,10 @@ cp_lookup_symbol_via_imports (const char *scope,
> with the sought out name. If there is a match pass
> current->import_src as NAMESPACE to direct the search
> towards the imported namespace. */
> - if (current->declaration
> - && strcmp (name, current->alias
> - ? current->alias : current->declaration) == 0)
> + if (current->declaration != nullptr
> + && streq (name, (current->alias != nullptr
> + ? current->alias
> + : current->declaration)))
> sym = cp_lookup_symbol_in_namespace (current->import_src,
> current->declaration,
> block, domain, 1);
> @@ -467,13 +468,12 @@ cp_lookup_symbol_via_imports (const char *scope,
>
> /* Do not follow CURRENT if NAME matches its EXCLUDES. */
> for (excludep = current->excludes; *excludep; excludep++)
> - if (strcmp (name, *excludep) == 0)
> + if (streq (name, *excludep))
> break;
> if (*excludep)
> continue;
>
> - if (current->alias != NULL
> - && strcmp (name, current->alias) == 0)
> + if (current->alias != nullptr && streq (name, current->alias))
> /* If the import is creating an alias and the alias matches
> the sought name. Pass current->import_src as the NAME to
> direct the search towards the aliased namespace. */
> diff --git a/gdb/cp-support.c b/gdb/cp-support.c
> index 5dfb2a785055..d321986f72da 100644
> --- a/gdb/cp-support.c
> +++ b/gdb/cp-support.c
> @@ -110,9 +110,9 @@ cp_already_canonical (const char *string)
> /* These are the only two identifiers which canonicalize to other
> than themselves or an error: unsigned -> unsigned int and
> signed -> int. */
> - if (string[0] == 'u' && strcmp (&string[1], "nsigned") == 0)
> + if (string[0] == 'u' && streq (&string[1], "nsigned"))
> return 0;
> - else if (string[0] == 's' && strcmp (&string[1], "igned") == 0)
> + else if (string[0] == 's' && streq (&string[1], "igned"))
> return 0;
>
> /* Identifier character [a-zA-Z0-9_]. */
> @@ -165,7 +165,7 @@ inspect_type (struct demangle_parse_info *info,
> {
> const char *new_name = (*finder) (otype, data);
>
> - if (new_name != nullptr && strcmp (new_name, name) != 0)
> + if (new_name != nullptr && !streq (new_name, name))
> {
> ret_comp->u.s_name.s = new_name;
> ret_comp->u.s_name.len = strlen (new_name);
> @@ -200,8 +200,7 @@ inspect_type (struct demangle_parse_info *info,
>
> If the symbol is typedef and its type name is the same
> as the symbol's name, e.g., "typedef struct foo foo;". */
> - if (type->name () != nullptr
> - && strcmp (type->name (), name) == 0)
> + if (type->name () != nullptr && streq (type->name (), name))
> return 0;
>
> is_anon = (type->name () == NULL
> @@ -617,7 +616,7 @@ cp_canonicalize_string_full (const char *string,
>
> /* Finally, compare the original string with the computed
> name, returning NULL if they are the same. */
> - if (strcmp (us.get (), string) == 0)
> + if (streq (us.get (), string))
> return nullptr;
>
> return us;
> @@ -666,7 +665,7 @@ cp_canonicalize_string (const char *string)
> if (info->added_parens)
> maybe_strip_parens (us.get ());
>
> - if (strcmp (us.get (), string) == 0)
> + if (streq (us.get (), string))
> return nullptr;
>
> return us;
> @@ -1239,7 +1238,7 @@ overload_list_add_symbol (struct symbol *sym,
>
> /* skip any symbols that we've already considered. */
> for (symbol *listed_sym : *overload_list)
> - if (strcmp (sym->linkage_name (), listed_sym->linkage_name ()) == 0)
> + if (streq (sym->linkage_name (), listed_sym->linkage_name ()))
> return;
>
> /* Get the demangled name without parameters */
> @@ -1249,7 +1248,7 @@ overload_list_add_symbol (struct symbol *sym,
> return;
>
> /* skip symbols that cannot match */
> - if (strcmp (sym_name.get (), oload_name) != 0)
> + if (!streq (sym_name.get (), oload_name))
> return;
>
> overload_list->push_back (sym);
> @@ -1429,7 +1428,7 @@ add_symbol_overload_list_using (const char *func_name,
> if (current->alias != NULL || current->declaration != NULL)
> continue;
>
> - if (strcmp (the_namespace, current->import_dest) == 0)
> + if (streq (the_namespace, current->import_dest))
> {
> /* Mark this import as searched so that the recursive call
> does not search it again. */
> @@ -2206,9 +2205,8 @@ check_remove_params (const char *file, int line,
> gdb::unique_xmalloc_ptr<char> result
> = cp_remove_params_if_any (name, completion_mode);
>
> - if ((expected == NULL) != (result == NULL)
> - || (expected != NULL
> - && strcmp (result.get (), expected) != 0))
> + if ((expected == nullptr) != (result == nullptr)
> + || (expected != nullptr && !streq (result.get (), expected)))
> {
> error (_("%s:%d: make-paramless self-test failed: (completion=%d) "
> "\"%s\" -> %s, expected %s"),
> diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
> index 54b992b3b21e..349a0d6bf9e9 100644
> --- a/gdb/cp-valprint.c
> +++ b/gdb/cp-valprint.c
> @@ -66,7 +66,7 @@ cp_is_vtbl_ptr_type (struct type *type)
> {
> const char *type_name = type->name ();
>
> - return (type_name != NULL && !strcmp (type_name, vtbl_ptr_name));
> + return (type_name != NULL && streq (type_name, vtbl_ptr_name));
> }
>
> /* Return truth value for the assertion that TYPE is of the type
> @@ -247,7 +247,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
>
> /* Do not print leading '=' in case of anonymous
> unions. */
> - if (strcmp (type->field (i).name (), ""))
> + if (!streq (type->field (i).name (), ""))
> gdb_puts (" = ", stream);
> else
> {
> diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
> index 33b99bb35e62..e86f79a42eaf 100644
> --- a/gdb/csky-tdep.c
> +++ b/gdb/csky-tdep.c
> @@ -2455,14 +2455,11 @@ csky_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dw_reg)
> static int
> csky_essential_reg_check (const struct csky_supported_tdesc_register *reg)
> {
> - if ((strcmp (reg->name , "pc") == 0)
> - && (reg->num == CSKY_PC_REGNUM))
> + if (streq (reg->name, "pc") && reg->num == CSKY_PC_REGNUM)
> return CSKY_TDESC_REGS_PC_NUMBERED;
> - else if ((strcmp (reg->name , "r14") == 0)
> - && (reg->num == CSKY_SP_REGNUM))
> + else if (streq (reg->name, "r14") && reg->num == CSKY_SP_REGNUM)
> return CSKY_TDESC_REGS_SP_NUMBERED;
> - else if ((strcmp (reg->name , "r15") == 0)
> - && (reg->num == CSKY_LR_REGNUM))
> + else if (streq (reg->name, "r15") && reg->num == CSKY_LR_REGNUM)
> return CSKY_TDESC_REGS_LR_NUMBERED;
> else
> return 0;
> @@ -2474,11 +2471,9 @@ static int
> csky_fr0_fr15_reg_check (const struct csky_supported_tdesc_register *reg) {
> int i = 0;
> for (i = 0; i < 16; i++)
> - {
> - if ((strcmp (reg->name, csky_supported_fpu_regs[i].name) == 0)
> - && (csky_supported_fpu_regs[i].num == reg->num))
> - return (1 << i);
> - }
> + if (streq (reg->name, csky_supported_fpu_regs[i].name)
> + && csky_supported_fpu_regs[i].num == reg->num)
> + return 1 << i;
>
> return 0;
> };
> @@ -2489,11 +2484,9 @@ static int
> csky_fr16_fr31_reg_check (const struct csky_supported_tdesc_register *reg) {
> int i = 0;
> for (i = 0; i < 16; i++)
> - {
> - if ((strcmp (reg->name, csky_supported_fpu_regs[i + 16].name) == 0)
> - && (csky_supported_fpu_regs[i + 16].num == reg->num))
> - return (1 << i);
> - }
> + if (streq (reg->name, csky_supported_fpu_regs[i + 16].name)
> + && csky_supported_fpu_regs[i + 16].num == reg->num)
> + return (1 << i);
>
> return 0;
> };
> @@ -2504,11 +2497,9 @@ static int
> csky_vr0_vr15_reg_check (const struct csky_supported_tdesc_register *reg) {
> int i = 0;
> for (i = 0; i < 16; i++)
> - {
> - if ((strcmp (reg->name, csky_supported_fpu_regs[i + 32].name) == 0)
> - && (csky_supported_fpu_regs[i + 32].num == reg->num))
> - return (1 << i);
> - }
> + if (streq (reg->name, csky_supported_fpu_regs[i + 32].name)
> + && csky_supported_fpu_regs[i + 32].num == reg->num)
> + return (1 << i);
>
> return 0;
> };
> diff --git a/gdb/ctfread.c b/gdb/ctfread.c
> index 3de7e8d54efa..b95cdbed33c9 100644
> --- a/gdb/ctfread.c
> +++ b/gdb/ctfread.c
> @@ -543,7 +543,7 @@ read_base_type (struct ctf_context *ccp, ctf_id_t tid)
> type = alloc.new_type (TYPE_CODE_ERROR, cet.cte_bits, name);
> }
>
> - if (name != nullptr && strcmp (name, "char") == 0)
> + if (name != nullptr && streq (name, "char"))
> type->set_has_no_signedness (true);
>
> return set_tid_type (ccp, tid, type);
> @@ -1139,7 +1139,7 @@ ctf_add_var_cb (const char *name, ctf_id_t id, void *arg)
> if (kind == CTF_K_FUNCTION)
> {
> sym->set_domain (FUNCTION_DOMAIN);
> - if (name != nullptr && strcmp (name, "main") == 0)
> + if (name != nullptr && streq (name, "main"))
> set_objfile_main_name (objfile, name, language_c);
> }
> else
> @@ -1233,12 +1233,12 @@ build_ctf_archive_member (ctf_dict_t *dict, const char *name, void *arg)
> auto *iter_data = static_cast<ctf_archive_iter_data *> (arg);
> ctf_per_objfile &per_objfile = iter_data->per_objfile;
>
> - if (strcmp (name, ".ctf") != 0)
> + if (!streq (name, ".ctf"))
> ctf_import (dict, per_objfile.parent_dict.get ());
>
> objfile *objfile = per_objfile.objfile;
>
> - if (strcmp (name, ".ctf") == 0)
> + if (streq (name, ".ctf"))
> {
> name = bfd_get_filename (objfile->obfd.get ());
> ctf_debug_printf ("is parent, using name='%s'", name);
> diff --git a/gdb/d-namespace.c b/gdb/d-namespace.c
> index 575db0c08b70..34b90c0ed938 100644
> --- a/gdb/d-namespace.c
> +++ b/gdb/d-namespace.c
> @@ -378,7 +378,7 @@ d_lookup_symbol_imports (const char *scope, const char *name,
> const char **excludep;
>
> /* If the import destination is the current scope then search it. */
> - if (!current->searched && strcmp (scope, current->import_dest) == 0)
> + if (!current->searched && streq (scope, current->import_dest))
> {
> /* Mark this import as searched so that the recursive call
> does not search it again. */
> @@ -390,9 +390,10 @@ d_lookup_symbol_imports (const char *scope, const char *name,
> with the sought out name. If there is a match pass
> current->import_src as MODULE to direct the search towards
> the imported module. */
> - if (current->declaration
> - && strcmp (name, current->alias
> - ? current->alias : current->declaration) == 0)
> + if (current->declaration != nullptr
> + && streq (name, (current->alias != nullptr
> + ? current->alias
> + : current->declaration)))
> sym = d_lookup_symbol_in_module (current->import_src,
> current->declaration,
> block, domain, 1);
> @@ -409,7 +410,7 @@ d_lookup_symbol_imports (const char *scope, const char *name,
>
> /* Do not follow CURRENT if NAME matches its EXCLUDES. */
> for (excludep = current->excludes; *excludep; excludep++)
> - if (strcmp (name, *excludep) == 0)
> + if (streq (name, *excludep))
> break;
> if (*excludep)
> continue;
> @@ -417,7 +418,7 @@ d_lookup_symbol_imports (const char *scope, const char *name,
> /* If the import statement is creating an alias. */
> if (current->alias != NULL)
> {
> - if (strcmp (name, current->alias) == 0)
> + if (streq (name, current->alias))
> {
> /* If the alias matches the sought name. Pass
> current->import_src as the NAME to direct the
> diff --git a/gdb/d-valprint.c b/gdb/d-valprint.c
> index a3dd80a10ec0..6e5757192da7 100644
> --- a/gdb/d-valprint.c
> +++ b/gdb/d-valprint.c
> @@ -35,8 +35,8 @@ dynamic_array_type (struct type *type,
> {
> if (type->num_fields () == 2
> && type->field (0).type ()->code () == TYPE_CODE_INT
> - && strcmp (type->field (0).name (), "length") == 0
> - && strcmp (type->field (1).name (), "ptr") == 0
> + && streq (type->field (0).name (), "length")
> + && streq (type->field (1).name (), "ptr")
> && !val->bits_any_optimized_out (TARGET_CHAR_BIT * embedded_offset,
> TARGET_CHAR_BIT * type->length ()))
> {
> diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
> index d274c4a4fcc4..d1befa7d8c36 100644
> --- a/gdb/darwin-nat-info.c
> +++ b/gdb/darwin-nat-info.c
> @@ -123,7 +123,7 @@ get_task_from_args (const char *args)
>
> return priv->task;
> }
> - if (strcmp (args, "gdb") == 0)
> + if (streq (args, "gdb"))
> return mach_task_self ();
> task = strtoul (args, &eptr, 0);
> if (*eptr)
> @@ -799,7 +799,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
>
> if (args != NULL)
> {
> - if (strcmp (args, "saved") == 0)
> + if (streq (args, "saved"))
> {
> if (inferior_ptid == null_ptid)
> gdb_printf (_("No inferior running\n"));
> @@ -809,7 +809,7 @@ info_mach_exceptions_command (const char *args, int from_tty)
> disp_exception (&priv->exception_info);
> return;
> }
> - else if (strcmp (args, "host") == 0)
> + else if (streq (args, "host"))
> {
> /* FIXME: This needs a privileged host port! */
> kret = host_get_exception_ports
> diff --git a/gdb/dicos-tdep.c b/gdb/dicos-tdep.c
> index f6a071184d66..805889174d13 100644
> --- a/gdb/dicos-tdep.c
> +++ b/gdb/dicos-tdep.c
> @@ -80,7 +80,7 @@ dicos_load_module_p (bfd *abfd, int header_size)
> {
> if (sym->name != NULL
> && symname[0] == sym->name[0]
> - && strcmp (symname + 1, sym->name + 1) == 0)
> + && streq (symname + 1, sym->name + 1))
> {
> ret = 1;
> break;
> diff --git a/gdb/dictionary.c b/gdb/dictionary.c
> index e3ff053504ee..4c3d87823680 100644
> --- a/gdb/dictionary.c
> +++ b/gdb/dictionary.c
> @@ -791,7 +791,7 @@ language_defn::search_name_hash (const char *string0) const
> ignore the "TKB" suffix because searches for this task body
> subprogram are going to be performed using `pck__t' (the encoded
> version of the natural name `pck.t'). */
> - if (strcmp (string, "TKB") == 0)
> + if (streq (string, "TKB"))
> return hash;
> break;
> }
> diff --git a/gdb/disasm.c b/gdb/disasm.c
> index 17f281138b2c..81c466c188af 100644
> --- a/gdb/disasm.c
> +++ b/gdb/disasm.c
> @@ -1311,7 +1311,7 @@ set_disassembler_options (const char *prospective_options)
> if (valid_options->arg[i]->values == NULL)
> break;
> for (j = 0; valid_options->arg[i]->values[j] != NULL; j++)
> - if (strcmp (arg, valid_options->arg[i]->values[j]) == 0)
> + if (streq (arg, valid_options->arg[i]->values[j]))
> {
> found = true;
> break;
> @@ -1319,7 +1319,7 @@ set_disassembler_options (const char *prospective_options)
> if (found)
> break;
> }
> - else if (strcmp (opt, valid_options->name[i]) == 0)
> + else if (streq (opt, valid_options->name[i]))
> break;
> if (valid_options->name[i] == NULL)
> {
> diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
> index b42afea5a173..e69e6f754b4b 100644
> --- a/gdb/dtrace-probe.c
> +++ b/gdb/dtrace-probe.c
> @@ -846,7 +846,7 @@ dtrace_static_probe_ops::get_probes
> that sh_type == SHT_SUNW_dof. Therefore, in addition to the sh_type
> check, we need to check for sections named .sframe. */
> if (elf_section_data (sect)->this_hdr.sh_type == SHT_SUNW_dof
> - && strcmp (bfd_section_name (sect), ".sframe") != 0)
> + && !streq (bfd_section_name (sect), ".sframe"))
> {
> bfd_byte *dof;
>
> diff --git a/gdb/dwarf2/cooked-index-shard.c b/gdb/dwarf2/cooked-index-shard.c
> index 938ee8f29694..91dc9ab89455 100644
> --- a/gdb/dwarf2/cooked-index-shard.c
> +++ b/gdb/dwarf2/cooked-index-shard.c
> @@ -104,7 +104,7 @@ cooked_index_shard::add (sect_offset die_offset, enum dwarf_tag tag,
> && parent_entry.resolved == nullptr
> && m_main == nullptr
> && language_may_use_plain_main (lang)
> - && strcmp (name, "main") == 0)
> + && streq (name, "main"))
> m_main = result;
>
> return result;
> diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c
> index 9e84e5e65faf..167e39ffc89a 100644
> --- a/gdb/dwarf2/cooked-index.c
> +++ b/gdb/dwarf2/cooked-index.c
> @@ -197,7 +197,7 @@ cooked_index::get_main () const
> exception. */
> if ((entry->lang != language_ada
> && entry->lang != language_cplus)
> - || strcmp (entry->name, "main") == 0)
> + || streq (entry->name, "main"))
> {
> /* There won't be one better than this. */
> return entry;
> diff --git a/gdb/dwarf2/cooked-indexer.c b/gdb/dwarf2/cooked-indexer.c
> index 1848b92e2cab..302b4a6d6a0b 100644
> --- a/gdb/dwarf2/cooked-indexer.c
> +++ b/gdb/dwarf2/cooked-indexer.c
> @@ -554,7 +554,7 @@ cooked_indexer::index_dies (cutu_reader *reader,
>
> if (abbrev->tag == DW_TAG_namespace
> && m_language == language_cplus
> - && strcmp (name, "::") == 0)
> + && streq (name, "::"))
> {
> /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they
> generated bogus DW_TAG_namespace DIEs with a name of "::"
> diff --git a/gdb/dwarf2/cu.c b/gdb/dwarf2/cu.c
> index 7dca05b3a810..c3bfd15f14a1 100644
> --- a/gdb/dwarf2/cu.c
> +++ b/gdb/dwarf2/cu.c
> @@ -178,7 +178,7 @@ dwarf2_cu::get_builder ()
> void
> dwarf2_cu::set_producer (const char *producer)
> {
> - gdb_assert (m_producer == nullptr || strcmp (producer, m_producer) == 0);
> + gdb_assert (m_producer == nullptr || streq (producer, m_producer));
> m_producer = producer;
>
> int major, minor;
> diff --git a/gdb/dwarf2/index-write.c b/gdb/dwarf2/index-write.c
> index c4e75898f4c0..f40e9636a0b2 100644
> --- a/gdb/dwarf2/index-write.c
> +++ b/gdb/dwarf2/index-write.c
> @@ -284,8 +284,7 @@ mapped_symtab::find_slot (const char *name)
>
> for (;;)
> {
> - if (m_data[index].name == NULL
> - || strcmp (name, m_data[index].name) == 0)
> + if (m_data[index].name == nullptr || streq (name, m_data[index].name))
> return m_data[index];
> index = (index + step) & (m_data.size () - 1);
> }
> @@ -443,7 +442,7 @@ class c_str_view
>
> bool operator== (const c_str_view &other) const
> {
> - return strcmp (m_cstr, other.m_cstr) == 0;
> + return streq (m_cstr, other.m_cstr);
> }
>
> bool operator< (const c_str_view &other) const
> diff --git a/gdb/dwarf2/read-gdb-index.c b/gdb/dwarf2/read-gdb-index.c
> index ddbac684675f..48d1200270be 100644
> --- a/gdb/dwarf2/read-gdb-index.c
> +++ b/gdb/dwarf2/read-gdb-index.c
> @@ -315,7 +315,7 @@ mapped_gdb_index::build_name_components (dwarf2_per_objfile *per_objfile)
> flags |= IS_STATIC;
> if (main_name != nullptr
> && tag == DW_TAG_subprogram
> - && strcmp (name, main_name) == 0)
> + && streq (name, main_name))
> {
> flags |= IS_MAIN;
> this_lang = main_lang;
> diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
> index e41f06890d74..29c601ef2c32 100644
> --- a/gdb/dwarf2/read.c
> +++ b/gdb/dwarf2/read.c
> @@ -433,7 +433,7 @@ dwo_file_eq::operator() (const dwo_file_search &search,
> if (search.comp_dir == nullptr || dwo_file->comp_dir == nullptr)
> return search.comp_dir == dwo_file->comp_dir;
>
> - return std::strcmp (search.comp_dir, dwo_file->comp_dir) == 0;
> + return streq (search.comp_dir, dwo_file->comp_dir);
> }
>
> /* See dwarf2/read.h. */
> @@ -4114,7 +4114,7 @@ fixup_go_packaging (struct dwarf2_cu *cu)
> {
> objfile *objfile = cu->per_objfile->objfile;
>
> - if (strcmp (package_name.get (), this_package_name.get ()) != 0)
> + if (!streq (package_name.get (), this_package_name.get ()))
> complaint (_("Symtab %s has objects from two different Go "
> "packages: %s and %s"),
> (sym->symtab () != NULL
> @@ -4361,8 +4361,7 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
> /* Could be data-less variant, so keep going. */
> disr_type = nullptr;
> }
> - else if (strcmp (disr_type->field (0).name (),
> - "RUST$ENUM$DISR") != 0)
> + else if (!streq (disr_type->field (0).name (), "RUST$ENUM$DISR"))
> {
> /* Not a Rust enum. */
> return;
> @@ -5418,7 +5417,7 @@ dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
> {
> const char *physname = dwarf2_compute_name (name, die, cu, 1);
>
> - if (canon != NULL && strcmp (physname, canon) != 0)
> + if (canon != NULL && !streq (physname, canon))
> {
> /* It may not mean a bug in GDB. The compiler could also
> compute DW_AT_linkage_name incorrectly. But in such case
> @@ -7219,8 +7218,8 @@ open_and_init_dwp_file (dwarf2_per_objfile *per_objfile)
> dwp_name += ".dwp";
>
> gdb_bfd_ref_ptr dbfd (open_dwp_file (per_bfd, dwp_name.c_str ()));
> - if (dbfd == NULL
> - && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
> + if (dbfd == nullptr
> + && !streq (objfile->original_name, objfile_name (objfile)))
> {
> /* Try to find .dwp for the binary file after gdb_realpath resolving. */
> dwp_name = objfile_name (objfile);
> @@ -9947,7 +9946,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
> /* Look up member function name in fieldlist. */
> for (i = 0; i < fip->fnfieldlists.size (); i++)
> {
> - if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
> + if (streq (fip->fnfieldlists[i].name, fieldname))
> {
> flp = &fip->fnfieldlists[i];
> break;
> @@ -10183,9 +10182,9 @@ quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
>
> /* Check for __pfn and __delta members. */
> if (type->field (0).name () == NULL
> - || strcmp (type->field (0).name (), "__pfn") != 0
> + || !streq (type->field (0).name (), "__pfn")
> || type->field (1).name () == NULL
> - || strcmp (type->field (1).name (), "__delta") != 0)
> + || !streq (type->field (1).name (), "__delta"))
> return;
>
> /* Find the type of the method. */
> @@ -10271,9 +10270,9 @@ quirk_ada_thick_pointer_struct (struct die_info *die, struct dwarf2_cu *cu,
>
> /* Check for P_ARRAY and P_BOUNDS members. */
> if (type->field (0).name () == NULL
> - || strcmp (type->field (0).name (), "P_ARRAY") != 0
> + || !streq (type->field (0).name (), "P_ARRAY")
> || type->field (1).name () == NULL
> - || strcmp (type->field (1).name (), "P_BOUNDS") != 0)
> + || !streq (type->field (1).name (), "P_BOUNDS"))
> return;
>
> /* Make sure we're looking at a pointer to an array. */
> @@ -10843,7 +10842,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
> i >= TYPE_N_BASECLASSES (type);
> --i)
> {
> - if (strcmp (type->field (i).name (), "__vfp") == 0)
> + if (streq (type->field (i).name (), "__vfp"))
> {
> set_type_vptr_fieldno (type, i);
> set_type_vptr_basetype (type, type);
> @@ -12653,7 +12652,7 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
> if (follow_die_ref (die, attr, &arg_cu) == child_die)
> is_this = 1;
> }
> - else if (name && strcmp (name, "this") == 0)
> + else if (name && streq (name, "this"))
> /* Function definitions will have the argument names. */
> is_this = 1;
> else if (name == NULL && iparams == 0)
> @@ -13038,7 +13037,7 @@ dwarf2_init_integer_type (struct dwarf2_cu *cu, int bits, int unsigned_p,
> at least versions 14, 17, and 18. */
> type_allocator alloc (objfile, cu->lang ());
> if (bits == 0 && cu->producer_is_icc () && name != nullptr
> - && strcmp (name, "void") == 0)
> + && streq (name, "void"))
> type = alloc.copy_type (builtin_type (objfile)->builtin_void);
> else
> type = init_integer_type (alloc, bits, unsigned_p, name);
> @@ -13329,7 +13328,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
>
> if (type->code () == TYPE_CODE_INT
> && name != nullptr
> - && strcmp (name, "char") == 0)
> + && streq (name, "char"))
> type->set_has_no_signedness (true);
>
> maybe_set_alignment (cu, die, type);
> @@ -16375,7 +16374,7 @@ guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
> const char *die_name = dwarf2_name (die, cu);
>
> if (die_name != NULL
> - && strcmp (die_name, actual_name.get ()) != 0)
> + && !streq (die_name, actual_name.get ()))
> {
> /* Strip off the class name from the full name.
> We want the prefix. */
> @@ -16554,7 +16553,7 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
> DW_TAG_namespace DIEs with a name of "::" for the global namespace.
> Work around this problem here. */
> if (cu->lang () == language_cplus
> - && strcmp (parent_type->name (), "::") == 0)
> + && streq (parent_type->name (), "::"))
> return "";
> /* We give a name to even anonymous namespaces. */
> return parent_type->name ();
> @@ -16638,7 +16637,7 @@ typename_concat (const char *prefix, const char *suffix, int physname,
> {
> /* For D, the 'main' function could be defined in any module, but it
> should never be prefixed. */
> - if (strcmp (suffix, "D main") == 0)
> + if (streq (suffix, "D main"))
> {
> prefix = "";
> sep = "";
> @@ -18179,7 +18178,7 @@ cutu_reader::prepare_one_comp_unit (struct dwarf2_cu *cu,
> if (attr != nullptr
> && cu->producer_is_gcc ()
> && attr->as_string () != nullptr
> - && strcmp (attr->as_string (), "<artificial>") == 0)
> + && streq (attr->as_string (), "<artificial>"))
> cu->per_cu->lto_artificial = true;
>
> switch (m_top_level_die->tag)
> diff --git a/gdb/dwarf2/sect-names.h b/gdb/dwarf2/sect-names.h
> index 54e29c2a106a..a2c007f7e690 100644
> --- a/gdb/dwarf2/sect-names.h
> +++ b/gdb/dwarf2/sect-names.h
> @@ -35,8 +35,8 @@ struct dwarf2_section_names {
> /* Return true if NAME matches either of this section's names. */
> bool matches (const char *name) const
> {
> - return ((normal != nullptr && strcmp (name, normal) == 0)
> - || (compressed != nullptr && strcmp (name, compressed) == 0));
> + return ((normal != nullptr && streq (name, normal))
> + || (compressed != nullptr && streq (name, compressed)));
> }
> };
>
> diff --git a/gdb/elfread.c b/gdb/elfread.c
> index 8924bb6ba245..7e2f4fe8f3f6 100644
> --- a/gdb/elfread.c
> +++ b/gdb/elfread.c
> @@ -191,15 +191,15 @@ elf_symfile_segments (bfd *abfd)
> static void
> elf_locate_sections (asection *sectp, struct elfinfo *ei)
> {
> - if (strcmp (sectp->name, ".stab") == 0)
> + if (streq (sectp->name, ".stab"))
> {
> ei->stabsect = sectp;
> }
> - else if (strcmp (sectp->name, ".mdebug") == 0)
> + else if (streq (sectp->name, ".mdebug"))
> {
> ei->mdebugsect = sectp;
> }
> - else if (strcmp (sectp->name, ".ctf") == 0)
> + else if (streq (sectp->name, ".ctf"))
> {
> ei->ctfsect = sectp;
> }
> @@ -508,7 +508,7 @@ elf_symtab_read (minimal_symbol_reader &reader,
> {
> const char *atsign = strchr (sym->name, '@');
> bool is_at_symbol = atsign != nullptr && atsign > sym->name;
> - bool is_plt = is_at_symbol && strcmp (atsign, "@plt") == 0;
> + bool is_plt = is_at_symbol && streq (atsign, "@plt");
> int len = is_at_symbol ? atsign - sym->name : 0;
>
> if (is_at_symbol
> @@ -708,14 +708,14 @@ elf_gnu_ifunc_record_cache (const char *name, CORE_ADDR addr)
> /* Note we check the symbol's name instead of checking whether the
> symbol is in the .plt section because some systems have @plt
> symbols in the .text section. */
> - if (len > 4 && strcmp (target_name + len - 4, "@plt") == 0)
> + if (len > 4 && streq (target_name + len - 4, "@plt"))
> {
> gnu_ifunc_debug_printf ("target \"%s\" is a PLT stub, not caching",
> target_name);
> return 0;
> }
>
> - if (strcmp (target_name, "_PROCEDURE_LINKAGE_TABLE_") == 0)
> + if (streq (target_name, "_PROCEDURE_LINKAGE_TABLE_"))
> {
> gnu_ifunc_debug_printf ("target is _PROCEDURE_LINKAGE_TABLE_, "
> "not caching");
> diff --git a/gdb/eval.c b/gdb/eval.c
> index c13f3cb170d3..c47ac2614c5e 100644
> --- a/gdb/eval.c
> +++ b/gdb/eval.c
> @@ -1015,7 +1015,7 @@ add_struct_fields (struct type *type, completion_list &output,
> computed_type_name = 1;
> }
> /* Omit constructors from the completion list. */
> - if (!type_name || strcmp (type_name, name))
> + if (!type_name || !streq (type_name, name))
> output.emplace_back (concat (prefix, name, nullptr));
> }
> }
> diff --git a/gdb/event-top.c b/gdb/event-top.c
> index d27ce02e61cb..48dfb34c47fe 100644
> --- a/gdb/event-top.c
> +++ b/gdb/event-top.c
> @@ -821,7 +821,7 @@ command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl)
> Which we will get with a newer readline, but this really is the
> best we can do with older versions of readline. */
> const char *value = rl_variable_value ("enable-bracketed-paste");
> - if (value != nullptr && strcmp (value, "on") == 0
> + if (value != nullptr && streq (value, "on")
> && ((rl_readline_version >> 8) & 0xff) > 0x07)
> printf_unfiltered ("\n");
> printf_unfiltered ("quit\n");
> diff --git a/gdb/exec.c b/gdb/exec.c
> index 94051ddab232..5d297bfee563 100644
> --- a/gdb/exec.c
> +++ b/gdb/exec.c
> @@ -114,7 +114,7 @@ set_exec_file_mismatch_command (const char *ignore,
> ;
> mode = static_cast<enum exec_file_mismatch_mode>(1 + (int) mode))
> {
> - if (strcmp (exec_file_mismatch, exec_file_mismatch_names[mode]) == 0)
> + if (streq (exec_file_mismatch, exec_file_mismatch_names[mode]))
> {
> exec_file_mismatch_mode = mode;
> return;
> @@ -512,8 +512,8 @@ exec_file_attach (const char *filename, int from_tty)
> bfd *curr_bfd = current_program_space->exec_bfd ();
> bool reload_p = (((prev_bfd != nullptr) == (curr_bfd != nullptr))
> && (prev_bfd == nullptr
> - || (strcmp (bfd_get_filename (prev_bfd),
> - bfd_get_filename (curr_bfd)) == 0)));
> + || (streq (bfd_get_filename (prev_bfd),
> + bfd_get_filename (curr_bfd)))));
>
> gdb::observers::executable_changed.notify (current_program_space, reload_p);
> }
> diff --git a/gdb/extension.c b/gdb/extension.c
> index 2560ff91e893..d8ef8123ab59 100644
> --- a/gdb/extension.c
> +++ b/gdb/extension.c
> @@ -123,7 +123,7 @@ has_extension (const char *file, const char *extension)
> int extension_len = strlen (extension);
>
> return (file_len > extension_len
> - && strcmp (&file[file_len - extension_len], extension) == 0);
> + && streq (&file[file_len - extension_len], extension));
> }
>
> /* Return the extension language of FILE, or NULL if
> diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
> index f93090669361..123d9995c39c 100644
> --- a/gdb/f-typeprint.c
> +++ b/gdb/f-typeprint.c
> @@ -378,7 +378,7 @@ f_language::f_type_print_base (struct type *type, struct ui_file *stream,
> through as TYPE_CODE_INT since dbxstclass.h is so
> C-oriented, we must change these to "character" from "char". */
>
> - if (strcmp (type->name (), "char") == 0)
> + if (streq (type->name (), "char"))
> gdb_printf (stream, "%*scharacter", level, "");
> else
> goto default_case;
> diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
> index c66e90c04029..13921c03a48d 100644
> --- a/gdb/f-valprint.c
> +++ b/gdb/f-valprint.c
> @@ -634,8 +634,9 @@ info_common_command_for_block (const struct block *block, const char *comname,
>
> gdb_assert (sym->loc_class () == LOC_COMMON_BLOCK);
>
> - if (comname && (!sym->linkage_name ()
> - || strcmp (comname, sym->linkage_name ()) != 0))
> + if (comname != nullptr
> + && (sym->linkage_name () == nullptr
> + || !streq (comname, sym->linkage_name ())))
> continue;
>
> if (*any_printed)
> diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
> index 80116553d9be..dc486139861a 100644
> --- a/gdb/fbsd-nat.c
> +++ b/gdb/fbsd-nat.c
> @@ -897,7 +897,7 @@ fbsd_nat_target::thread_name (struct thread_info *thr)
> return nullptr;
> if (ptrace (PT_LWPINFO, lwp, (caddr_t) &pl, sizeof pl) == -1)
> return nullptr;
> - if (strcmp (kp.ki_comm, pl.pl_tdname) == 0)
> + if (streq (kp.ki_comm, pl.pl_tdname))
> return NULL;
> xsnprintf (buf, sizeof buf, "%s", pl.pl_tdname);
> return buf;
> diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
> index e3c78aaff5dd..4bbe0c120e6a 100644
> --- a/gdb/fbsd-tdep.c
> +++ b/gdb/fbsd-tdep.c
> @@ -573,7 +573,7 @@ fbsd_core_thread_name (struct gdbarch *gdbarch, bfd &cbfd,
> as its thread name instead of an empty name if a name
> has not been set explicitly. Return a NULL name in
> that case. */
> - if (strcmp (buf, elf_tdata (&cbfd)->core->program) != 0)
> + if (!streq (buf, elf_tdata (&cbfd)->core->program))
> return buf;
> }
> }
> diff --git a/gdb/frame.c b/gdb/frame.c
> index 746d7d06ec1f..70621cf6e206 100644
> --- a/gdb/frame.c
> +++ b/gdb/frame.c
> @@ -2439,7 +2439,7 @@ get_prev_frame_always_1 (const frame_info_ptr &this_frame)
> morestack_msym = lookup_minimal_symbol_by_pc (this_pc_in_block).minsym;
> if (morestack_msym)
> morestack_name = morestack_msym->linkage_name ();
> - if (!morestack_name || strcmp (morestack_name, "__morestack") != 0)
> + if (!morestack_name || !streq (morestack_name, "__morestack"))
> {
> frame_debug_printf (" -> nullptr // this frame ID is inner");
> this_frame->stop_reason = UNWIND_INNER_ID;
> diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
> index 94d3db68ae9c..33a270497f3c 100644
> --- a/gdb/frv-tdep.c
> +++ b/gdb/frv-tdep.c
> @@ -1071,9 +1071,9 @@ frv_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
> call_dest = pc + 4 * displ;
> bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
>
> - if (s.minsym != NULL
> - && s.minsym->linkage_name () != NULL
> - && strcmp (s.minsym->linkage_name (), "__main") == 0)
> + if (s.minsym != nullptr
> + && s.minsym->linkage_name () != nullptr
> + && streq (s.minsym->linkage_name (), "__main"))
> {
> pc += 4;
> return pc;
> diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c
> index 5a1f3315c7f2..ba0a0882a0ad 100644
> --- a/gdb/ft32-tdep.c
> +++ b/gdb/ft32-tdep.c
> @@ -377,7 +377,7 @@ ft32_address_class_name_to_type_flags (struct gdbarch *gdbarch,
> const char* name,
> type_instance_flags *type_flags_ptr)
> {
> - if (strcmp (name, "flash") == 0)
> + if (streq (name, "flash"))
> {
> *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
> return true;
> diff --git a/gdb/gcore-elf.c b/gdb/gcore-elf.c
> index 2157fea18dc3..f7c9003a0df8 100644
> --- a/gdb/gcore-elf.c
> +++ b/gdb/gcore-elf.c
> @@ -85,7 +85,7 @@ gcore_elf_collect_regset_section_cb (const char *sect_name,
> collect_size);
>
> /* PRSTATUS still needs to be treated specially. */
> - if (strcmp (sect_name, ".reg") == 0)
> + if (streq (sect_name, ".reg"))
> data->note_data->reset (elfcore_write_prstatus
> (data->obfd, data->note_data->release (),
> data->note_size, data->lwp,
> diff --git a/gdb/gcore.c b/gdb/gcore.c
> index 2bf300c0d29f..98883a0fd4c1 100644
> --- a/gdb/gcore.c
> +++ b/gdb/gcore.c
> @@ -336,7 +336,7 @@ derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top)
> for (sec = abfd->sections; sec; sec = sec->next)
> {
> if (bfd_section_flags (sec) & SEC_DATA
> - || strcmp (".bss", bfd_section_name (sec)) == 0)
> + || streq (".bss", bfd_section_name (sec)))
> {
> sec_vaddr = bfd_section_vma (sec);
> sec_size = bfd_section_size (sec);
> diff --git a/gdb/gdb-demangle.c b/gdb/gdb-demangle.c
> index 1f1d672a8379..d02b80ab621d 100644
> --- a/gdb/gdb-demangle.c
> +++ b/gdb/gdb-demangle.c
> @@ -118,8 +118,7 @@ set_demangling_command (const char *ignore,
> dem->demangling_style != unknown_demangling;
> dem++)
> {
> - if (strcmp (current_demangling_style_string,
> - dem->demangling_style_name) == 0)
> + if (streq (current_demangling_style_string, dem->demangling_style_name))
> {
> current_demangling_style = dem->demangling_style;
> current_demangling_style_string = demangling_style_names[i];
> @@ -227,7 +226,7 @@ INIT_GDB_FILE (gdb_demangle)
> = xstrdup (libiberty_demanglers[i].demangling_style_name);
>
> if (current_demangling_style_string == NULL
> - && strcmp (DEFAULT_DEMANGLING_STYLE, demangling_style_names[i]) == 0)
> + && streq (DEFAULT_DEMANGLING_STYLE, demangling_style_names[i]))
> current_demangling_style_string = demangling_style_names[i];
> }
>
> diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
> index bada133da801..342957273cd7 100644
> --- a/gdb/gdb_bfd.c
> +++ b/gdb/gdb_bfd.c
> @@ -230,7 +230,7 @@ struct bfd_cache_eq
> && gdata->size == s.size
> && gdata->inode == s.inode
> && gdata->device_id == s.device_id
> - && strcmp (bfd_get_filename (abfd), s.filename) == 0);
> + && streq (bfd_get_filename (abfd), s.filename));
> }
> };
>
> diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
> index 5e07e290f67e..0ad06f56c30d 100644
> --- a/gdb/gdbtypes.c
> +++ b/gdb/gdbtypes.c
> @@ -545,9 +545,9 @@ address_space_name_to_type_instance_flags (struct gdbarch *gdbarch,
> type_instance_flags type_flags;
>
> /* Check for known address space delimiters. */
> - if (!strcmp (space_identifier, "code"))
> + if (streq (space_identifier, "code"))
> return TYPE_INSTANCE_FLAG_CODE_SPACE;
> - else if (!strcmp (space_identifier, "data"))
> + else if (streq (space_identifier, "data"))
> return TYPE_INSTANCE_FLAG_DATA_SPACE;
> else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
> && gdbarch_address_class_name_to_type_flags (gdbarch,
> @@ -3616,8 +3616,9 @@ int
> class_types_same_p (const struct type *a, const struct type *b)
> {
> return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
> - || (a->name () && b->name ()
> - && !strcmp (a->name (), b->name ())));
> + || (a->name () != nullptr
> + && b->name () != nullptr
> + && streq (a->name (), b->name ())));
> }
>
> /* If BASE is an ancestor of DCLASS return the distance between them.
> @@ -4008,8 +4009,9 @@ types_equal (struct type *a, struct type *b)
> stubs. The types won't point to the same address, but they
> really are the same. */
>
> - if (a->name () && b->name ()
> - && strcmp (a->name (), b->name ()) == 0)
> + if (a->name () != nullptr
> + && b->name () != nullptr
> + && streq (a->name (), b->name ()))
> return true;
>
> /* Two function types are equal if their argument and return types
> @@ -4070,7 +4072,7 @@ compare_maybe_null_strings (const char *s, const char *t)
> {
> if (s == NULL || t == NULL)
> return s == t;
> - return strcmp (s, t) == 0;
> + return streq (s, t);
> }
>
> /* A helper function for check_types_worklist that checks two types for
> diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
> index e5706b75b1cd..123f237b7217 100644
> --- a/gdb/gnu-nat.c
> +++ b/gdb/gnu-nat.c
> @@ -2708,9 +2708,9 @@ static int
> _parse_bool_arg (const char *args, const char *t_val, const char *f_val,
> const char *cmd_prefix)
> {
> - if (!args || strcmp (args, t_val) == 0)
> + if (!args || streq (args, t_val))
> return 1;
> - else if (strcmp (args, f_val) == 0)
> + else if (streq (args, f_val))
> return 0;
> else
> error (_("Illegal argument for \"%s\" command, "
> @@ -2925,11 +2925,11 @@ set_sig_thread_cmd (const char *args, int from_tty)
> {
> struct inf *inf = cur_inf ();
>
> - if (!args || (!c_isdigit (*args) && strcmp (args, "none") != 0))
> + if (!args || (!c_isdigit (*args) && !streq (args, "none")))
> error (_("Illegal argument to \"set signal-thread\" command.\n"
> "Should be a thread ID, or \"none\"."));
>
> - if (strcmp (args, "none") == 0)
> + if (streq (args, "none"))
> inf->signal_thread = 0;
> else
> {
> diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c
> index e5dcbd69c0bf..4e98f7d06fff 100644
> --- a/gdb/gnu-v2-abi.c
> +++ b/gdb/gnu-v2-abi.c
> @@ -316,12 +316,9 @@ vb_match (struct type *type, int index, struct type *basetype)
> if (fieldtype->target_type () == basetype)
> return 1;
>
> - if (basetype->name () != NULL
> - && fieldtype->target_type ()->name () != NULL
> - && strcmp (basetype->name (),
> - fieldtype->target_type ()->name ()) == 0)
> - return 1;
> - return 0;
> + return (basetype->name () != nullptr
> + && fieldtype->target_type ()->name () != nullptr
> + && streq (basetype->name (), fieldtype->target_type ()->name ()));
> }
>
> /* Compute the offset of the baseclass which is the INDEXth baseclass
> diff --git a/gdb/go-lang.c b/gdb/go-lang.c
> index 60033c8eca7d..3b388c961fab 100644
> --- a/gdb/go-lang.c
> +++ b/gdb/go-lang.c
> @@ -79,9 +79,9 @@ gccgo_string_p (struct type *type)
> type1 = check_typedef (type1);
>
> if (type0->code () == TYPE_CODE_PTR
> - && strcmp (type->field (0).name (), "__data") == 0
> + && streq (type->field (0).name (), "__data")
> && type1->code () == TYPE_CODE_INT
> - && strcmp (type->field (1).name (), "__length") == 0)
> + && streq (type->field (1).name (), "__length"))
> {
> struct type *target_type = type0->target_type ();
>
> @@ -89,7 +89,7 @@ gccgo_string_p (struct type *type)
>
> if (target_type->code () == TYPE_CODE_INT
> && target_type->length () == 1
> - && strcmp (target_type->name (), "uint8") == 0)
> + && streq (target_type->name (), "uint8"))
> return 1;
> }
> }
> @@ -103,12 +103,9 @@ gccgo_string_p (struct type *type)
> static int
> sixg_string_p (struct type *type)
> {
> - if (type->num_fields () == 2
> - && type->name () != NULL
> - && strcmp (type->name (), "string") == 0)
> - return 1;
> -
> - return 0;
> + return (type->num_fields () == 2
> + && type->name () != nullptr
> + && streq (type->name (), "string"));
> }
>
> /* Classify the kind of Go object that TYPE is.
> @@ -201,7 +198,7 @@ unpack_mangled_go_symbol (const char *mangled_name,
> *method_type_is_pointerp = 0;
>
> /* main.init is mangled specially. */
> - if (strcmp (mangled_name, "__go_init_main") == 0)
> + if (streq (mangled_name, "__go_init_main"))
> {
> gdb::unique_xmalloc_ptr<char> package
> = make_unique_xstrdup ("main");
> @@ -212,7 +209,7 @@ unpack_mangled_go_symbol (const char *mangled_name,
> }
>
> /* main.main is mangled specially (missing prefix). */
> - if (strcmp (mangled_name, "main.main") == 0)
> + if (streq (mangled_name, "main.main"))
> {
> gdb::unique_xmalloc_ptr<char> package
> = make_unique_xstrdup ("main");
> diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
> index d0d0c6f2a74b..b3ea5c1fd5ce 100644
> --- a/gdb/go32-nat.c
> +++ b/gdb/go32-nat.c
> @@ -1141,9 +1141,9 @@ go32_sysinfo (const char *arg, int from_tty)
> char cpu_string[80];
> char cpu_brand[20];
> unsigned brand_idx;
> - int intel_p = strcmp (cpuid_vendor, "GenuineIntel") == 0;
> - int amd_p = strcmp (cpuid_vendor, "AuthenticAMD") == 0;
> - int hygon_p = strcmp (cpuid_vendor, "HygonGenuine") == 0;
> + int intel_p = streq (cpuid_vendor, "GenuineIntel");
> + int amd_p = streq (cpuid_vendor, "AuthenticAMD");
> + int hygon_p = streq (cpuid_vendor, "HygonGenuine");
> unsigned cpu_family, cpu_model;
>
> #if 0
> diff --git a/gdb/guile/scm-lazy-string.c b/gdb/guile/scm-lazy-string.c
> index 0c9dd7c967e9..a13567eaa32b 100644
> --- a/gdb/guile/scm-lazy-string.c
> +++ b/gdb/guile/scm-lazy-string.c
> @@ -119,7 +119,7 @@ lsscm_make_lazy_string_smob (CORE_ADDR address, int length,
>
> ls_smob->address = address;
> ls_smob->length = length;
> - if (encoding == NULL || strcmp (encoding, "") == 0)
> + if (encoding == NULL || streq (encoding, ""))
> ls_smob->encoding = NULL;
> else
> ls_smob->encoding = xstrdup (encoding);
> diff --git a/gdb/guile/scm-param.c b/gdb/guile/scm-param.c
> index b31efbf529f2..ee7432178282 100644
> --- a/gdb/guile/scm-param.c
> +++ b/gdb/guile/scm-param.c
> @@ -795,7 +795,7 @@ pascm_set_param_value_x (param_smob *p_smob,
> gdbscm_throw (exception);
> for (i = 0; enumeration[i]; ++i)
> {
> - if (strcmp (enumeration[i], str.get ()) == 0)
> + if (streq (enumeration[i], str.get ()))
> break;
> }
> if (enumeration[i] == nullptr)
> diff --git a/gdb/hppa-bsd-tdep.c b/gdb/hppa-bsd-tdep.c
> index c0e984ab0349..c24e246cecc7 100644
> --- a/gdb/hppa-bsd-tdep.c
> +++ b/gdb/hppa-bsd-tdep.c
> @@ -56,7 +56,7 @@ hppabsd_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
> {
> for (struct obj_section &sec : faddr_sec->objfile->sections ())
> {
> - if (strcmp (sec.the_bfd_section->name, ".dynamic") == 0)
> + if (streq (sec.the_bfd_section->name, ".dynamic"))
> {
> CORE_ADDR addr = sec.addr ();
> CORE_ADDR endaddr = sec.endaddr ();
> diff --git a/gdb/hppa-linux-tdep.c b/gdb/hppa-linux-tdep.c
> index e99e39578759..2141841d1c80 100644
> --- a/gdb/hppa-linux-tdep.c
> +++ b/gdb/hppa-linux-tdep.c
> @@ -363,7 +363,7 @@ hppa_linux_find_global_pointer (struct gdbarch *gdbarch,
> {
> for (obj_section &osect : faddr_sect->objfile->sections ())
> {
> - if (strcmp (osect.the_bfd_section->name, ".dynamic") == 0)
> + if (streq (osect.the_bfd_section->name, ".dynamic"))
> {
> CORE_ADDR addr, endaddr;
>
> diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
> index 140e31422582..a2df05b4d293 100644
> --- a/gdb/hppa-tdep.c
> +++ b/gdb/hppa-tdep.c
> @@ -369,8 +369,8 @@ read_unwind_info (struct objfile *objfile)
> unwind_sec;
> unwind_sec = unwind_sec->next)
> {
> - if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
> - || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
> + if (streq (unwind_sec->name, "$UNWIND_START$")
> + || streq (unwind_sec->name, ".PARISC.unwind"))
> {
> unwind_size = bfd_section_size (unwind_sec);
> unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
> @@ -411,8 +411,8 @@ read_unwind_info (struct objfile *objfile)
> unwind_sec;
> unwind_sec = unwind_sec->next)
> {
> - if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
> - || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
> + if (streq (unwind_sec->name, "$UNWIND_START$")
> + || streq (unwind_sec->name, ".PARISC.unwind"))
> {
> unwind_size = bfd_section_size (unwind_sec);
> unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
> @@ -925,7 +925,7 @@ hppa64_convert_code_addr_to_fptr (struct gdbarch *gdbarch, CORE_ADDR code)
>
> for (obj_section &opd : sec->objfile->sections ())
> {
> - if (strcmp (opd.the_bfd_section->name, ".opd") == 0)
> + if (streq (opd.the_bfd_section->name, ".opd"))
> {
> for (CORE_ADDR addr = opd.addr ();
> addr < opd.endaddr ();
> diff --git a/gdb/i386-dicos-tdep.c b/gdb/i386-dicos-tdep.c
> index a61a376796a6..e5defef92c5b 100644
> --- a/gdb/i386-dicos-tdep.c
> +++ b/gdb/i386-dicos-tdep.c
> @@ -33,8 +33,7 @@ i386_dicos_osabi_sniffer (bfd *abfd)
> const char *target_name = bfd_get_target (abfd);
>
> /* On x86-DICOS, the Load Module's "header" section is 36 bytes. */
> - if (strcmp (target_name, "elf32-i386") == 0
> - && dicos_load_module_p (abfd, 36))
> + if (streq (target_name, "elf32-i386") && dicos_load_module_p (abfd, 36))
> return GDB_OSABI_DICOS;
>
> return GDB_OSABI_UNKNOWN;
> diff --git a/gdb/i386-gnu-tdep.c b/gdb/i386-gnu-tdep.c
> index 5774aaf8dfa2..c351debff07a 100644
> --- a/gdb/i386-gnu-tdep.c
> +++ b/gdb/i386-gnu-tdep.c
> @@ -84,7 +84,7 @@ i386_gnu_sigtramp_p (const frame_info_ptr &this_frame)
> find_pc_partial_function (pc, &name, NULL, NULL);
>
> /* If we have a NAME, we can check for the trampoline function */
> - if (name != NULL && strcmp (name, "trampoline") == 0)
> + if (name != NULL && streq (name, "trampoline"))
> return 1;
>
> return i386_gnu_sigtramp_start (this_frame) != 0;
> diff --git a/gdb/i386-go32-tdep.c b/gdb/i386-go32-tdep.c
> index 13c4b51c3f9e..7a6294d4133e 100644
> --- a/gdb/i386-go32-tdep.c
> +++ b/gdb/i386-go32-tdep.c
> @@ -46,8 +46,8 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
> static enum gdb_osabi
> i386_coff_osabi_sniffer (bfd *abfd)
> {
> - if (strcmp (bfd_get_target (abfd), "coff-go32-exe") == 0
> - || strcmp (bfd_get_target (abfd), "coff-go32") == 0)
> + if (streq (bfd_get_target (abfd), "coff-go32-exe")
> + || streq (bfd_get_target (abfd), "coff-go32"))
> return GDB_OSABI_GO32;
>
> return GDB_OSABI_UNKNOWN;
> diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
> index dae4a7b7eeba..23aeccac9fc6 100644
> --- a/gdb/i386-linux-tdep.c
> +++ b/gdb/i386-linux-tdep.c
> @@ -246,8 +246,7 @@ i386_linux_sigtramp_p (const frame_info_ptr &this_frame)
> return (i386_linux_sigtramp_start (this_frame) != 0
> || i386_linux_rt_sigtramp_start (this_frame) != 0);
>
> - return (strcmp ("__restore", name) == 0
> - || strcmp ("__restore_rt", name) == 0);
> + return streq ("__restore", name) || streq ("__restore_rt", name);
> }
>
> /* Return true if the PC of THIS_FRAME is in a signal trampoline which
> diff --git a/gdb/i386-obsd-tdep.c b/gdb/i386-obsd-tdep.c
> index a361ab1ae6a9..0fc2fab3ed84 100644
> --- a/gdb/i386-obsd-tdep.c
> +++ b/gdb/i386-obsd-tdep.c
> @@ -384,10 +384,11 @@ i386obsd_trapframe_sniffer (const struct frame_unwind *self,
> return 0;
>
> find_pc_partial_function (get_frame_pc (this_frame), &name, NULL, NULL);
> - return (name && (strcmp (name, "calltrap") == 0
> - || strcmp (name, "syscall1") == 0
> - || startswith (name, "Xintr")
> - || startswith (name, "Xsoft")));
> + return (name != nullptr
> + && (streq (name, "calltrap")
> + || streq (name, "syscall1")
> + || startswith (name, "Xintr")
> + || startswith (name, "Xsoft")));
> }
>
> static const struct frame_unwind_legacy i386obsd_trapframe_unwind (
> diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
> index 9cee112facd8..b9013e183c29 100644
> --- a/gdb/i386-tdep.c
> +++ b/gdb/i386-tdep.c
> @@ -1869,9 +1869,9 @@ i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
> call_dest = pc + 5 + extract_signed_integer (buf, 4, byte_order);
> call_dest = call_dest & 0xffffffffU;
> bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
> - if (s.minsym != NULL
> - && s.minsym->linkage_name () != NULL
> - && strcmp (s.minsym->linkage_name (), "__main") == 0)
> + if (s.minsym != nullptr
> + && s.minsym->linkage_name () != nullptr
> + && streq (s.minsym->linkage_name (), "__main"))
> pc += 5;
> }
> }
> @@ -3772,7 +3772,7 @@ i386_sigtramp_p (const frame_info_ptr &this_frame)
> const char *name;
>
> find_pc_partial_function (pc, &name, NULL, NULL);
> - return (name && strcmp ("_sigtramp", name) == 0);
> + return (name && streq ("_sigtramp", name));
> }
> \f
>
> @@ -3809,8 +3809,9 @@ i386_svr4_sigtramp_p (const frame_info_ptr &this_frame)
>
> /* The origin of these symbols is currently unknown. */
> find_pc_partial_function (pc, &name, NULL, NULL);
> - return (name && (strcmp ("_sigreturn", name) == 0
> - || strcmp ("sigvechandler", name) == 0));
> + return (name != nullptr
> + && (streq ("_sigreturn", name)
> + || streq ("sigvechandler", name)));
> }
>
> /* Assuming THIS_FRAME is for a SVR4 sigtramp routine, return the
> @@ -8450,19 +8451,19 @@ static const struct floatformat **
> i386_floatformat_for_type (struct gdbarch *gdbarch,
> const char *name, int len)
> {
> - if (len == 128 && name)
> - if (strcmp (name, "__float128") == 0
> - || strcmp (name, "_Float128") == 0
> - || strcmp (name, "complex _Float128") == 0
> - || strcmp (name, "complex(kind=16)") == 0
> - || strcmp (name, "COMPLEX(16)") == 0
> - || strcmp (name, "complex*32") == 0
> - || strcmp (name, "COMPLEX*32") == 0
> - || strcmp (name, "quad complex") == 0
> - || strcmp (name, "real(kind=16)") == 0
> - || strcmp (name, "real*16") == 0
> - || strcmp (name, "REAL*16") == 0
> - || strcmp (name, "REAL(16)") == 0)
> + if (len == 128 && name != nullptr)
> + if (streq (name, "__float128")
> + || streq (name, "_Float128")
> + || streq (name, "complex _Float128")
> + || streq (name, "complex(kind=16)")
> + || streq (name, "COMPLEX(16)")
> + || streq (name, "complex*32")
> + || streq (name, "COMPLEX*32")
> + || streq (name, "quad complex")
> + || streq (name, "real(kind=16)")
> + || streq (name, "real*16")
> + || streq (name, "REAL*16")
> + || streq (name, "REAL(16)"))
> return floatformats_ieee_quad;
>
> return default_floatformat_for_type (gdbarch, name, len);
> diff --git a/gdb/i386-windows-tdep.c b/gdb/i386-windows-tdep.c
> index daaa556d171b..b66483c4b960 100644
> --- a/gdb/i386-windows-tdep.c
> +++ b/gdb/i386-windows-tdep.c
> @@ -210,7 +210,7 @@ i386_cygwin_core_osabi_sniffer (bfd *abfd)
>
> /* Cygwin uses elf core dumps. Do not claim all ELF executables,
> check whether there is a .reg section of proper size. */
> - if (strcmp (target_name, "elf32-i386") == 0)
> + if (streq (target_name, "elf32-i386"))
> {
> asection *section = bfd_get_section_by_name (abfd, ".reg");
> if (section != nullptr
> diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
> index 2b918b87bbc5..43f2f4e10bca 100644
> --- a/gdb/ia64-tdep.c
> +++ b/gdb/ia64-tdep.c
> @@ -3433,7 +3433,7 @@ ia64_find_global_pointer_from_dynamic_section (struct gdbarch *gdbarch,
> {
> for (obj_section &osect : faddr_sect->objfile->sections ())
> {
> - if (strcmp (osect.the_bfd_section->name, ".dynamic") == 0)
> + if (streq (osect.the_bfd_section->name, ".dynamic"))
> {
> CORE_ADDR addr = osect.addr ();
> CORE_ADDR endaddr = osect.endaddr ();
> @@ -3507,14 +3507,14 @@ find_extant_func_descr (struct gdbarch *gdbarch, CORE_ADDR faddr)
>
> /* Return early if faddr is already a function descriptor. */
> faddr_sect = find_pc_section (faddr);
> - if (faddr_sect && strcmp (faddr_sect->the_bfd_section->name, ".opd") == 0)
> + if (faddr_sect && streq (faddr_sect->the_bfd_section->name, ".opd"))
> return faddr;
>
> if (faddr_sect != NULL)
> {
> for (obj_section &osect : faddr_sect->objfile->sections ())
> {
> - if (strcmp (osect.the_bfd_section->name, ".opd") == 0)
> + if (streq (osect.the_bfd_section->name, ".opd"))
> {
> CORE_ADDR addr = osect.addr ();
> CORE_ADDR endaddr = osect.endaddr ();
> @@ -3593,7 +3593,7 @@ ia64_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr,
> s = find_pc_section (addr);
>
> /* check if ADDR points to a function descriptor. */
> - if (s && strcmp (s->the_bfd_section->name, ".opd") == 0)
> + if (s && streq (s->the_bfd_section->name, ".opd"))
> return read_memory_unsigned_integer (addr, 8, byte_order);
>
> /* Normally, functions live inside a section that is executable.
> diff --git a/gdb/infrun.c b/gdb/infrun.c
> index c05c2b0f42f3..592f9197cd5e 100644
> --- a/gdb/infrun.c
> +++ b/gdb/infrun.c
> @@ -10463,9 +10463,9 @@ set_exec_direction_func (const char *args, int from_tty,
> {
> if (target_can_execute_reverse ())
> {
> - if (!strcmp (exec_direction, exec_forward))
> + if (streq (exec_direction, exec_forward))
> execution_direction = EXEC_FORWARD;
> - else if (!strcmp (exec_direction, exec_reverse))
> + else if (streq (exec_direction, exec_reverse))
> execution_direction = EXEC_REVERSE;
> }
> else
> diff --git a/gdb/interps.c b/gdb/interps.c
> index 23663cb5ef53..0b05a3f277d2 100644
> --- a/gdb/interps.c
> +++ b/gdb/interps.c
> @@ -85,7 +85,7 @@ interp_factory_register (const char *name, interp_factory_func func)
> {
> /* Assert that no factory for NAME is already registered. */
> for (const interp_factory &f : interpreter_factories)
> - if (strcmp (f.name, name) == 0)
> + if (streq (f.name, name))
> {
> internal_error (_("interpreter factory already registered: \"%s\"\n"),
> name);
> @@ -157,7 +157,7 @@ static struct interp *
> interp_lookup_existing (struct ui *ui, const char *name)
> {
> for (interp &interp : ui->interp_list)
> - if (strcmp (interp.name (), name) == 0)
> + if (streq (interp.name (), name))
> return &interp;
>
> return nullptr;
> @@ -177,7 +177,7 @@ interp_lookup (struct ui *ui, const char *name)
> return interp;
>
> for (const interp_factory &factory : interpreter_factories)
> - if (strcmp (factory.name, name) == 0)
> + if (streq (factory.name, name))
> {
> interp = factory.func (factory.name);
> interp_add (ui, interp);
> @@ -224,7 +224,7 @@ current_interp_named_p (const char *interp_name)
> interp *interp = current_ui->current_interpreter;
>
> if (interp != NULL)
> - return (strcmp (interp->name (), interp_name) == 0);
> + return (streq (interp->name (), interp_name));
>
> return 0;
> }
> diff --git a/gdb/language.c b/gdb/language.c
> index ac718b0bf07b..439ef293622d 100644
> --- a/gdb/language.c
> +++ b/gdb/language.c
> @@ -191,8 +191,7 @@ set_language (const char *language)
> enum language flang = language_unknown;
>
> /* "local" is a synonym of "auto". */
> - if (strcmp (language, "auto") == 0
> - || strcmp (language, "local") == 0)
> + if (streq (language, "auto") || streq (language, "local"))
> {
> /* Enter auto mode. Set to the current frame's language, if
> known, or fallback to the initial language. */
> @@ -221,7 +220,7 @@ set_language (const char *language)
> /* Search the list of languages for a match. */
> for (const auto &lang : language_defn::languages)
> {
> - if (strcmp (lang->name (), language) != 0)
> + if (!streq (lang->name (), language))
> continue;
>
> /* Found it! Go into manual mode, and use this language. */
> @@ -293,22 +292,22 @@ static void
> set_range_command (const char *ignore,
> int from_tty, struct cmd_list_element *c)
> {
> - if (strcmp (range, "on") == 0)
> + if (streq (range, "on"))
> {
> range_check = range_check_on;
> range_mode = range_mode_manual;
> }
> - else if (strcmp (range, "warn") == 0)
> + else if (streq (range, "warn"))
> {
> range_check = range_check_warn;
> range_mode = range_mode_manual;
> }
> - else if (strcmp (range, "off") == 0)
> + else if (streq (range, "off"))
> {
> range_check = range_check_off;
> range_mode = range_mode_manual;
> }
> - else if (strcmp (range, "auto") == 0)
> + else if (streq (range, "auto"))
> {
> range_mode = range_mode_auto;
> set_range_case ();
> @@ -367,17 +366,17 @@ show_case_command (struct ui_file *file, int from_tty,
> static void
> set_case_command (const char *ignore, int from_tty, struct cmd_list_element *c)
> {
> - if (strcmp (case_sensitive, "on") == 0)
> + if (streq (case_sensitive, "on"))
> {
> case_sensitivity = case_sensitive_on;
> case_mode = case_mode_manual;
> }
> - else if (strcmp (case_sensitive, "off") == 0)
> + else if (streq (case_sensitive, "off"))
> {
> case_sensitivity = case_sensitive_off;
> case_mode = case_mode_manual;
> }
> - else if (strcmp (case_sensitive, "auto") == 0)
> + else if (streq (case_sensitive, "auto"))
> {
> case_mode = case_mode_auto;
> set_range_case ();
> @@ -478,7 +477,7 @@ enum language
> language_enum (const char *str)
> {
> for (const auto &lang : language_defn::languages)
> - if (strcmp (lang->name (), str) == 0)
> + if (streq (lang->name (), str))
> return lang->la_language;
>
> return language_unknown;
> @@ -977,7 +976,7 @@ language_arch_info::lookup_primitive_type_and_symbol (const char *name)
> {
> for (struct type_and_symbol &tas : primitive_types_and_symbols)
> {
> - if (strcmp (tas.type ()->name (), name) == 0)
> + if (streq (tas.type ()->name (), name))
> return &tas;
> }
>
> @@ -1107,7 +1106,7 @@ INIT_GDB_FILE (language)
> add_alias_cmd ("ch", setshow_check_cmds.show, no_class, 1, &showlist);
>
> range = type_or_range_names[3];
> - gdb_assert (strcmp (range, "auto") == 0);
> + gdb_assert (streq (range, "auto"));
> add_setshow_enum_cmd ("range", class_support, type_or_range_names,
> &range,
> _("Set range checking (on/warn/off/auto)."),
> @@ -1117,7 +1116,7 @@ INIT_GDB_FILE (language)
> &setchecklist, &showchecklist);
>
> case_sensitive = case_sensitive_names[2];
> - gdb_assert (strcmp (case_sensitive, "auto") == 0);
> + gdb_assert (streq (case_sensitive, "auto"));
> add_setshow_enum_cmd ("case-sensitive", class_support, case_sensitive_names,
> &case_sensitive, _("\
> Set case sensitivity in name search (on/off/auto)."), _("\
> diff --git a/gdb/linespec.c b/gdb/linespec.c
> index 024358c65f59..7624c92ab257 100644
> --- a/gdb/linespec.c
> +++ b/gdb/linespec.c
> @@ -1742,8 +1742,7 @@ linespec_parse_basic (linespec_parser *parser)
> completions, advance the stream past the colon token and make
> it part of the function name/token. */
>
> - if (!parser->completion_quote_char
> - && strcmp (parser->lexer.stream, ":") == 0)
> + if (!parser->completion_quote_char && streq (parser->lexer.stream, ":"))
> {
> completion_tracker tmp_tracker (false);
> const char *source_filename
> @@ -4217,8 +4216,8 @@ search_minsyms_for_name (struct collect_info *info,
> if (msymbol_type_is_static (item2.minsym->type ()))
> continue;
>
> - if (strcmp (item.minsym->linkage_name (),
> - item2.minsym->linkage_name ()) != 0)
> + if (!streq (item.minsym->linkage_name (),
> + item2.minsym->linkage_name ()))
> continue;
>
> /* Found a global minsym with the same name as the
> diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
> index 3f2bab166304..da92c6a3af27 100644
> --- a/gdb/linux-tdep.c
> +++ b/gdb/linux-tdep.c
> @@ -498,17 +498,17 @@ decode_vmflags (char *p, struct smaps_vmflags *v)
> s != NULL;
> s = strtok_r (NULL, " ", &saveptr))
> {
> - if (strcmp (s, "io") == 0)
> + if (streq (s, "io"))
> v->io_page = 1;
> - else if (strcmp (s, "ht") == 0)
> + else if (streq (s, "ht"))
> v->uses_huge_tlb = 1;
> - else if (strcmp (s, "dd") == 0)
> + else if (streq (s, "dd"))
> v->exclude_coredump = 1;
> - else if (strcmp (s, "sh") == 0)
> + else if (streq (s, "sh"))
> v->shared_mapping = 1;
> - else if (strcmp (s, "mt") == 0)
> + else if (streq (s, "mt"))
> v->memory_tagging = 1;
> - else if (strcmp (s, "ss") == 0)
> + else if (streq (s, "ss"))
> v->shadow_stack_memory = 1;
> }
> }
> @@ -591,7 +591,7 @@ mapping_is_anonymous_p (const char *filename)
> If we managed to find it, then we assume the mapping is
> anonymous. */
> return (filename_len >= del_len
> - && strcmp (filename + filename_len - del_len, deleted) == 0);
> + && streq (filename + filename_len - del_len, deleted));
> }
>
> if (*filename == '\0'
> @@ -1420,17 +1420,17 @@ parse_smaps_data (const char *data,
> break;
> }
>
> - if (strcmp (keyword, "Anonymous:") == 0)
> + if (streq (keyword, "Anonymous:"))
> {
> /* Older Linux kernels did not support the
> "Anonymous:" counter. Check it here. */
> has_anonymous = 1;
> }
> - else if (strcmp (keyword, "VmFlags:") == 0)
> + else if (streq (keyword, "VmFlags:"))
> decode_vmflags (line, &v);
>
> - if (strcmp (keyword, "AnonHugePages:") == 0
> - || strcmp (keyword, "Anonymous:") == 0)
> + if (streq (keyword, "AnonHugePages:")
> + || streq (keyword, "Anonymous:"))
> {
> unsigned long number;
>
> diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
> index bd45a2f29785..f276031184c4 100644
> --- a/gdb/linux-thread-db.c
> +++ b/gdb/linux-thread-db.c
> @@ -1154,7 +1154,7 @@ thread_db_load_search (void)
> if (rc)
> break;
> }
> - else if (strcmp (this_dir, "$sdir") == 0)
> + else if (streq (this_dir, "$sdir"))
> {
> if (try_thread_db_load_from_sdir ())
> {
> @@ -1905,7 +1905,7 @@ info_auto_load_libthread_db (const char *args, int from_tty)
> for (this_pid_len = 0; pid != 0; pid /= 10)
> this_pid_len++;
>
> - if (i == 0 || strcmp (array[i - 1]->filename, array[i]->filename) != 0)
> + if (i == 0 || !streq (array[i - 1]->filename, array[i]->filename))
> {
> unique_filenames++;
> max_filename_len = std::max (max_filename_len,
> @@ -1943,8 +1943,7 @@ info_auto_load_libthread_db (const char *args, int from_tty)
> file_name_style.style ());
>
> std::string pids;
> - while (i < array.size () && strcmp (info->filename,
> - array[i]->filename) == 0)
> + while (i < array.size () && streq (info->filename, array[i]->filename))
> {
> if (!pids.empty ())
> pids += ", ";
> diff --git a/gdb/m2-typeprint.c b/gdb/m2-typeprint.c
> index 8971e4b5ec12..59616e7f2d66 100644
> --- a/gdb/m2-typeprint.c
> +++ b/gdb/m2-typeprint.c
> @@ -162,8 +162,7 @@ m2_language::print_typedef (struct type *type, struct symbol *new_symbol,
> type = check_typedef (type);
> gdb_printf (stream, "TYPE ");
> if (!new_symbol->type ()->name ()
> - || strcmp ((new_symbol->type ())->name (),
> - new_symbol->linkage_name ()) != 0)
> + || !streq ((new_symbol->type ())->name (), new_symbol->linkage_name ()))
> gdb_printf (stream, "%s = ", new_symbol->print_name ());
> else
> gdb_printf (stream, "<builtin> = ");
> @@ -352,7 +351,7 @@ m2_is_long_set (struct type *type)
> if (type->field (i).type ()->code () != TYPE_CODE_SET)
> return 0;
> if (type->field (i).name () != NULL
> - && (strcmp (type->field (i).name (), "") != 0))
> + && (!streq (type->field (i).name (), "")))
> return 0;
> range = type->field (i).type ()->index_type ();
> if ((i > TYPE_N_BASECLASSES (type))
> @@ -490,9 +489,9 @@ m2_is_unbounded_array (struct type *type)
> */
> if (type->num_fields () != 2)
> return 0;
> - if (strcmp (type->field (0).name (), "_m2_contents") != 0)
> + if (!streq (type->field (0).name (), "_m2_contents"))
> return 0;
> - if (strcmp (type->field (1).name (), "_m2_high") != 0)
> + if (!streq (type->field (1).name (), "_m2_high"))
> return 0;
> if (type->field (0).type ()->code () != TYPE_CODE_PTR)
> return 0;
> diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
> index 4c4aa19185f0..f9d46c00b9ca 100644
> --- a/gdb/m32c-tdep.c
> +++ b/gdb/m32c-tdep.c
> @@ -2327,8 +2327,7 @@ m32c_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR stop_pc)
> if (find_pc_partial_function (stop_pc, &name, &start, &end))
> {
> /* Are we stopped at the beginning of the trampoline function? */
> - if (strcmp (name, "m32c_jsri16") == 0
> - && stop_pc == start)
> + if (streq (name, "m32c_jsri16") && stop_pc == start)
> {
> /* Get the stack pointer. The return address is at the top,
> and the target function's address is just below that. We
> @@ -2508,8 +2507,7 @@ m32c_m16c_pointer_to_address (struct gdbarch *gdbarch,
> const char *ptr_msym_name = ptr_msym.minsym->linkage_name ();
> int len = strlen (ptr_msym_name);
>
> - if (len > 4
> - && strcmp (ptr_msym_name + len - 4, ".plt") == 0)
> + if (len > 4 && streq (ptr_msym_name + len - 4, ".plt"))
> {
> /* We have a .plt symbol; try to find the symbol for the
> corresponding function.
> diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c
> index 75e112edc6ea..1068783565ce 100644
> --- a/gdb/m32r-linux-tdep.c
> +++ b/gdb/m32r-linux-tdep.c
> @@ -185,8 +185,7 @@ m32r_linux_pc_in_sigtramp (CORE_ADDR pc, const char *name,
> return (m32r_linux_sigtramp_start (pc, this_frame) != 0
> || m32r_linux_rt_sigtramp_start (pc, this_frame) != 0);
>
> - return (strcmp ("__restore", name) == 0
> - || strcmp ("__restore_rt", name) == 0);
> + return streq ("__restore", name) || streq ("__restore_rt", name);
> }
>
> /* From <asm/sigcontext.h>. */
> diff --git a/gdb/machoread.c b/gdb/machoread.c
> index 416eb6766fdb..6bd063a89e93 100644
> --- a/gdb/machoread.c
> +++ b/gdb/machoread.c
> @@ -835,7 +835,7 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
> asect && dsect;
> asect = asect->next, dsect = dsect->next)
> {
> - if (strcmp (asect->name, dsect->name) != 0)
> + if (!streq (asect->name, dsect->name))
> break;
> bfd_set_section_size (dsect, bfd_section_size (asect));
> }
> @@ -912,8 +912,8 @@ macho_symfile_offsets (struct objfile *objfile,
>
> if (startswith (bfd_sect_name, "LC_SEGMENT."))
> bfd_sect_name += 11;
> - if (strcmp (bfd_sect_name, "__TEXT") == 0
> - || strcmp (bfd_sect_name, "__TEXT.__text") == 0)
> + if (streq (bfd_sect_name, "__TEXT")
> + || streq (bfd_sect_name, "__TEXT.__text"))
> objfile->sect_index_text = sect_index;
> }
> }
> diff --git a/gdb/macrocmd.c b/gdb/macrocmd.c
> index d700dd37108d..c0af31c2b6ed 100644
> --- a/gdb/macrocmd.c
> +++ b/gdb/macrocmd.c
> @@ -210,7 +210,7 @@ info_macro_command (const char *args, int from_tty)
> macro_source_file *source,
> int line)
> {
> - if (strcmp (name, macro_name) == 0)
> + if (streq (name, macro_name))
> print_macro_definition (name, macro, source, line);
> });
> else
> diff --git a/gdb/macroexp.c b/gdb/macroexp.c
> index 79d45457e001..82f1378e1535 100644
> --- a/gdb/macroexp.c
> +++ b/gdb/macroexp.c
> @@ -721,7 +721,7 @@ static int
> currently_rescanning (struct macro_name_list *list, const char *name)
> {
> for (; list; list = list->next)
> - if (strcmp (name, list->name) == 0)
> + if (streq (name, list->name))
> return 1;
>
> return 0;
> @@ -1231,7 +1231,7 @@ expand (const char *id,
>
> if (def->argc >= 1)
> {
> - if (strcmp (def->argv[def->argc - 1], "...") == 0)
> + if (streq (def->argv[def->argc - 1], "..."))
> {
> /* In C99-style varargs, substitution is done using
> __VA_ARGS__. */
> @@ -1242,8 +1242,7 @@ expand (const char *id,
> {
> int len = strlen (def->argv[def->argc - 1]);
>
> - if (len > 3
> - && strcmp (def->argv[def->argc - 1] + len - 3, "...") == 0)
> + if (len > 3 && streq (def->argv[def->argc - 1] + len - 3, "..."))
> {
> /* In GNU-style varargs, the name of the
> substitution parameter is the name of the formal
> diff --git a/gdb/macrotab.c b/gdb/macrotab.c
> index 688d1e3fff3e..078eb5cb5aa7 100644
> --- a/gdb/macrotab.c
> +++ b/gdb/macrotab.c
> @@ -657,7 +657,7 @@ find_definition (const char *name,
> We just want to search within a given name's definitions. */
> struct macro_key *found = (struct macro_key *) pred->key;
>
> - if (strcmp (found->name, name) == 0)
> + if (streq (found->name, name))
> n = pred;
> }
> }
> @@ -707,7 +707,7 @@ check_for_redefinition (macro_source_file *source, int line, const char *name,
> definition changes). */
> if (kind != found_def->kind)
> same = 0;
> - else if (strcmp (replacement, found_def->replacement))
> + else if (!streq (replacement, found_def->replacement))
> same = 0;
> else if (kind == macro_function_like)
> {
> diff --git a/gdb/main.c b/gdb/main.c
> index a4e6cddef702..df40ee0b005d 100644
> --- a/gdb/main.c
> +++ b/gdb/main.c
> @@ -1240,9 +1240,7 @@ captured_main_1 (struct captured_main_args *context)
> save_auto_load = global_auto_load;
> global_auto_load = 0;
>
> - if (execarg != NULL
> - && symarg != NULL
> - && strcmp (execarg, symarg) == 0)
> + if (execarg != nullptr && symarg != nullptr && streq (execarg, symarg))
> {
> /* The exec file and the symbol-file are the same. If we can't
> open it, better only print one error message.
> diff --git a/gdb/memattr.c b/gdb/memattr.c
> index aa0ca17008d9..bea33f6df6d4 100644
> --- a/gdb/memattr.c
> +++ b/gdb/memattr.c
> @@ -257,7 +257,7 @@ mem_command (const char *args, int from_tty)
> error_no_arg (_("No mem"));
>
> /* For "mem auto", switch back to using a target provided list. */
> - if (strcmp (args, "auto") == 0)
> + if (streq (args, "auto"))
> {
> if (mem_use_target ())
> return;
> diff --git a/gdb/mi/mi-cmd-disas.c b/gdb/mi/mi-cmd-disas.c
> index 1059e366d7be..bc4bd52dfff0 100644
> --- a/gdb/mi/mi-cmd-disas.c
> +++ b/gdb/mi/mi-cmd-disas.c
> @@ -145,11 +145,11 @@ mi_cmd_disassemble (const char *command, const char *const *argv, int argc)
> break;
> case OPCODES_OPT:
> opcodes_seen = true;
> - if (strcmp (oarg, "none") == 0)
> + if (streq (oarg, "none"))
> opcodes_mode = OPCODES_NONE;
> - else if (strcmp (oarg, "display") == 0)
> + else if (streq (oarg, "display"))
> opcodes_mode = OPCODES_DISPLAY;
> - else if (strcmp (oarg, "bytes") == 0)
> + else if (streq (oarg, "bytes"))
> opcodes_mode = OPCODES_BYTES;
> else
> error (_("-data-disassemble: unknown value for -opcodes argument"));
> diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
> index 22736f568ef3..f1f1637b74b2 100644
> --- a/gdb/mi/mi-cmd-var.c
> +++ b/gdb/mi/mi-cmd-var.c
> @@ -103,7 +103,7 @@ mi_cmd_var_create (const char *command, const char *const *argv, int argc)
>
> const char *name = argv[0];
> std::string gen_name;
> - if (strcmp (name, "-") == 0)
> + if (streq (name, "-"))
> {
> gen_name = varobj_gen_name ();
> name = gen_name.c_str ();
> @@ -111,9 +111,9 @@ mi_cmd_var_create (const char *command, const char *const *argv, int argc)
> else if (!c_isalpha (name[0]))
> error (_("-var-create: name of object must begin with a letter"));
>
> - if (strcmp (frame, "*") == 0)
> + if (streq (frame, "*"))
> var_type = USE_CURRENT_FRAME;
> - else if (strcmp (frame, "@") == 0)
> + else if (streq (frame, "@"))
> var_type = USE_SELECTED_FRAME;
> else
> {
> @@ -154,7 +154,7 @@ mi_cmd_var_delete (const char *command, const char *const *argv, int argc)
> starting with '-'. */
> if (argc == 1)
> {
> - if (strcmp (name, "-c") == 0)
> + if (streq (name, "-c"))
> error (_("-var-delete: Missing required "
> "argument after '-c': variable object name"));
> if (*name == '-')
> @@ -165,7 +165,7 @@ mi_cmd_var_delete (const char *command, const char *const *argv, int argc)
> which would be the variable name. */
> if (argc == 2)
> {
> - if (strcmp (name, "-c") != 0)
> + if (!streq (name, "-c"))
> error (_("-var-delete: Invalid option."));
> children_only_p = 1;
> name = argv[1];
> @@ -264,9 +264,9 @@ mi_cmd_var_set_frozen (const char *command, const char *const *argv, int argc)
>
> var = varobj_get_handle (argv[0]);
>
> - if (strcmp (argv[1], "0") == 0)
> + if (streq (argv[1], "0"))
> frozen = false;
> - else if (strcmp (argv[1], "1") == 0)
> + else if (streq (argv[1], "1"))
> frozen = true;
> else
> error (_("Invalid flag value"));
> diff --git a/gdb/mi/mi-getopt.c b/gdb/mi/mi-getopt.c
> index c005263243ef..865bba9abf8e 100644
> --- a/gdb/mi/mi-getopt.c
> +++ b/gdb/mi/mi-getopt.c
> @@ -37,7 +37,7 @@ mi_getopt_1 (const char *prefix, int argc, const char *const *argv,
> return -1;
> arg = argv[*oind];
> /* ``--''? */
> - if (strcmp (arg, "--") == 0)
> + if (streq (arg, "--"))
> {
> *oind += 1;
> *oarg = NULL;
> @@ -52,7 +52,7 @@ mi_getopt_1 (const char *prefix, int argc, const char *const *argv,
> /* Look the option up. */
> for (opt = opts; opt->name != NULL; opt++)
> {
> - if (strcmp (opt->name, arg + 1) != 0)
> + if (!streq (opt->name, arg + 1))
> continue;
> if (opt->arg_p)
> {
> diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
> index 77e56bc9fc8d..c03cbfe51173 100644
> --- a/gdb/mi/mi-main.c
> +++ b/gdb/mi/mi-main.c
> @@ -161,7 +161,7 @@ void
> mi_cmd_exec_next (const char *command, const char *const *argv, int argc)
> {
> /* FIXME: Should call a libgdb function, not a cli wrapper. */
> - if (argc > 0 && strcmp(argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> mi_execute_async_cli_command ("reverse-next", argv + 1, argc - 1);
> else
> mi_execute_async_cli_command ("next", argv, argc);
> @@ -172,7 +172,7 @@ mi_cmd_exec_next_instruction (const char *command, const char *const *argv,
> int argc)
> {
> /* FIXME: Should call a libgdb function, not a cli wrapper. */
> - if (argc > 0 && strcmp(argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> mi_execute_async_cli_command ("reverse-nexti", argv + 1, argc - 1);
> else
> mi_execute_async_cli_command ("nexti", argv, argc);
> @@ -182,7 +182,7 @@ void
> mi_cmd_exec_step (const char *command, const char *const *argv, int argc)
> {
> /* FIXME: Should call a libgdb function, not a cli wrapper. */
> - if (argc > 0 && strcmp(argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> mi_execute_async_cli_command ("reverse-step", argv + 1, argc - 1);
> else
> mi_execute_async_cli_command ("step", argv, argc);
> @@ -193,7 +193,7 @@ mi_cmd_exec_step_instruction (const char *command, const char *const *argv,
> int argc)
> {
> /* FIXME: Should call a libgdb function, not a cli wrapper. */
> - if (argc > 0 && strcmp(argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> mi_execute_async_cli_command ("reverse-stepi", argv + 1, argc - 1);
> else
> mi_execute_async_cli_command ("stepi", argv, argc);
> @@ -203,7 +203,7 @@ void
> mi_cmd_exec_finish (const char *command, const char *const *argv, int argc)
> {
> /* FIXME: Should call a libgdb function, not a cli wrapper. */
> - if (argc > 0 && strcmp(argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> mi_execute_async_cli_command ("reverse-finish", argv + 1, argc - 1);
> else
> mi_execute_async_cli_command ("finish", argv, argc);
> @@ -329,7 +329,7 @@ exec_reverse_continue (const char *const *argv, int argc)
> void
> mi_cmd_exec_continue (const char *command, const char *const *argv, int argc)
> {
> - if (argc > 0 && strcmp (argv[0], "--reverse") == 0)
> + if (argc > 0 && streq (argv[0], "--reverse"))
> exec_reverse_continue (argv + 1, argc - 1);
> else
> exec_continue (argv, argc);
> @@ -759,9 +759,9 @@ mi_cmd_list_thread_groups (const char *command, const char *const *argv,
> available = 1;
> break;
> case RECURSE_OPT:
> - if (strcmp (oarg, "0") == 0)
> + if (streq (oarg, "0"))
> ;
> - else if (strcmp (oarg, "1") == 0)
> + else if (streq (oarg, "1"))
> recurse = 1;
> else
> error (_("only '0' and '1' are valid values "
> @@ -1589,9 +1589,9 @@ mi_cmd_enable_timings (const char *command, const char *const *argv, int argc)
> do_timings = 1;
> else if (argc == 1)
> {
> - if (strcmp (argv[0], "yes") == 0)
> + if (streq (argv[0], "yes"))
> do_timings = 1;
> - else if (strcmp (argv[0], "no") == 0)
> + else if (streq (argv[0], "no"))
> do_timings = 0;
> else
> goto usage_error;
> @@ -1795,8 +1795,10 @@ captured_mi_execute_command (struct mi_interp *mi, struct ui_out *uiout,
> gdb_puts (context->token.c_str (), mi->raw_stdout);
> /* There's no particularly good reason why target-connect results
> in not ^done. Should kill ^connected for MI3. */
> - gdb_puts (strcmp (context->command.get (), "target-select") == 0
> - ? "^connected" : "^done", mi->raw_stdout);
> + gdb_puts ((streq (context->command.get (), "target-select")
> + ? "^connected"
> + : "^done"),
> + mi->raw_stdout);
> mi_out_put (uiout, mi->raw_stdout);
> mi_out_rewind (uiout);
> mi_print_timing_maybe (mi->raw_stdout);
> @@ -2150,7 +2152,6 @@ mi_load_progress (const char *section_name,
> using namespace std::chrono;
> static steady_clock::time_point last_update;
> static char *previous_sect_name = NULL;
> - int new_section;
> struct mi_interp *mi = as_mi_interp (current_interpreter ());
>
> /* If the current interpreter is not an MI interpreter, then just
> @@ -2169,9 +2170,8 @@ mi_load_progress (const char *section_name,
> scoped_restore save_uiout
> = make_scoped_restore (&current_uiout, uiout.get ());
>
> - new_section = (previous_sect_name ?
> - strcmp (previous_sect_name, section_name) : 1);
> - if (new_section)
> + if (previous_sect_name == nullptr
> + || !streq (previous_sect_name, section_name))
> {
> xfree (previous_sect_name);
> previous_sect_name = xstrdup (section_name);
> @@ -2301,7 +2301,7 @@ mi_cmd_trace_find (const char *command, const char *const *argv, int argc)
>
> mode = argv[0];
>
> - if (strcmp (mode, "none") == 0)
> + if (streq (mode, "none"))
> {
> tfind_1 (tfind_number, -1, 0, 0, 0);
> return;
> @@ -2309,39 +2309,39 @@ mi_cmd_trace_find (const char *command, const char *const *argv, int argc)
>
> check_trace_running (current_trace_status ());
>
> - if (strcmp (mode, "frame-number") == 0)
> + if (streq (mode, "frame-number"))
> {
> if (argc != 2)
> error (_("frame number is required"));
> tfind_1 (tfind_number, atoi (argv[1]), 0, 0, 0);
> }
> - else if (strcmp (mode, "tracepoint-number") == 0)
> + else if (streq (mode, "tracepoint-number"))
> {
> if (argc != 2)
> error (_("tracepoint number is required"));
> tfind_1 (tfind_tp, atoi (argv[1]), 0, 0, 0);
> }
> - else if (strcmp (mode, "pc") == 0)
> + else if (streq (mode, "pc"))
> {
> if (argc != 2)
> error (_("PC is required"));
> tfind_1 (tfind_pc, 0, parse_and_eval_address (argv[1]), 0, 0);
> }
> - else if (strcmp (mode, "pc-inside-range") == 0)
> + else if (streq (mode, "pc-inside-range"))
> {
> if (argc != 3)
> error (_("Start and end PC are required"));
> tfind_1 (tfind_range, 0, parse_and_eval_address (argv[1]),
> parse_and_eval_address (argv[2]), 0);
> }
> - else if (strcmp (mode, "pc-outside-range") == 0)
> + else if (streq (mode, "pc-outside-range"))
> {
> if (argc != 3)
> error (_("Start and end PC are required"));
> tfind_1 (tfind_outside, 0, parse_and_eval_address (argv[1]),
> parse_and_eval_address (argv[2]), 0);
> }
> - else if (strcmp (mode, "line") == 0)
> + else if (streq (mode, "line"))
> {
> if (argc != 2)
> error (_("Line is required"));
> diff --git a/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c
> index 886d093c62cb..68c56c9b57f5 100644
> --- a/gdb/mi/mi-parse.c
> +++ b/gdb/mi/mi-parse.c
> @@ -349,7 +349,7 @@ mi_parse::mi_parse (const char *cmd, std::string *token)
> chp += as;
> }
> /* See if --all is the last token in the input. */
> - if (strcmp (chp, "--all") == 0)
> + if (streq (chp, "--all"))
> {
> this->all = 1;
> chp += strlen (chp);
> @@ -429,32 +429,32 @@ mi_parse::mi_parse (gdb::unique_xmalloc_ptr<char> command,
> const char *chp = args[i].get ();
>
> /* See if --all is the last token in the input. */
> - if (strcmp (chp, "--all") == 0)
> + if (streq (chp, "--all"))
> {
> this->all = 1;
> }
> - else if (strcmp (chp, "--thread-group") == 0)
> + else if (streq (chp, "--thread-group"))
> {
> ++i;
> if (i == args.size ())
> error ("No argument to '--thread-group'");
> this->set_thread_group (args[i].get (), nullptr);
> }
> - else if (strcmp (chp, "--thread") == 0)
> + else if (streq (chp, "--thread"))
> {
> ++i;
> if (i == args.size ())
> error ("No argument to '--thread'");
> this->set_thread (args[i].get (), nullptr);
> }
> - else if (strcmp (chp, "--frame") == 0)
> + else if (streq (chp, "--frame"))
> {
> ++i;
> if (i == args.size ())
> error ("No argument to '--frame'");
> this->set_frame (args[i].get (), nullptr);
> }
> - else if (strcmp (chp, "--language") == 0)
> + else if (streq (chp, "--language"))
> {
> ++i;
> if (i == args.size ())
> @@ -472,17 +472,14 @@ mi_parse::mi_parse (gdb::unique_xmalloc_ptr<char> command,
> enum print_values
> mi_parse_print_values (const char *name)
> {
> - if (strcmp (name, "0") == 0
> - || strcmp (name, mi_no_values) == 0)
> - return PRINT_NO_VALUES;
> - else if (strcmp (name, "1") == 0
> - || strcmp (name, mi_all_values) == 0)
> - return PRINT_ALL_VALUES;
> - else if (strcmp (name, "2") == 0
> - || strcmp (name, mi_simple_values) == 0)
> - return PRINT_SIMPLE_VALUES;
> - else
> - error (_("Unknown value for PRINT_VALUES: must be: \
> + if (streq (name, "0") || streq (name, mi_no_values))
> + return PRINT_NO_VALUES;
> + else if (streq (name, "1") || streq (name, mi_all_values))
> + return PRINT_ALL_VALUES;
> + else if (streq (name, "2") || streq (name, mi_simple_values))
> + return PRINT_SIMPLE_VALUES;
> + else
> + error (_("Unknown value for PRINT_VALUES: must be: \
> 0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
> - mi_no_values, mi_all_values, mi_simple_values);
> + mi_no_values, mi_all_values, mi_simple_values);
> }
> diff --git a/gdb/minsyms.c b/gdb/minsyms.c
> index 71cd1bb4c2bd..0d6ea53aecf6 100644
> --- a/gdb/minsyms.c
> +++ b/gdb/minsyms.c
> @@ -557,7 +557,7 @@ lookup_minimal_symbol_linkage (const char *name, struct objfile *objf,
> msymbol != NULL;
> msymbol = msymbol->hash_next)
> {
> - if (strcmp (msymbol->linkage_name (), name) == 0
> + if (streq (msymbol->linkage_name (), name)
> && (msymbol->type () == mst_data
> || msymbol->type () == mst_bss
> || (match_static_type
> @@ -611,10 +611,10 @@ lookup_minimal_symbol_text (program_space *pspace, const char *name,
> msymbol != NULL && found_symbol.minsym == NULL;
> msymbol = msymbol->hash_next)
> {
> - if (strcmp (msymbol->linkage_name (), name) == 0 &&
> - (msymbol->type () == mst_text
> - || msymbol->type () == mst_text_gnu_ifunc
> - || msymbol->type () == mst_file_text))
> + if (streq (msymbol->linkage_name (), name)
> + && (msymbol->type () == mst_text
> + || msymbol->type () == mst_text_gnu_ifunc
> + || msymbol->type () == mst_file_text))
> {
> switch (msymbol->type ())
> {
> @@ -678,7 +678,7 @@ lookup_minimal_symbol_by_pc_name (CORE_ADDR pc, const char *name,
> msymbol = msymbol->hash_next)
> {
> if (msymbol->value_address (&objfile) == pc
> - && strcmp (msymbol->linkage_name (), name) == 0)
> + && streq (msymbol->linkage_name (), name))
> return msymbol;
> }
> }
> @@ -1229,12 +1229,12 @@ compact_minimal_symbols (struct minimal_symbol *msymbol, int mcount,
> copyfrom = copyto = msymbol;
> while (copyfrom < msymbol + mcount - 1)
> {
> - if (copyfrom->unrelocated_address ()
> - == (copyfrom + 1)->unrelocated_address ()
> + if ((copyfrom->unrelocated_address ()
> + == (copyfrom + 1)->unrelocated_address ())
> && (copyfrom->section_index ()
> == (copyfrom + 1)->section_index ())
> - && strcmp (copyfrom->linkage_name (),
> - (copyfrom + 1)->linkage_name ()) == 0)
> + && streq (copyfrom->linkage_name (),
> + (copyfrom + 1)->linkage_name ()))
> {
> if ((copyfrom + 1)->type () == mst_unknown)
> (copyfrom + 1)->set_type (copyfrom->type ());
> @@ -1498,8 +1498,8 @@ find_solib_trampoline_target (const frame_info_ptr &frame, CORE_ADDR pc)
> || msymbol->type () == mst_text_gnu_ifunc
> || msymbol->type () == mst_data
> || msymbol->type () == mst_data_gnu_ifunc)
> - && strcmp (msymbol->linkage_name (),
> - tsymbol->linkage_name ()) == 0)
> + && streq (msymbol->linkage_name (),
> + tsymbol->linkage_name ()))
> {
> CORE_ADDR func;
>
> diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
> index 727d092b6312..036fc4c45a70 100644
> --- a/gdb/mips-sde-tdep.c
> +++ b/gdb/mips-sde-tdep.c
> @@ -153,9 +153,8 @@ mips_sde_frame_sniffer (const struct frame_unwind *self,
> const char *name;
>
> find_pc_partial_function (pc, &name, NULL, NULL);
> - return (name
> - && (strcmp (name, "_xcptcall") == 0
> - || strcmp (name, "_sigtramp") == 0));
> + return (name != nullptr
> + && (streq (name, "_xcptcall") || streq (name, "_sigtramp")));
> }
>
> /* Data structure for the SDE frame unwinder. */
> diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
> index 3ecf5283a900..995a3b10915e 100644
> --- a/gdb/mips-tdep.c
> +++ b/gdb/mips-tdep.c
> @@ -7964,17 +7964,17 @@ mips_find_abi_from_sections (bfd *abfd)
> if (!startswith (name, ".mdebug."))
> continue;
>
> - if (strcmp (name, ".mdebug.abi32") == 0)
> + if (streq (name, ".mdebug.abi32"))
> return MIPS_ABI_O32;
> - else if (strcmp (name, ".mdebug.abiN32") == 0)
> + else if (streq (name, ".mdebug.abiN32"))
> return MIPS_ABI_N32;
> - else if (strcmp (name, ".mdebug.abi64") == 0)
> + else if (streq (name, ".mdebug.abi64"))
> return MIPS_ABI_N64;
> - else if (strcmp (name, ".mdebug.abiO64") == 0)
> + else if (streq (name, ".mdebug.abiO64"))
> return MIPS_ABI_O64;
> - else if (strcmp (name, ".mdebug.eabi32") == 0)
> + else if (streq (name, ".mdebug.eabi32"))
> return MIPS_ABI_EABI32;
> - else if (strcmp (name, ".mdebug.eabi64") == 0)
> + else if (streq (name, ".mdebug.eabi64"))
> return MIPS_ABI_EABI64;
> else
> warning (_("unsupported ABI %s."), name + 8);
> diff --git a/gdb/namespace.c b/gdb/namespace.c
> index b4a96c753775..5b5749369eeb 100644
> --- a/gdb/namespace.c
> +++ b/gdb/namespace.c
> @@ -53,25 +53,25 @@ add_using_directive (struct using_direct **using_directives,
> {
> int ix;
>
> - if (strcmp (current->import_src, src) != 0)
> + if (!streq (current->import_src, src))
> continue;
> - if (strcmp (current->import_dest, dest) != 0)
> + if (!streq (current->import_dest, dest))
> continue;
> if ((alias == NULL && current->alias != NULL)
> || (alias != NULL && current->alias == NULL)
> || (alias != NULL && current->alias != NULL
> - && strcmp (alias, current->alias) != 0))
> + && !streq (alias, current->alias)))
> continue;
> if ((declaration == NULL && current->declaration != NULL)
> || (declaration != NULL && current->declaration == NULL)
> || (declaration != NULL && current->declaration != NULL
> - && strcmp (declaration, current->declaration) != 0))
> + && !streq (declaration, current->declaration)))
> continue;
>
> /* Compare the contents of EXCLUDES. */
> for (ix = 0; ix < excludes.size (); ++ix)
> if (current->excludes[ix] == NULL
> - || strcmp (excludes[ix], current->excludes[ix]) != 0)
> + || !streq (excludes[ix], current->excludes[ix]))
> break;
> if (ix < excludes.size () || current->excludes[ix] != NULL)
> continue;
> diff --git a/gdb/nat/linux-btrace.c b/gdb/nat/linux-btrace.c
> index 46aa2b730a78..046372da7457 100644
> --- a/gdb/nat/linux-btrace.c
> +++ b/gdb/nat/linux-btrace.c
> @@ -210,7 +210,7 @@ linux_determine_kernel_start (void)
> if (match != 2)
> continue;
>
> - if (strcmp (symbol, "_text") == 0)
> + if (streq (symbol, "_text"))
> {
> kernel_start = addr;
> break;
> diff --git a/gdb/nat/linux-osdata.c b/gdb/nat/linux-osdata.c
> index 57ac60175875..248dbab94289 100644
> --- a/gdb/nat/linux-osdata.c
> +++ b/gdb/nat/linux-osdata.c
> @@ -586,7 +586,7 @@ linux_xfer_osdata_cpus ()
>
> value[i] = '\0';
>
> - if (strcmp (key, "processor") == 0)
> + if (streq (key, "processor"))
> {
> if (first_item)
> buffer += "<item>";
> @@ -1392,7 +1392,7 @@ linux_common_xfer_osdata (const char *annex, gdb_byte *readbuf,
>
> for (i = 0; osdata_table[i].type; ++i)
> {
> - if (strcmp (annex, osdata_table[i].type) == 0)
> + if (streq (annex, osdata_table[i].type))
> return common_getter (&osdata_table[i],
> readbuf, offset, len);
> }
> diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c
> index 90db9fad6b55..6281581aeeac 100644
> --- a/gdb/nat/linux-procfs.c
> +++ b/gdb/nat/linux-procfs.c
> @@ -105,7 +105,7 @@ parse_proc_status_state (const char *state)
> return PROC_STATE_TRACING_STOP;
> case 'T':
> /* Before Linux 2.6.33, tracing stop used uppercase T. */
> - if (strcmp (state, "T (stopped)\n") == 0)
> + if (streq (state, "T (stopped)\n"))
> return PROC_STATE_STOPPED;
> else /* "T (tracing stop)\n" */
> return PROC_STATE_TRACING_STOP;
> diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c
> index 3da3c3b61957..3640b31ec274 100644
> --- a/gdb/nds32-tdep.c
> +++ b/gdb/nds32-tdep.c
> @@ -2031,7 +2031,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
> {
> const char *regname = gdbarch_register_name (gdbarch, j);
>
> - if (strcmp (regname, nds32_register_aliases[i].name) == 0)
> + if (streq (regname, nds32_register_aliases[i].name))
> {
> regnum = j;
> break;
> diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
> index f14d7f16d376..2af438de6599 100644
> --- a/gdb/objc-lang.c
> +++ b/gdb/objc-lang.c
> @@ -1070,15 +1070,15 @@ find_methods (char type, const char *theclass, const char *category,
> continue;
>
> if ((theclass != NULL)
> - && ((nclass == NULL) || (strcmp (theclass, nclass) != 0)))
> + && ((nclass == NULL) || (!streq (theclass, nclass))))
> continue;
>
> - if ((category != NULL) &&
> - ((ncategory == NULL) || (strcmp (category, ncategory) != 0)))
> + if (category != nullptr
> + && ((ncategory == nullptr) || !streq (category, ncategory)))
> continue;
>
> - if ((selector != NULL) &&
> - ((nselector == NULL) || (strcmp (selector, nselector) != 0)))
> + if (selector != nullptr
> + && (nselector == nullptr || !streq (selector, nselector)))
> continue;
>
> symbol_names->push_back (symname);
> diff --git a/gdb/objfiles.c b/gdb/objfiles.c
> index ff98cf28ca6b..387434153e9a 100644
> --- a/gdb/objfiles.c
> +++ b/gdb/objfiles.c
> @@ -141,7 +141,7 @@ set_objfile_main_name (struct objfile *objfile,
> const char *name, enum language lang)
> {
> if (objfile->per_bfd->name_of_main == NULL
> - || strcmp (objfile->per_bfd->name_of_main, name) != 0)
> + || !streq (objfile->per_bfd->name_of_main, name))
> objfile->per_bfd->name_of_main
> = obstack_strdup (&objfile->per_bfd->storage_obstack, name);
> objfile->per_bfd->language_of_main = lang;
> @@ -982,7 +982,7 @@ pc_in_section (CORE_ADDR pc, const char *name)
> struct obj_section *s = find_pc_section (pc);
> return (s != nullptr
> && s->the_bfd_section->name != nullptr
> - && strcmp (s->the_bfd_section->name, name) == 0);
> + && streq (s->the_bfd_section->name, name));
> }
>
> /* See objfiles.h. */
> diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
> index 0ec7cf861ae9..8576f4224a29 100644
> --- a/gdb/opencl-lang.c
> +++ b/gdb/opencl-lang.c
> @@ -346,28 +346,28 @@ opencl_component_ref (struct expression *exp, struct value *val,
> && src_len != 16)
> error (_("Invalid OpenCL vector size"));
>
> - if (strcmp (comps, "lo") == 0 )
> + if (streq (comps, "lo"))
> {
> dst_len = (src_len == 3) ? 2 : src_len / 2;
>
> for (i = 0; i < dst_len; i++)
> indices[i] = i;
> }
> - else if (strcmp (comps, "hi") == 0)
> + else if (streq (comps, "hi"))
> {
> dst_len = (src_len == 3) ? 2 : src_len / 2;
>
> for (i = 0; i < dst_len; i++)
> indices[i] = dst_len + i;
> }
> - else if (strcmp (comps, "even") == 0)
> + else if (streq (comps, "even"))
> {
> dst_len = (src_len == 3) ? 2 : src_len / 2;
>
> for (i = 0; i < dst_len; i++)
> indices[i] = i*2;
> }
> - else if (strcmp (comps, "odd") == 0)
> + else if (streq (comps, "odd"))
> {
> dst_len = (src_len == 3) ? 2 : src_len / 2;
>
> diff --git a/gdb/osabi.c b/gdb/osabi.c
> index d00da1349a0e..49f618610b08 100644
> --- a/gdb/osabi.c
> +++ b/gdb/osabi.c
> @@ -353,7 +353,7 @@ check_note (bfd *abfd, asection *sect, char *note, unsigned int *sectsize,
>
> /* Check the note name. */
> if (bfd_h_get_32 (abfd, note) != (strlen (name) + 1)
> - || strcmp (note + 12, name) != 0)
> + || !streq (note + 12, name))
> return 0;
>
> /* Check the descriptor size. */
> @@ -391,7 +391,7 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
> char note[MAX_NOTESZ];
>
> /* .note.ABI-tag notes, used by GNU/Linux and FreeBSD. */
> - if (strcmp (name, ".note.ABI-tag") == 0)
> + if (streq (name, ".note.ABI-tag"))
> {
> /* GNU. */
> if (check_note (abfd, sect, note, &sectsize, "GNU", 16, NT_GNU_ABI_TAG))
> @@ -440,7 +440,7 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
> }
>
> /* .note.netbsd.ident notes, used by NetBSD. */
> - if (strcmp (name, ".note.netbsd.ident") == 0
> + if (streq (name, ".note.netbsd.ident")
> && check_note (abfd, sect, note, &sectsize, "NetBSD", 4, NT_NETBSD_IDENT))
> {
> /* There is no need to check the version yet. */
> @@ -449,7 +449,7 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
> }
>
> /* .note.openbsd.ident notes, used by OpenBSD. */
> - if (strcmp (name, ".note.openbsd.ident") == 0
> + if (streq (name, ".note.openbsd.ident")
> && check_note (abfd, sect, note, &sectsize, "OpenBSD", 4,
> NT_OPENBSD_IDENT))
> {
> @@ -459,7 +459,7 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
> }
>
> /* .note.netbsdcore.procinfo notes, used by NetBSD. */
> - if (strcmp (name, ".note.netbsdcore.procinfo") == 0)
> + if (streq (name, ".note.netbsdcore.procinfo"))
> {
> *osabi = GDB_OSABI_NETBSD;
> return;
> @@ -557,9 +557,9 @@ gdbarch_osabi_enum_name (enum gdb_osabi osabi)
> static void
> set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
> {
> - if (strcmp (set_osabi_string, "auto") == 0)
> + if (streq (set_osabi_string, "auto"))
> user_osabi_state = osabi_auto;
> - else if (strcmp (set_osabi_string, "default") == 0)
> + else if (streq (set_osabi_string, "default"))
> {
> user_selected_osabi = GDB_OSABI_DEFAULT;
> user_osabi_state = osabi_user;
> @@ -572,7 +572,7 @@ set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
> {
> enum gdb_osabi osabi = (enum gdb_osabi) i;
>
> - if (strcmp (set_osabi_string, gdbarch_osabi_name (osabi)) == 0)
> + if (streq (set_osabi_string, gdbarch_osabi_name (osabi)))
> {
> user_selected_osabi = osabi;
> user_osabi_state = osabi_user;
> @@ -619,7 +619,7 @@ INIT_GDB_FILE (gdb_osabi)
> /* Register the "set osabi" command. */
> user_osabi_state = osabi_auto;
> set_osabi_string = gdb_osabi_available_names[0];
> - gdb_assert (strcmp (set_osabi_string, "auto") == 0);
> + gdb_assert (streq (set_osabi_string, "auto"));
> add_setshow_enum_cmd ("osabi", class_support, gdb_osabi_available_names,
> &set_osabi_string,
> _("Set OS ABI of target."),
> diff --git a/gdb/p-exp.y b/gdb/p-exp.y
> index 00b67647fc56..37831be90748 100644
> --- a/gdb/p-exp.y
> +++ b/gdb/p-exp.y
> @@ -1374,29 +1374,29 @@ yylex (void)
> switch (namelen)
> {
> case 6:
> - if (strcmp (uptokstart, "OBJECT") == 0)
> + if (streq (uptokstart, "OBJECT"))
> {
> free (uptokstart);
> return CLASS;
> }
> - if (strcmp (uptokstart, "RECORD") == 0)
> + if (streq (uptokstart, "RECORD"))
> {
> free (uptokstart);
> return STRUCT;
> }
> - if (strcmp (uptokstart, "SIZEOF") == 0)
> + if (streq (uptokstart, "SIZEOF"))
> {
> free (uptokstart);
> return SIZEOF;
> }
> break;
> case 5:
> - if (strcmp (uptokstart, "CLASS") == 0)
> + if (streq (uptokstart, "CLASS"))
> {
> free (uptokstart);
> return CLASS;
> }
> - if (strcmp (uptokstart, "FALSE") == 0)
> + if (streq (uptokstart, "FALSE"))
> {
> yylval.lval = 0;
> free (uptokstart);
> @@ -1404,13 +1404,13 @@ yylex (void)
> }
> break;
> case 4:
> - if (strcmp (uptokstart, "TRUE") == 0)
> + if (streq (uptokstart, "TRUE"))
> {
> yylval.lval = 1;
> free (uptokstart);
> return TRUEKEYWORD;
> }
> - if (strcmp (uptokstart, "SELF") == 0)
> + if (streq (uptokstart, "SELF"))
> {
> /* Here we search for 'this' like
> inserted in FPC stabs debug info. */
> diff --git a/gdb/p-lang.c b/gdb/p-lang.c
> index f509f26e6ac2..3703e0247860 100644
> --- a/gdb/p-lang.c
> +++ b/gdb/p-lang.c
> @@ -99,9 +99,9 @@ pascal_is_string_type (struct type *type,int *length_pos, int *length_size,
> /* Two fields: length and st. */
> if (type->num_fields () == 2
> && type->field (0).name ()
> - && strcmp (type->field (0).name (), "length") == 0
> + && streq (type->field (0).name (), "length")
> && type->field (1).name ()
> - && strcmp (type->field (1).name (), "st") == 0)
> + && streq (type->field (1).name (), "st"))
> {
> if (length_pos)
> *length_pos = type->field (0).loc_bitpos () / TARGET_CHAR_BIT;
> @@ -119,9 +119,9 @@ pascal_is_string_type (struct type *type,int *length_pos, int *length_size,
> /* Three fields: Capacity, length and schema$ or _p_schema. */
> if (type->num_fields () == 3
> && type->field (0).name ()
> - && strcmp (type->field (0).name (), "Capacity") == 0
> + && streq (type->field (0).name (), "Capacity")
> && type->field (1).name ()
> - && strcmp (type->field (1).name (), "length") == 0)
> + && streq (type->field (1).name (), "length"))
> {
> if (length_pos)
> *length_pos = type->field (1).loc_bitpos () / TARGET_CHAR_BIT;
> diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
> index 3e9b1c259b83..f64c1069b531 100644
> --- a/gdb/p-valprint.c
> +++ b/gdb/p-valprint.c
> @@ -426,9 +426,9 @@ pascal_language::value_print (struct value *val, struct ui_file *stream,
> /* Hack: remove (char *) for char strings. Their
> type is indicated by the quoted string anyway. */
> if (type->code () == TYPE_CODE_PTR
> - && type->name () == NULL
> - && type->target_type ()->name () != NULL
> - && strcmp (type->target_type ()->name (), "char") == 0)
> + && type->name () == nullptr
> + && type->target_type ()->name () != nullptr
> + && streq (type->target_type ()->name (), "char"))
> {
> /* Print nothing. */
> }
> @@ -474,8 +474,7 @@ pascal_object_is_vtbl_ptr_type (struct type *type)
> {
> const char *type_name = type->name ();
>
> - return (type_name != NULL
> - && strcmp (type_name, pascal_vtbl_ptr_name) == 0);
> + return type_name != nullptr && streq (type_name, pascal_vtbl_ptr_name);
> }
>
> /* Return truth value for the assertion that TYPE is of the type
> diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
> index 2dd36786bd3b..19698eaacbe5 100644
> --- a/gdb/ppc-linux-tdep.c
> +++ b/gdb/ppc-linux-tdep.c
> @@ -341,8 +341,8 @@ ppc_linux_ilp32_svr4_solib_ops::in_dynsym_resolve_code (CORE_ADDR pc) const
> if (sym.minsym == nullptr)
> return false;
>
> - return (strcmp (sym.minsym->linkage_name (), "__glink") == 0
> - || strcmp (sym.minsym->linkage_name (), "__glink_PLTresolve") == 0);
> + return (streq (sym.minsym->linkage_name (), "__glink")
> + || streq (sym.minsym->linkage_name (), "__glink_PLTresolve"));
> }
>
> /* Follow PLT stub to actual routine.
> @@ -2009,14 +2009,14 @@ ppc_floatformat_for_type (struct gdbarch *gdbarch,
> {
> if (len == 128 && name)
> {
> - if (strcmp (name, "__float128") == 0
> - || strcmp (name, "_Float128") == 0
> - || strcmp (name, "_Float64x") == 0
> - || strcmp (name, "complex _Float128") == 0
> - || strcmp (name, "complex _Float64x") == 0)
> + if (streq (name, "__float128")
> + || streq (name, "_Float128")
> + || streq (name, "_Float64x")
> + || streq (name, "complex _Float128")
> + || streq (name, "complex _Float64x"))
> return floatformats_ieee_quad;
>
> - if (strcmp (name, "__ibm128") == 0)
> + if (streq (name, "__ibm128"))
> return floatformats_ibm_long_double;
> }
>
> @@ -2033,8 +2033,8 @@ linux_dwarf2_omit_typedef_p (struct type *target_type,
> {
> if ((target_type->code () == TYPE_CODE_FLT
> || target_type->code () == TYPE_CODE_COMPLEX)
> - && (strcmp (name, "long double") == 0
> - || strcmp (name, "complex long double") == 0))
> + && (streq (name, "long double")
> + || streq (name, "complex long double")))
> {
> /* IEEE 128-bit floating point and IBM long double are two
> encodings for 128-bit values. The DWARF debug data can't
> diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c
> index 74044097c6bd..9011a3546127 100644
> --- a/gdb/ppc64-tdep.c
> +++ b/gdb/ppc64-tdep.c
> @@ -752,7 +752,7 @@ ppc64_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
> const struct target_section *s = target_section_by_addr (targ, addr);
>
> /* Check if ADDR points to a function descriptor. */
> - if (s && strcmp (s->the_bfd_section->name, ".opd") == 0)
> + if (s && streq (s->the_bfd_section->name, ".opd"))
> {
> /* There may be relocations that need to be applied to the .opd
> section. Unfortunately, this function may be called at a time
> diff --git a/gdb/probe.c b/gdb/probe.c
> index 08c613bd9c7f..f9eb94d18829 100644
> --- a/gdb/probe.c
> +++ b/gdb/probe.c
> @@ -729,7 +729,7 @@ ignore_probes_command (const char *arg, int from_tty)
> const char *idx = arg;
> std::string s = extract_arg (&idx);
>
> - if (strcmp (s.c_str (), "-reset") == 0)
> + if (streq (s.c_str (), "-reset"))
> {
> if (*idx != '\0')
> error (_("-reset: no arguments allowed"));
> @@ -739,8 +739,7 @@ ignore_probes_command (const char *arg, int from_tty)
> return;
> }
>
> - if (strcmp (s.c_str (), "-verbose") == 0
> - || strcmp (s.c_str (), "-v") == 0)
> + if (streq (s.c_str (), "-verbose") || streq (s.c_str (), "-v"))
> {
> verbose_p = true;
> arg = idx;
> diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c
> index c5d3d7e2d7e7..03388812ff89 100644
> --- a/gdb/python/py-breakpoint.c
> +++ b/gdb/python/py-breakpoint.c
> @@ -1410,7 +1410,7 @@ local_setattro (PyObject *self, PyObject *name, PyObject *v)
> /* If the attribute trying to be set is the "stop" method,
> but we already have a condition set in the CLI or other extension
> language, disallow this operation. */
> - if (strcmp (attr.get (), stop_func) == 0)
> + if (streq (attr.get (), stop_func))
> {
> const struct extension_language_defn *extlang = NULL;
>
> diff --git a/gdb/python/py-lazy-string.c b/gdb/python/py-lazy-string.c
> index 26998064206e..fe191451e548 100644
> --- a/gdb/python/py-lazy-string.c
> +++ b/gdb/python/py-lazy-string.c
> @@ -231,7 +231,7 @@ gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
>
> str_obj->address = address;
> str_obj->length = length;
> - if (encoding == NULL || !strcmp (encoding, ""))
> + if (encoding == NULL || streq (encoding, ""))
> str_obj->encoding = NULL;
> else
> str_obj->encoding = xstrdup (encoding);
> diff --git a/gdb/python/py-micmd.c b/gdb/python/py-micmd.c
> index 0c820751c567..ab06e197d841 100644
> --- a/gdb/python/py-micmd.c
> +++ b/gdb/python/py-micmd.c
> @@ -144,8 +144,7 @@ struct mi_command_py : public mi_command
> than changing the value of mi_command::m_name (which is not accessible
> from here) to point to the name owned by the new object, swap the names
> of the two objects, since we know they are identical strings. */
> - gdb_assert (strcmp (new_pyobj->mi_command_name,
> - m_pyobj->mi_command_name) == 0);
> + gdb_assert (streq (new_pyobj->mi_command_name, m_pyobj->mi_command_name));
> std::swap (new_pyobj->mi_command_name, m_pyobj->mi_command_name);
>
> /* Take a reference to the new object, drop the reference to the current
> @@ -385,7 +384,7 @@ micmdpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
>
> So, for now at least, we don't allow this. This doesn't seem like
> an excessive restriction. */
> - if (strcmp (cmd->mi_command_name, name) != 0)
> + if (!streq (cmd->mi_command_name, name))
> {
> PyErr_SetString
> (PyExc_ValueError,
> diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
> index 8765b1b383d1..bc028f1746c6 100644
> --- a/gdb/python/py-param.c
> +++ b/gdb/python/py-param.c
> @@ -242,7 +242,7 @@ set_parameter_value (parmpy_object *self, PyObject *value)
> if (str == NULL)
> return -1;
> for (i = 0; self->enumeration[i]; ++i)
> - if (! strcmp (self->enumeration[i], str.get ()))
> + if (streq (self->enumeration[i], str.get ()))
> break;
> if (! self->enumeration[i])
> {
> @@ -328,8 +328,8 @@ set_parameter_value (parmpy_object *self, PyObject *value)
> buffer += ", ";
> buffer = buffer + "'" + l->literal + "'";
> if (allowed == TRIBOOL_UNKNOWN
> - && ((value == Py_None && !strcmp ("unlimited", l->literal))
> - || (s != nullptr && !strcmp (s, l->literal))))
> + && ((value == Py_None && streq ("unlimited", l->literal))
> + || (s != nullptr && streq (s, l->literal))))
> {
> val = l->use;
> allowed = TRIBOOL_TRUE;
> diff --git a/gdb/python/py-prettyprint.c b/gdb/python/py-prettyprint.c
> index 3dcb4fba1e48..0cf0cde881c4 100644
> --- a/gdb/python/py-prettyprint.c
> +++ b/gdb/python/py-prettyprint.c
> @@ -323,7 +323,7 @@ print_string_repr (PyObject *printer, const char *hint,
> length = PyBytes_Size (string.get ());
> type = builtin_type (gdbarch)->builtin_char;
>
> - if (hint && !strcmp (hint, "string"))
> + if (hint && streq (hint, "string"))
> language->printstr (stream, type, (gdb_byte *) output,
> length, NULL, 0, options);
> else
> @@ -370,8 +370,8 @@ print_children (PyObject *printer, const char *hint,
>
> /* If we are printing a map or an array, we want some special
> formatting. */
> - is_map = hint && ! strcmp (hint, "map");
> - is_array = hint && ! strcmp (hint, "array");
> + is_map = hint && streq (hint, "map");
> + is_array = hint && streq (hint, "array");
>
> gdbpy_ref<> children (PyObject_CallMethodObjArgs (printer, gdbpy_children_cst,
> NULL));
> diff --git a/gdb/python/py-style.c b/gdb/python/py-style.c
> index aa6eccaadbe3..d149d90aaa9f 100644
> --- a/gdb/python/py-style.c
> +++ b/gdb/python/py-style.c
> @@ -135,28 +135,27 @@ stylepy_style_from_name (const char *name, bool *has_intensity_ptr = nullptr,
> if (!sub->var.has_value ())
> continue;
>
> - if (strcmp (sub->name, "foreground") == 0)
> + if (streq (sub->name, "foreground"))
> {
> const ui_file_style::color &color
> = sub->var->get<ui_file_style::color> ();
> style.set_fg (color);
> has_fg = true;
> }
> - else if (strcmp (sub->name, "background") == 0)
> + else if (streq (sub->name, "background"))
> {
> const ui_file_style::color &color
> = sub->var->get<ui_file_style::color> ();
> style.set_bg (color);
> has_bg = true;
> }
> - else if (strcmp (sub->name, "intensity") == 0
> - && sub->var->type () == var_enum)
> + else if (streq (sub->name, "intensity") && sub->var->type () == var_enum)
> {
> const char *intensity_str = sub->var->get<const char *> ();
> ui_file_style::intensity intensity = ui_file_style::NORMAL;
> - if (strcmp (intensity_str, "bold") == 0)
> + if (streq (intensity_str, "bold"))
> intensity = ui_file_style::BOLD;
> - else if (strcmp (intensity_str, "dim") == 0)
> + else if (streq (intensity_str, "dim"))
> intensity = ui_file_style::DIM;
> style.set_intensity (intensity);
> has_intensity = true;
> diff --git a/gdb/python/python.c b/gdb/python/python.c
> index 5474b8d644f8..6e13ab5bb3f7 100644
> --- a/gdb/python/python.c
> +++ b/gdb/python/python.c
> @@ -552,7 +552,7 @@ gdbpy_parameter_value (const setting &var)
> l++)
> if (value == l->use)
> {
> - if (strcmp (l->literal, "unlimited") == 0)
> + if (streq (l->literal, "unlimited"))
> {
> /* Compatibility hack for API brokenness. */
> if (var.type () == var_pinteger
> diff --git a/gdb/record.c b/gdb/record.c
> index 84a649c9e4e9..c01a1fd2bcf1 100644
> --- a/gdb/record.c
> +++ b/gdb/record.c
> @@ -103,20 +103,20 @@ record_start (const char *method, const char *format, int from_tty)
> else
> error (_("Invalid format."));
> }
> - else if (strcmp (method, "full") == 0)
> + else if (streq (method, "full"))
> {
> if (format == NULL)
> execute_command_to_string ("record full", from_tty, false);
> else
> error (_("Invalid format."));
> }
> - else if (strcmp (method, "btrace") == 0)
> + else if (streq (method, "btrace"))
> {
> if (format == NULL)
> execute_command_to_string ("record btrace", from_tty, false);
> - else if (strcmp (format, "bts") == 0)
> + else if (streq (format, "bts"))
> execute_command_to_string ("record btrace bts", from_tty, false);
> - else if (strcmp (format, "pt") == 0)
> + else if (streq (format, "pt"))
> execute_command_to_string ("record btrace pt", from_tty, false);
> else
> error (_("Invalid format."));
> @@ -561,9 +561,9 @@ cmd_record_insn_history (const char *arg, int from_tty)
>
> int size = command_size_to_target_size (record_insn_history_size);
>
> - if (arg == NULL || *arg == 0 || strcmp (arg, "+") == 0)
> + if (arg == NULL || *arg == 0 || streq (arg, "+"))
> target_insn_history (size, flags);
> - else if (strcmp (arg, "-") == 0)
> + else if (streq (arg, "-"))
> target_insn_history (-size, flags);
> else
> {
> @@ -678,9 +678,9 @@ cmd_record_call_history (const char *arg, int from_tty)
>
> int size = command_size_to_target_size (record_call_history_size);
>
> - if (arg == NULL || *arg == 0 || strcmp (arg, "+") == 0)
> + if (arg == NULL || *arg == 0 || streq (arg, "+"))
> target_call_history (size, flags);
> - else if (strcmp (arg, "-") == 0)
> + else if (streq (arg, "-"))
> target_call_history (-size, flags);
> else
> {
> diff --git a/gdb/regformats/regdef.h b/gdb/regformats/regdef.h
> index e2ef0a0b6905..dc6d8f97126f 100644
> --- a/gdb/regformats/regdef.h
> +++ b/gdb/regformats/regdef.h
> @@ -51,7 +51,7 @@ struct reg
>
> bool operator== (const reg &other) const
> {
> - return (strcmp (name, other.name) == 0
> + return (streq (name, other.name)
> && offset == other.offset
> && size == other.size);
> }
> diff --git a/gdb/reggroups.c b/gdb/reggroups.c
> index d5af2ce0736b..9619aac2b8c6 100644
> --- a/gdb/reggroups.c
> +++ b/gdb/reggroups.c
> @@ -170,7 +170,7 @@ reggroup_find (struct gdbarch *gdbarch, const char *name)
> {
> for (const struct reggroup *group : gdbarch_reggroups (gdbarch))
> {
> - if (strcmp (name, group->name ()) == 0)
> + if (streq (name, group->name ()))
> return group;
> }
> return NULL;
> diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c
> index 30afc3737ab8..0b56e1ddca93 100644
> --- a/gdb/remote-fileio.c
> +++ b/gdb/remote-fileio.c
> @@ -1072,7 +1072,7 @@ do_remote_fileio_request (remote_target *remote, char *buf)
> else
> c = strchr (buf, '\0');
> for (idx = 0; remote_fio_func_map[idx].name; ++idx)
> - if (!strcmp (remote_fio_func_map[idx].name, buf))
> + if (streq (remote_fio_func_map[idx].name, buf))
> break;
> if (!remote_fio_func_map[idx].name)
> remote_fileio_reply (remote, -1, FILEIO_ENOSYS);
> diff --git a/gdb/remote.c b/gdb/remote.c
> index 88b06e688bc6..46bc584b27dc 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -2432,11 +2432,9 @@ set_memory_packet_size (const char *args, struct memory_packet_config *config,
>
> if (args == NULL)
> error (_("Argument required (integer, \"fixed\" or \"limit\")."));
> - else if (strcmp (args, "hard") == 0
> - || strcmp (args, "fixed") == 0)
> + else if (streq (args, "hard") || streq (args, "fixed"))
> fixed_p = 1;
> - else if (strcmp (args, "soft") == 0
> - || strcmp (args, "limit") == 0)
> + else if (streq (args, "soft") || streq (args, "limit"))
> fixed_p = 0;
> else
> {
> @@ -3053,7 +3051,7 @@ remote_target::remote_query_attached (int pid)
> switch (result.status ())
> {
> case PACKET_OK:
> - if (strcmp (rs->buf.data (), "1") == 0)
> + if (streq (rs->buf.data (), "1"))
> return 1;
> break;
> case PACKET_ERROR:
> @@ -3351,7 +3349,7 @@ remote_target::pass_signals (gdb::array_view<const unsigned char> pass_signals)
> }
> }
> *p = 0;
> - if (!rs->last_pass_packet || strcmp (rs->last_pass_packet, pass_packet))
> + if (!rs->last_pass_packet || !streq (rs->last_pass_packet, pass_packet))
> {
> putpkt (pass_packet);
> getpkt (&rs->buf);
> @@ -3471,7 +3469,7 @@ remote_target::program_signals (gdb::array_view<const unsigned char> signals)
> }
> *p = 0;
> if (!rs->last_program_signals_packet
> - || strcmp (rs->last_program_signals_packet, packet) != 0)
> + || !streq (rs->last_program_signals_packet, packet))
> {
> putpkt (packet);
> getpkt (&rs->buf);
> @@ -5531,12 +5529,12 @@ remote_target::start_remote_1 (int from_tty, int extended_p)
>
> putpkt (v_mustreplyempty);
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") == 0)
> + if (streq (rs->buf.data (), "OK"))
> {
> m_features.m_protocol_packets[PACKET_vFile_setfs].support
> = PACKET_DISABLE;
> }
> - else if (strcmp (rs->buf.data (), "") != 0)
> + else if (!streq (rs->buf.data (), ""))
> error (_("Remote replied unexpectedly to '%s': %s"), v_mustreplyempty,
> rs->buf.data ());
> }
> @@ -5631,7 +5629,7 @@ remote_target::start_remote_1 (int from_tty, int extended_p)
> putpkt ("QNonStop:1");
> getpkt (&rs->buf);
>
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Remote refused setting non-stop mode with: %s"),
> rs->buf.data ());
>
> @@ -5648,7 +5646,7 @@ remote_target::start_remote_1 (int from_tty, int extended_p)
> putpkt ("QNonStop:0");
> getpkt (&rs->buf);
>
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Remote refused setting all-stop mode with: %s"),
> rs->buf.data ());
> }
> @@ -5775,7 +5773,7 @@ remote_target::start_remote_1 (int from_tty, int extended_p)
> reply. In the latter case, there may be more than one thread
> stopped --- we pull them all out using the vStopped
> mechanism. */
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> {
> const notif_client *notif = &notif_client_stop;
>
> @@ -6015,7 +6013,7 @@ remote_target::set_permissions ()
>
> /* If the target didn't like the packet, warn the user. Do not try
> to undo the user's settings, that would just be maddening. */
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Remote refused setting permissions with: %s"),
> rs->buf.data ());
> }
> @@ -6284,7 +6282,7 @@ register_remote_support_xml (const char *xml)
>
> do
> {
> - if (strcmp (p, xml) == 0)
> + if (streq (p, xml))
> {
> /* already there */
> xfree (copy);
> @@ -6473,7 +6471,7 @@ remote_target::remote_query_supported ()
> }
>
> for (i = 0; i < ARRAY_SIZE (remote_protocol_features); i++)
> - if (strcmp (remote_protocol_features[i].name, p) == 0)
> + if (streq (remote_protocol_features[i].name, p))
> {
> const struct protocol_feature *feature;
>
> @@ -7086,7 +7084,7 @@ extended_remote_target::attach (const char *args, int from_tty)
> wait_status = (char *) alloca (strlen (rs->buf.data ()) + 1);
> strcpy (wait_status, rs->buf.data ());
> }
> - else if (strcmp (rs->buf.data (), "OK") != 0)
> + else if (!streq (rs->buf.data (), "OK"))
> error (_("Attaching to %s failed with: %s"),
> target_pid_to_str (ptid_t (pid)).c_str (),
> rs->buf.data ());
> @@ -7457,7 +7455,7 @@ remote_target::remote_resume_with_vcont (ptid_t scope_ptid, int step,
> reply will be reported asynchronously by means of a `%Stop'
> notification. */
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Unexpected vCont reply in non-stop mode: %s"),
> rs->buf.data ());
> }
> @@ -7609,7 +7607,7 @@ vcont_builder::flush ()
> rs = m_remote->get_remote_state ();
> m_remote->putpkt (rs->buf);
> m_remote->getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Unexpected vCont reply in non-stop mode: %s"), rs->buf.data ());
> }
>
> @@ -7973,7 +7971,7 @@ remote_target::remote_stop_ns (ptid_t ptid)
> come in asynchronously by notification. */
> putpkt (rs->buf);
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Stopping %s failed: %s"), target_pid_to_str (ptid).c_str (),
> rs->buf.data ());
> }
> @@ -8841,7 +8839,7 @@ remote_target::remote_notif_get_pending_events (const notif_client *nc)
> while (1)
> {
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") == 0)
> + if (streq (rs->buf.data (), "OK"))
> break;
> else
> remote_notif_ack (this, nc, rs->buf.data ());
> @@ -11237,7 +11235,7 @@ remote_target::extended_remote_disable_randomization (int val)
> reply = remote_get_noisy_reply ();
> if (*reply == '\0')
> error (_("Target does not support QDisableRandomization."));
> - if (strcmp (reply, "OK") != 0)
> + if (!streq (reply, "OK"))
> error (_("Bogus QDisableRandomization reply from target: %s"), reply);
> }
>
> @@ -11332,7 +11330,7 @@ remote_target::send_environment_packet (const char *action,
>
> putpkt (rs->buf);
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Unable to %s environment variable '%s' on remote."),
> action, value);
> }
> @@ -11348,7 +11346,7 @@ remote_target::extended_remote_environment_support ()
> {
> putpkt ("QEnvironmentReset");
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Unable to reset environment on remote."));
> }
>
> @@ -11525,7 +11523,7 @@ extended_remote_target::create_inferior (const char *exec_file,
> "QStartupWithShell:%d", startup_with_shell ? 1 : 0);
> putpkt (rs->buf);
> getpkt (&rs->buf);
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("\
> Remote replied unexpectedly while setting startup-with-shell: %s"),
> rs->buf.data ());
> @@ -12083,7 +12081,7 @@ compare_sections_command (const char *args, int from_tty)
> if (!current_program_space->exec_bfd ())
> error (_("command cannot be used without an exec file"));
>
> - if (args != NULL && strcmp (args, "-r") == 0)
> + if (args != NULL && streq (args, "-r"))
> {
> read_only = 1;
> args = NULL;
> @@ -12102,7 +12100,7 @@ compare_sections_command (const char *args, int from_tty)
> continue; /* Skip zero-length section. */
>
> sectname = bfd_section_name (s);
> - if (args && strcmp (args, sectname) != 0)
> + if (args && !streq (args, sectname))
> continue; /* Not the section selected by user. */
>
> matched = 1; /* Do this section. */
> @@ -12203,8 +12201,8 @@ remote_target::remote_read_qxfer (const char *object_name,
> this request. */
> if (rs->finished_object)
> {
> - if (strcmp (object_name, rs->finished_object) == 0
> - && strcmp (annex ? annex : "", rs->finished_annex) == 0
> + if (streq (object_name, rs->finished_object)
> + && streq (annex ? annex : "", rs->finished_annex)
> && offset == rs->finished_offset)
> return TARGET_XFER_EOF;
>
> @@ -12633,7 +12631,7 @@ remote_target::rcmd (const char *command, struct ui_file *outbuf)
> break;
> }
>
> - if (strcmp (buf, "OK") != 0)
> + if (!streq (buf, "OK"))
> {
> for (p = buf; p[0] != '\0' && p[1] != '\0'; p += 2)
> {
> @@ -14241,7 +14239,7 @@ remote_target::trace_init ()
>
> putpkt ("QTinit");
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Target does not support this command."));
> }
>
> @@ -14264,7 +14262,7 @@ remote_target::remote_download_command_source (int num, ULONGEST addr,
> rs->buf.size () - strlen (rs->buf.data ()));
> putpkt (rs->buf);
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Target does not support source download."));
>
> if (cmd->control_type == while_control
> @@ -14279,7 +14277,7 @@ remote_target::remote_download_command_source (int num, ULONGEST addr,
> rs->buf.size () - strlen (rs->buf.data ()));
> putpkt (rs->buf);
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Target does not support source download."));
> }
> }
> @@ -14426,7 +14424,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
>
> putpkt (buf.data ());
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Target does not support tracepoints."));
>
> /* do_single_steps (t); */
> @@ -14448,7 +14446,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
>
> putpkt (buf.data ());
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Error on target while setting tracepoints."));
> }
>
> @@ -14471,7 +14469,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
>
> putpkt (buf.data ());
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Error on target while setting tracepoints."));
> }
>
> @@ -14490,7 +14488,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
> buf.size () - strlen (buf.data ()));
> putpkt (buf.data ());
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Target does not support source download."));
> }
> if (b->cond_string)
> @@ -14506,7 +14504,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
> buf.size () - strlen (buf.data ()));
> putpkt (buf.data ());
> remote_get_noisy_reply ();
> - if (strcmp (rs->buf.data (), "OK"))
> + if (!streq (rs->buf.data (), "OK"))
> warning (_("Target does not support source download."));
> }
> remote_download_command_source (b->number, loc->address,
> @@ -14561,7 +14559,7 @@ remote_target::download_trace_state_variable (const trace_state_variable &tsv)
> remote_get_noisy_reply ();
> if (rs->buf[0] == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Error on target while downloading trace state variable."));
> }
>
> @@ -14577,7 +14575,7 @@ remote_target::enable_tracepoint (struct bp_location *location)
> remote_get_noisy_reply ();
> if (rs->buf[0] == '\0')
> error (_("Target does not support enabling tracepoints while a trace run is ongoing."));
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Error on target while enabling tracepoint."));
> }
>
> @@ -14593,7 +14591,7 @@ remote_target::disable_tracepoint (struct bp_location *location)
> remote_get_noisy_reply ();
> if (rs->buf[0] == '\0')
> error (_("Target does not support disabling tracepoints while a trace run is ongoing."));
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Error on target while disabling tracepoint."));
> }
>
> @@ -14658,7 +14656,7 @@ remote_target::trace_start ()
> remote_get_noisy_reply ();
> if (rs->buf[0] == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Bogus reply from target: %s"), rs->buf.data ());
> }
>
> @@ -14770,7 +14768,7 @@ remote_target::trace_stop ()
> remote_get_noisy_reply ();
> if (rs->buf[0] == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Bogus reply from target: %s"), rs->buf.data ());
> }
>
> @@ -14898,7 +14896,7 @@ remote_target::save_trace_data (const char *filename)
> reply = remote_get_noisy_reply ();
> if (*reply == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (reply, "OK") != 0)
> + if (!streq (reply, "OK"))
> error (_("Bogus reply from target: %s"), reply);
> return 0;
> }
> @@ -14962,7 +14960,7 @@ remote_target::set_disconnected_tracing (int val)
> reply = remote_get_noisy_reply ();
> if (*reply == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (reply, "OK") != 0)
> + if (!streq (reply, "OK"))
> error (_("Bogus reply from target: %s"), reply);
> }
> else if (val)
> @@ -14992,7 +14990,7 @@ remote_target::set_circular_trace_buffer (int val)
> reply = remote_get_noisy_reply ();
> if (*reply == '\0')
> error (_("Target does not support this command."));
> - if (strcmp (reply, "OK") != 0)
> + if (!streq (reply, "OK"))
> error (_("Bogus reply from target: %s"), reply);
> }
>
> @@ -15117,7 +15115,7 @@ remote_target::set_trace_notes (const char *user, const char *notes,
> if (*reply == '\0')
> return false;
>
> - if (strcmp (reply, "OK") != 0)
> + if (!streq (reply, "OK"))
> error (_("Bogus reply from target: %s"), reply);
>
> return true;
> @@ -15135,7 +15133,7 @@ remote_target::use_agent (bool use)
> putpkt (rs->buf);
> getpkt (&rs->buf);
>
> - if (strcmp (rs->buf.data (), "OK") == 0)
> + if (streq (rs->buf.data (), "OK"))
> {
> ::use_agent = use;
> return true;
> @@ -15164,7 +15162,7 @@ check_xml_btrace_version (struct gdb_xml_parser *parser,
> const char *version
> = (const char *) xml_find_attribute (attributes, "version")->value.get ();
>
> - if (strcmp (version, "1.0") != 0)
> + if (!streq (version, "1.0"))
> gdb_xml_error (parser, _("Unsupported btrace version: \"%s\""), version);
> }
>
> @@ -15260,7 +15258,7 @@ parse_xml_btrace_pt_config_cpu (struct gdb_xml_parser *parser,
>
> btrace = (struct btrace_data *) user_data;
>
> - if (strcmp (vendor, "GenuineIntel") == 0)
> + if (streq (vendor, "GenuineIntel"))
> btrace->variant.pt.config.cpu.vendor = CV_INTEL;
>
> btrace->variant.pt.config.cpu.family = *family;
> @@ -16017,7 +16015,7 @@ remote_target::thread_events (bool enable)
> switch (result.status ())
> {
> case PACKET_OK:
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Remote refused setting thread events: %s"), rs->buf.data ());
> rs->last_thread_events = enable;
> break;
> @@ -16073,7 +16071,7 @@ remote_target::commit_requested_thread_options ()
> switch (result.status ())
> {
> case PACKET_OK:
> - if (strcmp (rs->buf.data (), "OK") != 0)
> + if (!streq (rs->buf.data (), "OK"))
> error (_("Remote refused setting thread options: %s"), rs->buf.data ());
> break;
> case PACKET_ERROR:
> @@ -16150,7 +16148,7 @@ show_remote_cmd (const char *args, int from_tty)
> ui_out_emit_tuple tuple_emitter (uiout, "showlist");
> const ui_file_style cmd_style = command_style.style ();
> for (; list != NULL; list = list->next)
> - if (strcmp (list->name, "Z-packet") == 0)
> + if (streq (list->name, "Z-packet"))
> continue;
> else if (list->type == not_set_cmd)
> /* Alias commands are exactly like the original, except they
> @@ -16562,11 +16560,11 @@ test_memory_tagging_functions ()
>
> expected = "qMemTags:0,0:0";
> create_fetch_memtags_request (packet, 0x0, 0x0, 0);
> - SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0);
> + SELF_CHECK (streq (packet.data (), expected.c_str ()));
>
> expected = "qMemTags:deadbeef,10:1";
> create_fetch_memtags_request (packet, 0xdeadbeef, 16, 1);
> - SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0);
> + SELF_CHECK (streq (packet.data (), expected.c_str ()));
>
> /* Test parsing a qMemTags reply. */
>
> @@ -16614,7 +16612,7 @@ test_memory_tagging_functions ()
> /* Test creating a qIsAddressTagged request. */
> expected = "qIsAddressTagged:deadbeef";
> create_is_address_tagged_request (gdbarch, packet, 0xdeadbeef);
> - SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0);
> + SELF_CHECK (streq (packet.data (), expected.c_str ()));
>
> /* Test error reply on qIsAddressTagged request. */
> reply = "E00";
> @@ -16684,11 +16682,11 @@ test_packet_check_result ()
> packet_result result = packet_check_result (buf.data ());
>
> SELF_CHECK (result.status () == PACKET_ERROR);
> - SELF_CHECK (strcmp(result.err_msg (), "msg") == 0);
> + SELF_CHECK (streq (result.err_msg (), "msg"));
>
> result = packet_check_result ("E01");
> SELF_CHECK (result.status () == PACKET_ERROR);
> - SELF_CHECK (strcmp(result.err_msg (), "01") == 0);
> + SELF_CHECK (streq (result.err_msg (), "01"));
>
> SELF_CHECK (packet_check_result ("E1").status () == PACKET_OK);
>
> @@ -16696,7 +16694,7 @@ test_packet_check_result ()
>
> result = packet_check_result ("E.");
> SELF_CHECK (result.status () == PACKET_ERROR);
> - SELF_CHECK (strcmp(result.err_msg (), "no error provided") == 0);
> + SELF_CHECK (streq (result.err_msg (), "no error provided"));
>
> SELF_CHECK (packet_check_result ("some response").status () == PACKET_OK);
>
> diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
> index 8b06566582c5..4dfbd2ec2b86 100644
> --- a/gdb/riscv-tdep.c
> +++ b/gdb/riscv-tdep.c
> @@ -1114,8 +1114,8 @@ riscv_register_type (struct gdbarch *gdbarch, int regnum)
> if (flen == 8
> && type->code () == TYPE_CODE_FLT
> && type->length () == flen
> - && (strcmp (type->name (), "builtin_type_ieee_double") == 0
> - || strcmp (type->name (), "double") == 0))
> + && (streq (type->name (), "builtin_type_ieee_double")
> + || streq (type->name (), "double")))
> type = riscv_fpreg_d_type (gdbarch);
> }
>
> @@ -4103,16 +4103,16 @@ riscv_tdesc_unknown_reg (struct gdbarch *gdbarch, tdesc_feature *feature,
> number that GDB has assigned them. Then in riscv_register_name we will
> return no name for the three duplicates, this hides the duplicates from
> the user. */
> - if (strcmp (tdesc_feature_name (feature), riscv_freg_feature.name ()) == 0)
> + if (streq (tdesc_feature_name (feature), riscv_freg_feature.name ()))
> {
> riscv_gdbarch_tdep *tdep = gdbarch_tdep<riscv_gdbarch_tdep> (gdbarch);
> int *regnum_ptr = nullptr;
>
> - if (strcmp (reg_name, "fflags") == 0)
> + if (streq (reg_name, "fflags"))
> regnum_ptr = &tdep->duplicate_fflags_regnum;
> - else if (strcmp (reg_name, "frm") == 0)
> + else if (streq (reg_name, "frm"))
> regnum_ptr = &tdep->duplicate_frm_regnum;
> - else if (strcmp (reg_name, "fcsr") == 0)
> + else if (streq (reg_name, "fcsr"))
> regnum_ptr = &tdep->duplicate_fcsr_regnum;
>
> if (regnum_ptr != nullptr)
> @@ -4134,7 +4134,7 @@ riscv_tdesc_unknown_reg (struct gdbarch *gdbarch, tdesc_feature *feature,
> /* Any unknown registers in the CSR feature are recorded within a single
> block so we can easily identify these registers when making choices
> about register groups in riscv_register_reggroup_p. */
> - if (strcmp (tdesc_feature_name (feature), riscv_csr_feature.name ()) == 0)
> + if (streq (tdesc_feature_name (feature), riscv_csr_feature.name ()))
> {
> riscv_gdbarch_tdep *tdep = gdbarch_tdep<riscv_gdbarch_tdep> (gdbarch);
> if (tdep->unknown_csrs_first_regnum == -1)
> diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
> index 2c628408b41d..e135df94a406 100644
> --- a/gdb/rs6000-tdep.c
> +++ b/gdb/rs6000-tdep.c
> @@ -2173,7 +2173,7 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
>
> tmp = find_pc_misc_function (pc);
> if (tmp >= 0
> - && strcmp (misc_function_vector[tmp].name, main_name ()) == 0)
> + && streq (misc_function_vector[tmp].name, main_name ()))
> return pc + 8;
> }
> }
> @@ -2250,10 +2250,10 @@ rs6000_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
> /* We check for ___eabi (three leading underscores) in addition
> to __eabi in case the GCC option "-fleading-underscore" was
> used to compile the program. */
> - if (s.minsym != NULL
> - && s.minsym->linkage_name () != NULL
> - && (strcmp (s.minsym->linkage_name (), "__eabi") == 0
> - || strcmp (s.minsym->linkage_name (), "___eabi") == 0))
> + if (s.minsym != nullptr
> + && s.minsym->linkage_name () != nullptr
> + && (streq (s.minsym->linkage_name (), "__eabi")
> + || streq (s.minsym->linkage_name (), "___eabi")))
> pc += 4;
> }
> return pc;
> @@ -4098,8 +4098,7 @@ bfd_uses_spe_extensions (bfd *abfd)
> ptr += 12;
>
> /* The name must be "APUinfo\0". */
> - if (name_len != 8
> - && strcmp ((const char *) ptr, "APUinfo") != 0)
> + if (name_len != 8 && !streq ((const char *) ptr, "APUinfo"))
> break;
> ptr += name_len;
>
> @@ -8549,8 +8548,7 @@ powerpc_set_vector_abi (const char *args, int from_tty,
> for (vector_abi = POWERPC_VEC_AUTO;
> vector_abi != POWERPC_VEC_LAST;
> vector_abi++)
> - if (strcmp (powerpc_vector_abi_string,
> - powerpc_vector_strings[vector_abi]) == 0)
> + if (streq (powerpc_vector_abi_string, powerpc_vector_strings[vector_abi]))
> {
> powerpc_vector_abi_global = (enum powerpc_vector_abi) vector_abi;
> break;
> diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
> index 9f5c01afda49..522b20c97ff4 100644
> --- a/gdb/rust-lang.c
> +++ b/gdb/rust-lang.c
> @@ -138,7 +138,7 @@ rust_underscore_fields (struct type *type)
> const char *field_name = field.name ();
> if (startswith (field_name, "__"))
> field_name += 2;
> - if (strcmp (buf, field_name) != 0)
> + if (!streq (buf, field_name))
> return false;
> field_number++;
> }
> @@ -192,7 +192,7 @@ rust_range_type_p (struct type *type)
> return true;
>
> int field_num = 0;
> - if (strcmp (type->field (0).name (), "start") == 0)
> + if (streq (type->field (0).name (), "start"))
> {
> if (type->num_fields () == 1)
> return true;
> @@ -204,7 +204,7 @@ rust_range_type_p (struct type *type)
> return false;
> }
>
> - return strcmp (type->field (field_num).name (), "end") == 0;
> + return streq (type->field (field_num).name (), "end");
> }
>
> /* Return true if TYPE is an inclusive range type, otherwise false.
> @@ -254,9 +254,9 @@ rust_get_trait_object_pointer (struct value *value)
> int vtable_field = 0;
> for (int i = 0; i < 2; ++i)
> {
> - if (strcmp (type->field (i).name (), "vtable") == 0)
> + if (streq (type->field (i).name (), "vtable"))
> vtable_field = i;
> - else if (strcmp (type->field (i).name (), "pointer") != 0)
> + else if (!streq (type->field (i).name (), "pointer"))
> return NULL;
> }
>
> @@ -379,7 +379,7 @@ rust_array_like_element_type (struct type *type)
> gdb_assert (rust_slice_type_p (type));
> for (const auto &field : type->fields ())
> {
> - if (strcmp (field.name (), "data_ptr") == 0)
> + if (streq (field.name (), "data_ptr"))
> {
> struct type *base_type = field.type ()->target_type ();
> if (rewrite_slice_type (base_type, nullptr, 0, nullptr))
> @@ -527,8 +527,7 @@ rust_language::val_print_slice
>
> /* &str is handled here; but for all other slice types it is fine to
> simply print the contents. */
> - if (orig_type->name () != nullptr
> - && strcmp (orig_type->name (), "&str") == 0)
> + if (orig_type->name () != nullptr && streq (orig_type->name (), "&str"))
> {
> LONGEST low_bound, high_bound;
> if (get_array_bounds (type, &low_bound, &high_bound))
> @@ -760,8 +759,10 @@ rust_language::value_print_inner
>
> case TYPE_CODE_INT:
> /* Recognize the unit type. */
> - if (type->is_unsigned () && type->length () == 0
> - && type->name () != NULL && strcmp (type->name (), "()") == 0)
> + if (type->is_unsigned ()
> + && type->length () == 0
> + && type->name () != nullptr
> + && streq (type->name (), "()"))
> {
> gdb_puts ("()", stream);
> break;
> @@ -1323,14 +1324,13 @@ rust_compute_range (struct type *type, struct value *range,
> return;
>
> i = 0;
> - if (strcmp (type->field (0).name (), "start") == 0)
> + if (streq (type->field (0).name (), "start"))
> {
> *kind = RANGE_HIGH_BOUND_DEFAULT;
> *low = value_as_long (range->field (0));
> ++i;
> }
> - if (type->num_fields () > i
> - && strcmp (type->field (i).name (), "end") == 0)
> + if (type->num_fields () > i && streq (type->field (i).name (), "end"))
> {
> *kind = (*kind == (RANGE_LOW_BOUND_DEFAULT | RANGE_HIGH_BOUND_DEFAULT)
> ? RANGE_LOW_BOUND_DEFAULT : RANGE_STANDARD);
> @@ -1874,7 +1874,7 @@ rust_language::is_string_type_p (struct type *type) const
> || (type->code () == TYPE_CODE_STRUCT
> && !rust_enum_p (type)
> && rust_slice_type_p (type)
> - && strcmp (type->name (), "&str") == 0));
> + && streq (type->name (), "&str")));
> }
>
> /* See language.h. */
> diff --git a/gdb/rust-parse.c b/gdb/rust-parse.c
> index 9fc9a438a489..0c4f2a501abc 100644
> --- a/gdb/rust-parse.c
> +++ b/gdb/rust-parse.c
> @@ -2211,7 +2211,7 @@ rust_lex_exception_test (rust_parser *parser, const char *input,
> }
> catch (const gdb_exception_error &except)
> {
> - SELF_CHECK (strcmp (except.what (), err) == 0);
> + SELF_CHECK (streq (except.what (), err));
> }
> }
>
> diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
> index aed7ae6b9b4c..f9d7bdd04e41 100644
> --- a/gdb/s390-tdep.c
> +++ b/gdb/s390-tdep.c
> @@ -1638,7 +1638,7 @@ s390_address_class_name_to_type_flags (struct gdbarch *gdbarch,
> const char *name,
> type_instance_flags *type_flags_ptr)
> {
> - if (strcmp (name, "mode32") == 0)
> + if (streq (name, "mode32"))
> {
> *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
> return true;
> diff --git a/gdb/selftest-arch.c b/gdb/selftest-arch.c
> index f52864e99fa4..f8e28f89eca9 100644
> --- a/gdb/selftest-arch.c
> +++ b/gdb/selftest-arch.c
> @@ -27,13 +27,13 @@ namespace selftests {
>
> static bool skip_arch (const char *arch)
> {
> - if (strcmp ("powerpc:EC603e", arch) == 0
> - || strcmp ("powerpc:e500mc", arch) == 0
> - || strcmp ("powerpc:e500mc64", arch) == 0
> - || strcmp ("powerpc:titan", arch) == 0
> - || strcmp ("powerpc:vle", arch) == 0
> - || strcmp ("powerpc:e5500", arch) == 0
> - || strcmp ("powerpc:e6500", arch) == 0)
> + if (streq ("powerpc:EC603e", arch)
> + || streq ("powerpc:e500mc", arch)
> + || streq ("powerpc:e500mc64", arch)
> + || streq ("powerpc:titan", arch)
> + || streq ("powerpc:vle", arch)
> + || streq ("powerpc:e5500", arch)
> + || streq ("powerpc:e6500", arch))
> {
> /* PR 19797 */
> return true;
> @@ -122,9 +122,9 @@ selftest_skip_warning_arch (struct gdbarch *gdbarch)
> Stack backtrace will not work.
> We could instead capture the output and then filter out the warning, but
> that seems more trouble than it's worth. */
> - return (strcmp (name, "m68hc11") == 0
> - || strcmp (name, "m68hc12") == 0
> - || strcmp (name, "m68hc12:HCS12") == 0);
> + return (streq (name, "m68hc11")
> + || streq (name, "m68hc12")
> + || streq (name, "m68hc12:HCS12"));
> }
>
> } /* namespace selftests */
> diff --git a/gdb/serial.c b/gdb/serial.c
> index f034c1c94ebb..5624f84e996b 100644
> --- a/gdb/serial.c
> +++ b/gdb/serial.c
> @@ -142,7 +142,7 @@ static const struct serial_ops *
> serial_interface_lookup (const char *name)
> {
> for (const serial_ops *ops : serial_ops_list)
> - if (strcmp (name, ops->name) == 0)
> + if (streq (name, ops->name))
> return ops;
>
> return NULL;
> diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
> index 0b6dc1111945..8ef2ae5e7da5 100644
> --- a/gdb/sh-tdep.c
> +++ b/gdb/sh-tdep.c
> @@ -392,7 +392,7 @@ sh_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
> *size = kind;
>
> /* For remote stub targets, trapa #20 is used. */
> - if (strcmp (target_shortname (), "remote") == 0)
> + if (streq (target_shortname (), "remote"))
> {
> static unsigned char big_remote_breakpoint[] = { 0xc3, 0x20 };
> static unsigned char little_remote_breakpoint[] = { 0x20, 0xc3 };
> diff --git a/gdb/sol2-tdep.c b/gdb/sol2-tdep.c
> index 8545ae60da47..d45de5016660 100644
> --- a/gdb/sol2-tdep.c
> +++ b/gdb/sol2-tdep.c
> @@ -43,9 +43,10 @@
> static int
> sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name)
> {
> - return (name && (strcmp (name, "sigacthandler") == 0
> - || strcmp (name, "ucbsigvechandler") == 0
> - || strcmp (name, "__sighndlr") == 0));
> + return (name != nullptr
> + && (streq (name, "sigacthandler")
> + || streq (name, "ucbsigvechandler")
> + || streq (name, "__sighndlr")));
> }
>
> /* Return whether THIS_FRAME corresponds to a Solaris sigtramp routine. */
> diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c
> index b7daec8ff90b..d4367973ad59 100644
> --- a/gdb/solib-aix.c
> +++ b/gdb/solib-aix.c
> @@ -167,7 +167,7 @@ library_list_start_list (struct gdb_xml_parser *parser,
> char *version
> = (char *) xml_find_attribute (attributes, "version")->value.get ();
>
> - if (strcmp (version, "1.0") != 0)
> + if (!streq (version, "1.0"))
> gdb_xml_error (parser,
> _("Library list has unsupported version \"%s\""),
> version);
> @@ -329,7 +329,7 @@ aix_solib_ops::relocate_section_addresses (solib &so,
> const char *section_name = bfd_section_name (bfd_sect);
> auto *info = gdb::checked_static_cast<lm_info_aix *> (so.lm_info.get ());
>
> - if (strcmp (section_name, ".text") == 0)
> + if (streq (section_name, ".text"))
> {
> sec->addr = info->text_addr;
> sec->endaddr = sec->addr + info->text_size;
> @@ -338,12 +338,12 @@ aix_solib_ops::relocate_section_addresses (solib &so,
> XCOFF headers, so we need to adjust by this much. */
> sec->addr += bfd_sect->filepos;
> }
> - else if (strcmp (section_name, ".data") == 0)
> + else if (streq (section_name, ".data"))
> {
> sec->addr = info->data_addr;
> sec->endaddr = sec->addr + info->data_size;
> }
> - else if (strcmp (section_name, ".bss") == 0)
> + else if (streq (section_name, ".bss"))
> {
> /* The information provided by the loader does not include
> the address of the .bss section, but we know that it gets
> @@ -615,7 +615,7 @@ static struct obj_section *
> data_obj_section_from_objfile (struct objfile *objfile)
> {
> for (obj_section &osect : objfile->sections ())
> - if (strcmp (bfd_section_name (osect.the_bfd_section), ".data") == 0)
> + if (streq (bfd_section_name (osect.the_bfd_section), ".data"))
> return &osect;
>
> return NULL;
> diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c
> index aaa34ec0764e..3412f6629102 100644
> --- a/gdb/solib-darwin.c
> +++ b/gdb/solib-darwin.c
> @@ -174,7 +174,7 @@ lookup_symbol_from_bfd (bfd *abfd, const char *symname)
>
> for (const asymbol *sym : symbol_table)
> {
> - if (strcmp (sym->name, symname) == 0
> + if (streq (sym->name, symname)
> && (sym->section->flags & (SEC_CODE | SEC_DATA)) != 0)
> {
> /* BFD symbols are section relative. */
> diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c
> index 3ad6f5ab2f3e..052b170fd9a6 100644
> --- a/gdb/solib-dsbt.c
> +++ b/gdb/solib-dsbt.c
> @@ -756,7 +756,7 @@ enable_break (void)
> (tmp_bfd.get (),
> [] (const asymbol *sym)
> {
> - return strcmp (sym->name, "_dl_debug_state") == 0;
> + return streq (sym->name, "_dl_debug_state");
> }));
>
> if (addr != 0)
> diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c
> index 997cc175e586..4f0aac31e733 100644
> --- a/gdb/solib-frv.c
> +++ b/gdb/solib-frv.c
> @@ -595,7 +595,7 @@ enable_break2 (void)
> (tmp_bfd.get (),
> [] (const asymbol *sym)
> {
> - return strcmp (sym->name, "_dl_debug_addr") == 0;
> + return streq (sym->name, "_dl_debug_addr");
> }));
>
> if (addr == 0)
> @@ -1015,7 +1015,7 @@ find_canonical_descriptor_in_load_object
> address according to the link map and then dereferencing
> this address (which is a GOT entry) to obtain a descriptor
> address. */
> - if ((name == 0 || strcmp (name, (*rel->sym_ptr_ptr)->name) == 0)
> + if ((name == 0 || streq (name, (*rel->sym_ptr_ptr)->name))
> && rel->howto->type == R_FRV_FUNCDESC)
> {
> gdb_byte buf [FRV_PTR_SIZE];
> diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
> index aeb6cd30f423..8e3de4d3ea1a 100644
> --- a/gdb/solib-svr4.c
> +++ b/gdb/solib-svr4.c
> @@ -124,7 +124,7 @@ get_lm_info_svr4 (const solib &solib)
> static bool
> svr4_same_name (const char *gdb_so_name, const char *inferior_so_name)
> {
> - if (strcmp (gdb_so_name, inferior_so_name) == 0)
> + if (streq (gdb_so_name, inferior_so_name))
> return 1;
>
> /* On Solaris, when starting inferior we think that dynamic linker is
> @@ -133,18 +133,18 @@ svr4_same_name (const char *gdb_so_name, const char *inferior_so_name)
> sometimes they have identical content, but are not linked to each
> other. We don't restrict this check for Solaris, but the chances
> of running into this situation elsewhere are very low. */
> - if (strcmp (gdb_so_name, "/usr/lib/ld.so.1") == 0
> - && strcmp (inferior_so_name, "/lib/ld.so.1") == 0)
> + if (streq (gdb_so_name, "/usr/lib/ld.so.1")
> + && streq (inferior_so_name, "/lib/ld.so.1"))
> return 1;
>
> /* Similarly, we observed the same issue with amd64 and sparcv9, but with
> different locations. */
> - if (strcmp (gdb_so_name, "/usr/lib/amd64/ld.so.1") == 0
> - && strcmp (inferior_so_name, "/lib/amd64/ld.so.1") == 0)
> + if (streq (gdb_so_name, "/usr/lib/amd64/ld.so.1")
> + && streq (inferior_so_name, "/lib/amd64/ld.so.1"))
> return 1;
>
> - if (strcmp (gdb_so_name, "/usr/lib/sparcv9/ld.so.1") == 0
> - && strcmp (inferior_so_name, "/lib/sparcv9/ld.so.1") == 0)
> + if (streq (gdb_so_name, "/usr/lib/sparcv9/ld.so.1")
> + && streq (inferior_so_name, "/lib/sparcv9/ld.so.1"))
> return 1;
>
> return 0;
> @@ -1136,7 +1136,7 @@ svr4_library_list_start_list (struct gdb_xml_parser *parser,
> = (const char *) xml_find_attribute (attributes, "version")->value.get ();
> struct gdb_xml_value *main_lm = xml_find_attribute (attributes, "main-lm");
>
> - if (strcmp (version, "1.0") != 0)
> + if (!streq (version, "1.0"))
> gdb_xml_error (parser,
> _("SVR4 Library list has unsupported version \"%s\""),
> version);
> @@ -1607,8 +1607,7 @@ svr4_fetch_objfile_link_map (struct objfile *objfile)
> static bool
> is_thread_local_section (struct bfd_section *bfd_sect)
> {
> - return ((strcmp (bfd_sect->name, ".tdata") == 0
> - || strcmp (bfd_sect->name, ".tbss") == 0)
> + return ((streq (bfd_sect->name, ".tdata") || streq (bfd_sect->name, ".tbss"))
> && bfd_sect->size != 0);
> }
>
> @@ -1815,7 +1814,7 @@ match_main (const char *soname)
>
> for (mainp = main_name_list; *mainp != NULL; mainp++)
> {
> - if (strcmp (soname, *mainp) == 0)
> + if (streq (soname, *mainp))
> return (1);
> }
>
> @@ -2727,7 +2726,7 @@ svr4_solib_ops::enable_break (svr4_info *info, int from_tty) const
> (tmp_bfd.get (),
> [=] (const asymbol *sym)
> {
> - return (strcmp (sym->name, *bkpt_namep) == 0
> + return (streq (sym->name, *bkpt_namep)
> && ((sym->section->flags & (SEC_CODE | SEC_DATA))
> != 0));
> }));
> diff --git a/gdb/solib-target.c b/gdb/solib-target.c
> index 981e86b7d90d..ac965df20e94 100644
> --- a/gdb/solib-target.c
> +++ b/gdb/solib-target.c
> @@ -161,7 +161,7 @@ library_list_start_list (struct gdb_xml_parser *parser,
> {
> const char *string = (const char *) version->value.get ();
>
> - if (strcmp (string, "1.0") != 0)
> + if (!streq (string, "1.0"))
> gdb_xml_error (parser,
> _("Library list has unsupported version \"%s\""),
> string);
> diff --git a/gdb/solib.c b/gdb/solib.c
> index 0750d48f7476..22937c0fc067 100644
> --- a/gdb/solib.c
> +++ b/gdb/solib.c
> @@ -197,7 +197,7 @@ solib_find_1 (const char *in_pathname, int *fd, bool is_solib)
> There's no need to check for drive spec explicitly, as we only
> get here if IN_PATHNAME is considered an absolute path. */
> need_dir_separator = !(IS_DIR_SEPARATOR (in_pathname[0])
> - || strcmp (TARGET_SYSROOT_PREFIX, sysroot) == 0);
> + || streq (TARGET_SYSROOT_PREFIX, sysroot));
>
> /* Cat the prefixed pathname together. */
> temp_pathname.reset (concat (sysroot,
> @@ -551,7 +551,7 @@ solib_map_sections (solib &so)
> range of the shared object, assume we want the location of
> the .text section. */
> if (so.addr_low == 0 && so.addr_high == 0
> - && strcmp (p.the_bfd_section->name, ".text") == 0)
> + && streq (p.the_bfd_section->name, ".text"))
> {
> so.addr_low = p.addr;
> so.addr_high = p.endaddr;
> diff --git a/gdb/source.c b/gdb/source.c
> index 0f74a0ebd0dd..a4bced1296fc 100644
> --- a/gdb/source.c
> +++ b/gdb/source.c
> @@ -341,8 +341,8 @@ select_source_symtab ()
> const char *name = symtab->filename ();
> int len = strlen (name);
>
> - if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
> - || strcmp (name, "<<C++-namespaces>>") == 0)))
> + if (!(len > 2 && (streq (&name[len - 2], ".h")
> + || streq (name, "<<C++-namespaces>>"))))
> new_symtab = symtab;
> }
> }
> @@ -836,7 +836,7 @@ openp (const char *path, openp_flags opts, const char *string,
> char *dir = dir_up.get ();
> int reg_file_errno;
>
> - if (strcmp (dir, "$cwd") == 0)
> + if (streq (dir, "$cwd"))
> {
> /* Name is $cwd -- insert current directory name instead. */
> filename = cwd;
> @@ -855,7 +855,7 @@ openp (const char *path, openp_flags opts, const char *string,
> contexts. If the user really has '$cdir' one can use './$cdir'.
> We can get $cdir when loading scripts. When loading source files
> $cdir must have already been expanded to the correct value. */
> - if (strcmp (dir, "$cdir") == 0)
> + if (streq (dir, "$cdir"))
> continue;
>
> /* Normal file name in path -- just use it. */
> diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c
> index 5c526df65be6..9d9c18a71831 100644
> --- a/gdb/sparc64-fbsd-tdep.c
> +++ b/gdb/sparc64-fbsd-tdep.c
> @@ -84,7 +84,7 @@ sparc64fbsd_collect_fpregset (const struct regset *regset,
> static int
> sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
> {
> - return (name && strcmp (name, "__sigtramp") == 0);
> + return (name && streq (name, "__sigtramp"));
> }
>
> static struct sparc_frame_cache *
> diff --git a/gdb/sparc64-obsd-tdep.c b/gdb/sparc64-obsd-tdep.c
> index 0a4763d117ad..b39b519725e9 100644
> --- a/gdb/sparc64-obsd-tdep.c
> +++ b/gdb/sparc64-obsd-tdep.c
> @@ -298,7 +298,7 @@ sparc64obsd_trapframe_sniffer (const struct frame_unwind *self,
>
> pc = get_frame_address_in_block (this_frame);
> find_pc_partial_function (pc, &name, NULL, NULL);
> - if (name && strcmp (name, "Lslowtrap_reenter") == 0)
> + if (name && streq (name, "Lslowtrap_reenter"))
> return 1;
>
> return 0;
> diff --git a/gdb/stack.c b/gdb/stack.c
> index f1e3e8975f4f..3ab0090ea8a0 100644
> --- a/gdb/stack.c
> +++ b/gdb/stack.c
> @@ -635,8 +635,9 @@ read_frame_arg (const frame_print_options &fp_opts,
> /* Try to remove possibly duplicate error message for ENTRYARGP even
> in MI mode. */
>
> - if (val_error && entryval_error
> - && strcmp (val_error, entryval_error) == 0)
> + if (val_error != nullptr
> + && entryval_error != nullptr
> + && streq (val_error, entryval_error))
> {
> entryval_error = NULL;
>
> diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
> index 2607371c39ff..d28cee8168c3 100644
> --- a/gdb/stap-probe.c
> +++ b/gdb/stap-probe.c
> @@ -1635,7 +1635,8 @@ get_stap_base_address (bfd *obfd, bfd_vma *base)
>
> for (asection *sect : gdb_bfd_sections (obfd))
> if ((sect->flags & (SEC_DATA | SEC_ALLOC | SEC_HAS_CONTENTS))
> - && sect->name && !strcmp (sect->name, STAP_BASE_SECTION_NAME))
> + && sect->name != nullptr
> + && streq (sect->name, STAP_BASE_SECTION_NAME))
> ret = sect;
>
> if (ret == NULL)
> diff --git a/gdb/symfile.c b/gdb/symfile.c
> index 44a9480d9d90..0d77d97b3afe 100644
> --- a/gdb/symfile.c
> +++ b/gdb/symfile.c
> @@ -409,9 +409,9 @@ relative_addr_info_to_section_offsets (std::vector<CORE_ADDR> &section_offsets,
> static const char *
> addr_section_name (const char *s)
> {
> - if (strcmp (s, ".dynbss") == 0)
> + if (streq (s, ".dynbss"))
> return ".bss";
> - if (strcmp (s, ".sdynbss") == 0)
> + if (streq (s, ".sdynbss"))
> return ".sbss";
>
> return s;
> @@ -511,8 +511,8 @@ addr_info_make_relative (section_addr_info *addrs, bfd *abfd)
> abfd_sorted_iter++;
>
> if (abfd_sorted_iter != abfd_addrs_sorted.end ()
> - && strcmp (addr_section_name ((*abfd_sorted_iter)->name.c_str ()),
> - sect_name) == 0)
> + && streq (addr_section_name ((*abfd_sorted_iter)->name.c_str ()),
> + sect_name))
> {
> int index_in_addrs;
>
> @@ -1574,11 +1574,11 @@ symbol_file_command (const char *args, int from_tty)
> else
> error (_("Unrecognized argument \"%s\""), arg);
> }
> - else if (strcmp (arg, "-readnow") == 0)
> + else if (streq (arg, "-readnow"))
> flags |= OBJF_READNOW;
> - else if (strcmp (arg, "-readnever") == 0)
> + else if (streq (arg, "-readnever"))
> flags |= OBJF_READNEVER;
> - else if (strcmp (arg, "-o") == 0)
> + else if (streq (arg, "-o"))
> {
> arg = built_argv[++idx];
> if (arg == NULL)
> @@ -1586,7 +1586,7 @@ symbol_file_command (const char *args, int from_tty)
>
> offset = parse_and_eval_address (arg);
> }
> - else if (strcmp (arg, "--") == 0)
> + else if (streq (arg, "--"))
> stop_processing_options = true;
> else
> error (_("Unrecognized argument \"%s\""), arg);
> @@ -2214,11 +2214,11 @@ add_symbol_file_command (const char *args, int from_tty)
> else
> error (_("Unrecognized argument \"%s\""), arg);
> }
> - else if (strcmp (arg, "-readnow") == 0)
> + else if (streq (arg, "-readnow"))
> flags |= OBJF_READNOW;
> - else if (strcmp (arg, "-readnever") == 0)
> + else if (streq (arg, "-readnever"))
> flags |= OBJF_READNEVER;
> - else if (strcmp (arg, "-s") == 0)
> + else if (streq (arg, "-s"))
> {
> if (argv[argcnt + 1] == NULL)
> error (_("Missing section name after \"-s\""));
> @@ -2230,7 +2230,7 @@ add_symbol_file_command (const char *args, int from_tty)
> sect_opts.push_back (sect);
> argcnt += 2;
> }
> - else if (strcmp (arg, "-o") == 0)
> + else if (streq (arg, "-o"))
> {
> arg = argv[++argcnt];
> if (arg == NULL)
> @@ -2239,7 +2239,7 @@ add_symbol_file_command (const char *args, int from_tty)
> offset = parse_and_eval_address (arg);
> seen_offset = true;
> }
> - else if (strcmp (arg, "--") == 0)
> + else if (streq (arg, "--"))
> stop_processing_options = true;
> else
> error (_("Unrecognized argument \"%s\""), arg);
> @@ -3217,7 +3217,7 @@ map_overlay_command (const char *args, int from_tty)
> /* First, find a section matching the user supplied argument. */
> for (objfile &obj_file : current_program_space->objfiles ())
> for (obj_section &sec : obj_file.sections ())
> - if (!strcmp (bfd_section_name (sec.the_bfd_section), args))
> + if (streq (bfd_section_name (sec.the_bfd_section), args))
> {
> /* Now, check to see if the section is an overlay. */
> if (!section_is_overlay (&sec))
> @@ -3261,7 +3261,7 @@ unmap_overlay_command (const char *args, int from_tty)
> /* First, find a section matching the user supplied argument. */
> for (objfile &objfile : current_program_space->objfiles ())
> for (obj_section &sec : objfile.sections ())
> - if (!strcmp (bfd_section_name (sec.the_bfd_section), args))
> + if (streq (bfd_section_name (sec.the_bfd_section), args))
> {
> if (!sec.ovly_mapped)
> error (_("Section %s is not mapped"), args);
> diff --git a/gdb/symmisc.c b/gdb/symmisc.c
> index 258489fe8f07..a6dbb3b0603c 100644
> --- a/gdb/symmisc.c
> +++ b/gdb/symmisc.c
> @@ -403,25 +403,25 @@ maintenance_print_symbols (const char *args, int from_tty)
>
> for (i = 0; argv != NULL && argv[i] != NULL; ++i)
> {
> - if (strcmp (argv[i], "-pc") == 0)
> + if (streq (argv[i], "-pc"))
> {
> if (argv[i + 1] == NULL)
> error (_("Missing pc value"));
> address_arg = argv[++i];
> }
> - else if (strcmp (argv[i], "-source") == 0)
> + else if (streq (argv[i], "-source"))
> {
> if (argv[i + 1] == NULL)
> error (_("Missing source file"));
> source_arg = argv[++i];
> }
> - else if (strcmp (argv[i], "-objfile") == 0)
> + else if (streq (argv[i], "-objfile"))
> {
> if (argv[i + 1] == NULL)
> error (_("Missing objfile name"));
> objfile_arg = argv[++i];
> }
> - else if (strcmp (argv[i], "--") == 0)
> + else if (streq (argv[i], "--"))
> {
> /* End of options. */
> ++i;
> @@ -683,13 +683,13 @@ maintenance_print_msymbols (const char *args, int from_tty)
>
> for (i = 0; argv != NULL && argv[i] != NULL; ++i)
> {
> - if (strcmp (argv[i], "-objfile") == 0)
> + if (streq (argv[i], "-objfile"))
> {
> if (argv[i + 1] == NULL)
> error (_("Missing objfile name"));
> objfile_arg = argv[++i];
> }
> - else if (strcmp (argv[i], "--") == 0)
> + else if (streq (argv[i], "--"))
> {
> /* End of options. */
> ++i;
> diff --git a/gdb/symtab.c b/gdb/symtab.c
> index 51a049836b04..812f9bcc5404 100644
> --- a/gdb/symtab.c
> +++ b/gdb/symtab.c
> @@ -378,7 +378,7 @@ search_symbol_list (const char *name, int num, struct symbol **syms)
> {
> for (int i = 0; i < num; ++i)
> {
> - if (strcmp (name, syms[i]->natural_name ()) == 0)
> + if (streq (name, syms[i]->natural_name ()))
> return syms[i];
> }
> return nullptr;
> @@ -738,8 +738,8 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
>
> is_full_physname_constructor = is_constructor_name (physname);
>
> - is_constructor = is_full_physname_constructor
> - || (newname && strcmp (field_name, newname) == 0);
> + is_constructor = (is_full_physname_constructor
> + || (newname != nullptr && streq (field_name, newname)));
>
> if (!is_destructor)
> is_destructor = (startswith (physname, "__dt"));
> @@ -1189,9 +1189,9 @@ matching_obj_sections (struct obj_section *obj_first,
> != bfd_section_vma (second) - bfd_get_start_address (second->owner))
> return false;
>
> - if (bfd_section_name (first) == NULL
> - || bfd_section_name (second) == NULL
> - || strcmp (bfd_section_name (first), bfd_section_name (second)) != 0)
> + if (bfd_section_name (first) == nullptr
> + || bfd_section_name (second) == nullptr
> + || !streq (bfd_section_name (first), bfd_section_name (second)))
> return false;
>
> /* Otherwise check that they are in corresponding objfiles. */
> @@ -1276,7 +1276,7 @@ eq_symbol_entry (const struct symbol_cache_slot *slot,
>
> if (slot->state == SYMBOL_SLOT_NOT_FOUND)
> {
> - if (strcmp (slot_name, name) != 0)
> + if (!streq (slot_name, name))
> return 0;
> }
> else
> diff --git a/gdb/target.c b/gdb/target.c
> index 77a562aa919d..34d18952dc16 100644
> --- a/gdb/target.c
> +++ b/gdb/target.c
> @@ -1542,7 +1542,7 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
>
> auto match_cb = [=] (const struct target_section *s)
> {
> - return (strcmp (section_name, s->the_bfd_section->name) == 0);
> + return streq (section_name, s->the_bfd_section->name);
> };
>
> return section_table_xfer_memory_partial (readbuf, writebuf,
> diff --git a/gdb/top.c b/gdb/top.c
> index 76dc2d27fc5b..510e65c1d094 100644
> --- a/gdb/top.c
> +++ b/gdb/top.c
> @@ -1190,7 +1190,7 @@ gdb_add_history (const char *command)
> if (temp == NULL)
> break;
>
> - if (strcmp (temp->line, command) == 0)
> + if (streq (temp->line, command))
> {
> HIST_ENTRY *prev = remove_history (where_history ());
> command_count--;
> @@ -1413,7 +1413,7 @@ There is NO WARRANTY, to the extent permitted by law.",
> /* After the required info we print the configuration information. */
>
> gdb_printf (stream, "This GDB was configured as \"");
> - if (strcmp (host_name, target_name) != 0)
> + if (!streq (host_name, target_name))
> {
> gdb_printf (stream, "--host=%s --target=%s",
> host_name, target_name);
> diff --git a/gdb/tracectf.c b/gdb/tracectf.c
> index 3c6bf6cb5a98..aff2da55d66a 100644
> --- a/gdb/tracectf.c
> +++ b/gdb/tracectf.c
> @@ -913,7 +913,7 @@ ctf_open_dir (const char *dirname)
>
> bt_ctf_get_event_decl_list (handle_id, ctx, &list, &count);
> for (i = 0; i < count; i++)
> - if (strcmp ("register", bt_ctf_get_decl_event_name (list[i])) == 0)
> + if (streq ("register", bt_ctf_get_decl_event_name (list[i])))
> {
> const struct bt_ctf_field_decl * const *field_list;
> const struct bt_declaration *decl;
> @@ -922,8 +922,8 @@ ctf_open_dir (const char *dirname)
> &count);
>
> gdb_assert (count == 1);
> - gdb_assert (0 == strcmp ("contents",
> - bt_ctf_get_decl_field_name (field_list[0])));
> + gdb_assert (streq ("contents",
> + bt_ctf_get_decl_field_name (field_list[0])));
> decl = bt_ctf_get_decl_from_field_decl (field_list[0]);
> trace_regblock_size = bt_ctf_get_array_len (decl);
>
> @@ -1231,9 +1231,9 @@ ctf_target::fetch_registers (struct regcache *regcache, int regno)
>
> name = bt_ctf_event_name (event1);
>
> - if (name == NULL || strcmp (name, "frame") == 0)
> + if (name == NULL || streq (name, "frame"))
> break;
> - else if (strcmp (name, "register") == 0)
> + else if (streq (name, "register"))
> {
> event = event1;
> break;
> @@ -1329,9 +1329,9 @@ ctf_target::xfer_partial (enum target_object object,
> = bt_ctf_iter_read_event (ctf_iter);
> const char *name = bt_ctf_event_name (event);
>
> - if (name == NULL || strcmp (name, "frame") == 0)
> + if (name == NULL || streq (name, "frame"))
> break;
> - else if (strcmp (name, "memory") != 0)
> + else if (!streq (name, "memory"))
> {
> if (bt_iter_next (bt_ctf_get_iter (ctf_iter)) < 0)
> break;
> @@ -1445,9 +1445,9 @@ ctf_target::get_trace_state_variable_value (int tsvnum, LONGEST *val)
> = bt_ctf_iter_read_event (ctf_iter);
> const char *name = bt_ctf_event_name (event);
>
> - if (name == NULL || strcmp (name, "frame") == 0)
> + if (name == NULL || streq (name, "frame"))
> break;
> - else if (strcmp (name, "tsv") == 0)
> + else if (streq (name, "tsv"))
> {
> const struct bt_definition *scope;
> const struct bt_definition *def;
> @@ -1513,7 +1513,7 @@ ctf_get_traceframe_address (void)
>
> if (name == NULL)
> break;
> - else if (strcmp (name, "frame") == 0)
> + else if (streq (name, "frame"))
> {
> event = event1;
> break;
> @@ -1573,7 +1573,7 @@ ctf_target::trace_find (enum trace_find_type type, int num,
> if (event == NULL || name == NULL)
> break;
>
> - if (strcmp (name, "frame") == 0)
> + if (streq (name, "frame"))
> {
> CORE_ADDR tfaddr;
>
> @@ -1664,10 +1664,9 @@ ctf_target::traceframe_info ()
>
> name = bt_ctf_event_name (event);
>
> - if (name == NULL || strcmp (name, "register") == 0
> - || strcmp (name, "frame") == 0)
> + if (name == nullptr || streq (name, "register") || streq (name, "frame"))
> ;
> - else if (strcmp (name, "memory") == 0)
> + else if (streq (name, "memory"))
> {
> const struct bt_definition *scope
> = bt_ctf_get_top_level_scope (event,
> @@ -1682,7 +1681,7 @@ ctf_target::traceframe_info ()
>
> info->memory.emplace_back (start, length);
> }
> - else if (strcmp (name, "tsv") == 0)
> + else if (streq (name, "tsv"))
> {
> int vnum;
> const struct bt_definition *scope
> @@ -1704,7 +1703,7 @@ ctf_target::traceframe_info ()
> if (bt_iter_next (bt_ctf_get_iter (ctf_iter)) < 0)
> break;
> }
> - while (name != NULL && strcmp (name, "frame") != 0);
> + while (name != NULL && !streq (name, "frame"));
>
> /* Restore the position. */
> bt_iter_set_pos (bt_ctf_get_iter (ctf_iter), pos);
> diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c
> index 6fa1909fcec0..a6f5ae16b916 100644
> --- a/gdb/tracefile-tfile.c
> +++ b/gdb/tracefile-tfile.c
> @@ -896,7 +896,7 @@ tfile_xfer_partial_features (const char *annex,
> ULONGEST offset, ULONGEST len,
> ULONGEST *xfered_len)
> {
> - if (strcmp (annex, "target.xml"))
> + if (!streq (annex, "target.xml"))
> return TARGET_XFER_E_IO;
>
> if (readbuf == NULL)
> diff --git a/gdb/tracefile.c b/gdb/tracefile.c
> index 28080e26218c..6dc699f3efe8 100644
> --- a/gdb/tracefile.c
> +++ b/gdb/tracefile.c
> @@ -333,9 +333,9 @@ tsave_command (const char *args, int from_tty)
>
> for (; *argv; ++argv)
> {
> - if (strcmp (*argv, "-r") == 0)
> + if (streq (*argv, "-r"))
> target_does_save = 1;
> - else if (strcmp (*argv, "-ctf") == 0)
> + else if (streq (*argv, "-ctf"))
> generate_ctf = 1;
> else if (**argv == '-')
> error (_("unknown option `%s'"), *argv);
> diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
> index 2b6fbcbf5ae9..7f078684b142 100644
> --- a/gdb/tracepoint.c
> +++ b/gdb/tracepoint.c
> @@ -2231,7 +2231,7 @@ tfind_command_1 (const char *args, int from_tty)
> else
> frameno = traceframe_number + 1;
> }
> - else if (0 == strcmp (args, "-"))
> + else if (streq (args, "-"))
> {
> if (traceframe_number == -1)
> error (_("not debugging trace buffer"));
> @@ -2241,7 +2241,7 @@ tfind_command_1 (const char *args, int from_tty)
> frameno = traceframe_number - 1;
> }
> /* A hack to work around eval's need for fp to have been collected. */
> - else if (0 == strcmp (args, "-1"))
> + else if (streq (args, "-1"))
> frameno = -1;
> else
> frameno = parse_and_eval_long (args);
> @@ -3006,7 +3006,7 @@ cond_string_is_same (char *str1, char *str2)
> if (str1 == NULL || str2 == NULL)
> return (str1 == str2);
>
> - return (strcmp (str1, str2) == 0);
> + return (streq (str1, str2));
> }
>
> /* Look for an existing tracepoint that seems similar enough to the
> diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
> index 272f5134d853..40db5f160ca8 100644
> --- a/gdb/tui/tui-layout.c
> +++ b/gdb/tui/tui-layout.c
> @@ -253,7 +253,7 @@ tui_remove_some_windows ()
> {
> tui_win_info *focus = tui_win_with_focus ();
>
> - if (strcmp (focus->name (), CMD_NAME) == 0)
> + if (streq (focus->name (), CMD_NAME))
> {
> /* Try leaving the source or disassembly window. If neither
> exists, just do nothing. */
> @@ -506,7 +506,7 @@ tui_layout_window::specification (ui_file *output, int depth)
> std::string
> tui_layout_window::layout_fingerprint () const
> {
> - if (strcmp (get_name (), "cmd") == 0)
> + if (streq (get_name (), "cmd"))
> return "C";
> else
> return "";
> @@ -824,7 +824,7 @@ tui_layout_split::apply (int x_, int y_, int width_, int height_,
> if (preserve_cmd_win_size_p
> && cmd_win_already_exists
> && m_splits[i].layout->get_name () != nullptr
> - && strcmp (m_splits[i].layout->get_name (), "cmd") == 0)
> + && streq (m_splits[i].layout->get_name (), "cmd"))
> {
> /* Save the old cmd window information, in case we need to
> restore it later. */
> @@ -1042,9 +1042,9 @@ tui_layout_split::remove_windows (const char *name)
> const char *this_name = m_splits[i].layout->get_name ();
> if (this_name == nullptr)
> m_splits[i].layout->remove_windows (name);
> - else if (strcmp (this_name, name) == 0
> - || strcmp (this_name, CMD_NAME) == 0
> - || strcmp (this_name, STATUS_NAME) == 0)
> + else if (streq (this_name, name)
> + || streq (this_name, CMD_NAME)
> + || streq (this_name, STATUS_NAME))
> {
> /* Keep. */
> }
> diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
> index 6d57d8fb62d2..c5cca2fdd003 100644
> --- a/gdb/tui/tui-win.c
> +++ b/gdb/tui/tui-win.c
> @@ -220,7 +220,7 @@ translate (const char *name, struct tui_translate *table)
> {
> while (table->name)
> {
> - if (name && strcmp (table->name, name) == 0)
> + if (name && streq (table->name, name))
> return table->value;
> table++;
> }
> @@ -235,7 +235,7 @@ translate_acs (const char *name, struct tui_translate *table, int acs_char)
> {
> /* The ACS characters are determined at run time by curses terminal
> management. */
> - if (strcmp (name, "acs") == 0)
> + if (streq (name, "acs"))
> return acs_char;
>
> return translate (name, table);
> diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
> index fb94823f0fe8..181d5ef4fd66 100644
> --- a/gdb/tui/tui.c
> +++ b/gdb/tui/tui.c
> @@ -428,7 +428,7 @@ tui_enable (void)
> /* If the top level interpreter is not the console/tui (e.g.,
> MI), enabling curses will certainly lose. */
> interp = top_level_interpreter ()->name ();
> - if (strcmp (interp, INTERP_TUI) != 0)
> + if (!streq (interp, INTERP_TUI))
> error (_("Cannot enable the TUI when the interpreter is '%s'"), interp);
>
> /* Don't try to setup curses (and print funny control
> diff --git a/gdb/ui-style.c b/gdb/ui-style.c
> index a191c753b088..ab2b0ad5de4e 100644
> --- a/gdb/ui-style.c
> +++ b/gdb/ui-style.c
> @@ -602,8 +602,8 @@ colorsupport ()
> const char *colorterm = getenv ("COLORTERM");
> if (colors >= 16777216
> || (colorterm != nullptr
> - && (!strcmp (colorterm, "truecolor")
> - || !strcmp (colorterm, "24bit"))))
> + && (streq (colorterm, "truecolor")
> + || streq (colorterm, "24bit"))))
> result.push_back (color_space::RGB_24BIT);
>
> return result;
> diff --git a/gdb/unittests/child-path-selftests.c b/gdb/unittests/child-path-selftests.c
> index 6f4d9990a9b8..3861e2dfde8f 100644
> --- a/gdb/unittests/child-path-selftests.c
> +++ b/gdb/unittests/child-path-selftests.c
> @@ -31,7 +31,7 @@ child_path_check (const char *parent, const char *child, const char *expected)
> const char *result = ::child_path (parent, child);
> if (result == NULL || expected == NULL)
> return result == expected;
> - return strcmp (result, expected) == 0;
> + return streq (result, expected);
> }
>
> /* Test child_path. */
> diff --git a/gdb/unittests/cli-utils-selftests.c b/gdb/unittests/cli-utils-selftests.c
> index f2d0bfe4da34..2e4cfc4dec3e 100644
> --- a/gdb/unittests/cli-utils-selftests.c
> +++ b/gdb/unittests/cli-utils-selftests.c
> @@ -33,7 +33,7 @@ test_number_or_range_parser ()
> SELF_CHECK (!one.finished ());
> SELF_CHECK (one.get_number () == 1);
> SELF_CHECK (one.finished ());
> - SELF_CHECK (strcmp (one.cur_tok (), "") == 0);
> + SELF_CHECK (streq (one.cur_tok (), ""));
> }
>
> /* Test parsing an integer followed by a non integer. */
> @@ -43,7 +43,7 @@ test_number_or_range_parser ()
> SELF_CHECK (!one_after.finished ());
> SELF_CHECK (one_after.get_number () == 1);
> SELF_CHECK (one_after.finished ());
> - SELF_CHECK (strcmp (one_after.cur_tok (), "after") == 0);
> + SELF_CHECK (streq (one_after.cur_tok (), "after"));
> }
>
> /* Test parsing a range. */
> @@ -56,7 +56,7 @@ test_number_or_range_parser ()
> SELF_CHECK (one_three.get_number () == i);
> }
> SELF_CHECK (one_three.finished ());
> - SELF_CHECK (strcmp (one_three.cur_tok (), "") == 0);
> + SELF_CHECK (streq (one_three.cur_tok (), ""));
> }
>
> /* Test parsing a range followed by a non-integer. */
> @@ -69,7 +69,7 @@ test_number_or_range_parser ()
> SELF_CHECK (one_three_after.get_number () == i);
> }
> SELF_CHECK (one_three_after.finished ());
> - SELF_CHECK (strcmp (one_three_after.cur_tok (), "after") == 0);
> + SELF_CHECK (streq (one_three_after.cur_tok (), "after"));
> }
>
> /* Test a negative integer gives an error. */
> @@ -86,8 +86,8 @@ test_number_or_range_parser ()
> {
> SELF_CHECK (ex.reason == RETURN_ERROR);
> SELF_CHECK (ex.error == GENERIC_ERROR);
> - SELF_CHECK (strcmp (ex.what (), "negative value") == 0);
> - SELF_CHECK (strcmp (minus_one.cur_tok (), "-1") == 0);
> + SELF_CHECK (streq (ex.what (), "negative value"));
> + SELF_CHECK (streq (minus_one.cur_tok (), "-1"));
> }
> }
>
> @@ -96,7 +96,7 @@ test_number_or_range_parser ()
> number_or_range_parser nan ("-whatever");
>
> SELF_CHECK (nan.finished ());
> - SELF_CHECK (strcmp (nan.cur_tok (), "-whatever") == 0);
> + SELF_CHECK (streq (nan.cur_tok (), "-whatever"));
> }
> }
>
> diff --git a/gdb/unittests/copy_bitwise-selftests.c b/gdb/unittests/copy_bitwise-selftests.c
> index 2a8ded1a2243..e818db09226b 100644
> --- a/gdb/unittests/copy_bitwise-selftests.c
> +++ b/gdb/unittests/copy_bitwise-selftests.c
> @@ -82,7 +82,7 @@ check_copy_bitwise (const gdb_byte *dest, unsigned int dest_offset,
>
> /* Compare the resulting strings. */
> expected[len] = actual[len] = '\0';
> - if (strcmp (expected, actual) != 0)
> + if (!streq (expected, actual))
> error (_("copy_bitwise %s != %s (%u+%u -> %u)"),
> expected, actual, source_offset, nbits, dest_offset);
> }
> diff --git a/gdb/unittests/environ-selftests.c b/gdb/unittests/environ-selftests.c
> index 0bfbb8140eb0..b643876b1440 100644
> --- a/gdb/unittests/environ-selftests.c
> +++ b/gdb/unittests/environ-selftests.c
> @@ -63,7 +63,7 @@ test_init_from_host_environ ()
>
> /* Our test environment variable should be present at the
> vector. */
> - SELF_CHECK (strcmp (env.get (gdb_selftest_env_var), "1") == 0);
> + SELF_CHECK (streq (env.get (gdb_selftest_env_var), "1"));
> }
>
> /* Test reinitialization using the host's environ. */
> @@ -80,7 +80,7 @@ test_reinit_from_host_environ ()
> int num_found = 0;
>
> for (size_t i = 0; envp[i] != NULL; ++i)
> - if (strcmp (envp[i], "GDB_SELFTEST_ENVIRON=1") == 0)
> + if (streq (envp[i], "GDB_SELFTEST_ENVIRON=1"))
> ++num_found;
> SELF_CHECK (num_found == 1);
> }
> @@ -95,18 +95,18 @@ test_set_A_unset_B_unset_A_cannot_find_A_can_find_B ()
> gdb_environ env;
>
> env.set ("GDB_SELFTEST_ENVIRON_1", "aaa");
> - SELF_CHECK (strcmp (env.get ("GDB_SELFTEST_ENVIRON_1"), "aaa") == 0);
> + SELF_CHECK (streq (env.get ("GDB_SELFTEST_ENVIRON_1"), "aaa"));
> /* User-set environ var list must contain one element. */
> SELF_CHECK (env.user_set_env ().size () == 1);
> SELF_CHECK (set_contains (env.user_set_env (),
> std::string ("GDB_SELFTEST_ENVIRON_1=aaa")));
>
> env.set ("GDB_SELFTEST_ENVIRON_2", "bbb");
> - SELF_CHECK (strcmp (env.get ("GDB_SELFTEST_ENVIRON_2"), "bbb") == 0);
> + SELF_CHECK (streq (env.get ("GDB_SELFTEST_ENVIRON_2"), "bbb"));
>
> env.unset ("GDB_SELFTEST_ENVIRON_1");
> SELF_CHECK (env.get ("GDB_SELFTEST_ENVIRON_1") == NULL);
> - SELF_CHECK (strcmp (env.get ("GDB_SELFTEST_ENVIRON_2"), "bbb") == 0);
> + SELF_CHECK (streq (env.get ("GDB_SELFTEST_ENVIRON_2"), "bbb"));
>
> /* The user-set environ var list must contain only one element
> now. */
> @@ -123,7 +123,7 @@ test_unset_set_empty_vector ()
> gdb_environ env;
>
> env.set ("PWD", "test");
> - SELF_CHECK (strcmp (env.get ("PWD"), "test") == 0);
> + SELF_CHECK (streq (env.get ("PWD"), "test"));
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("PWD=test")));
> SELF_CHECK (env.user_unset_env ().size () == 0);
> /* The second element must be NULL. */
> @@ -164,19 +164,19 @@ test_std_move ()
> gdb_environ env2;
>
> env.set ("A", "1");
> - SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> + SELF_CHECK (streq (env.get ("A"), "1"));
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("A=1")));
> SELF_CHECK (env.user_set_env ().size () == 1);
>
> env2 = std::move (env);
> SELF_CHECK (env.envp ()[0] == NULL);
> - SELF_CHECK (strcmp (env2.get ("A"), "1") == 0);
> + SELF_CHECK (streq (env2.get ("A"), "1"));
> SELF_CHECK (env2.envp ()[1] == NULL);
> SELF_CHECK (env.user_set_env ().size () == 0);
> SELF_CHECK (set_contains (env2.user_set_env (), std::string ("A=1")));
> SELF_CHECK (env2.user_set_env ().size () == 1);
> env.set ("B", "2");
> - SELF_CHECK (strcmp (env.get ("B"), "2") == 0);
> + SELF_CHECK (streq (env.get ("B"), "2"));
> SELF_CHECK (env.envp ()[1] == NULL);
> }
>
> @@ -189,19 +189,19 @@ test_move_constructor ()
> gdb_environ env;
>
> env.set ("A", "1");
> - SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> + SELF_CHECK (streq (env.get ("A"), "1"));
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("A=1")));
>
> gdb_environ env2 = std::move (env);
> SELF_CHECK (env.envp ()[0] == NULL);
> SELF_CHECK (env.user_set_env ().size () == 0);
> - SELF_CHECK (strcmp (env2.get ("A"), "1") == 0);
> + SELF_CHECK (streq (env2.get ("A"), "1"));
> SELF_CHECK (env2.envp ()[1] == NULL);
> SELF_CHECK (set_contains (env2.user_set_env (), std::string ("A=1")));
> SELF_CHECK (env2.user_set_env ().size () == 1);
>
> env.set ("B", "2");
> - SELF_CHECK (strcmp (env.get ("B"), "2") == 0);
> + SELF_CHECK (streq (env.get ("B"), "2"));
> SELF_CHECK (env.envp ()[1] == NULL);
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("B=2")));
> SELF_CHECK (env.user_set_env ().size () == 1);
> @@ -216,7 +216,7 @@ test_self_move ()
>
> /* Test self-move. */
> env.set ("A", "1");
> - SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> + SELF_CHECK (streq (env.get ("A"), "1"));
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("A=1")));
> SELF_CHECK (env.user_set_env ().size () == 1);
>
> @@ -227,8 +227,8 @@ test_self_move ()
> env = std::move (env);
> DIAGNOSTIC_POP
>
> - SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> - SELF_CHECK (strcmp (env.envp ()[0], "A=1") == 0);
> + SELF_CHECK (streq (env.get ("A"), "1"));
> + SELF_CHECK (streq (env.envp ()[0], "A=1"));
> SELF_CHECK (env.envp ()[1] == NULL);
> SELF_CHECK (set_contains (env.user_set_env (), std::string ("A=1")));
> SELF_CHECK (env.user_set_env ().size () == 1);
> @@ -246,7 +246,7 @@ test_set_unset_reset ()
>
> /* Set our test variable to another value. */
> env.set ("GDB_SELFTEST_ENVIRON", "test");
> - SELF_CHECK (strcmp (env.get ("GDB_SELFTEST_ENVIRON"), "test") == 0);
> + SELF_CHECK (streq (env.get ("GDB_SELFTEST_ENVIRON"), "test"));
> SELF_CHECK (env.user_set_env ().size () == 1);
> SELF_CHECK (env.user_unset_env ().size () == 0);
>
> @@ -261,7 +261,7 @@ test_set_unset_reset ()
>
> /* Re-set the test variable. */
> env.set ("GDB_SELFTEST_ENVIRON", "1");
> - SELF_CHECK (strcmp (env.get ("GDB_SELFTEST_ENVIRON"), "1") == 0);
> + SELF_CHECK (streq (env.get ("GDB_SELFTEST_ENVIRON"), "1"));
> }
>
> static void
> diff --git a/gdb/unittests/intrusive_list-selftests.c b/gdb/unittests/intrusive_list-selftests.c
> index 398ca04a5198..aa68b7d21ec2 100644
> --- a/gdb/unittests/intrusive_list-selftests.c
> +++ b/gdb/unittests/intrusive_list-selftests.c
> @@ -95,7 +95,7 @@ verify_items (const ListType &list,
> SELF_CHECK (&item == expected[i]);
>
> /* Access the item, to make sure the object is still alive. */
> - SELF_CHECK (strcmp (item.name, expected[i]->name) == 0);
> + SELF_CHECK (streq (item.name, expected[i]->name));
>
> ++i;
> }
> @@ -113,7 +113,7 @@ verify_items (const ListType &list,
> SELF_CHECK (&item == expected[i]);
>
> /* Access the item, to make sure the object is still alive. */
> - SELF_CHECK (strcmp (item.name, expected[i]->name) == 0);
> + SELF_CHECK (streq (item.name, expected[i]->name));
> }
>
> SELF_CHECK (i == 0);
> diff --git a/gdb/unittests/lookup_name_info-selftests.c b/gdb/unittests/lookup_name_info-selftests.c
> index 6d56ecd4df49..8eae34d91f81 100644
> --- a/gdb/unittests/lookup_name_info-selftests.c
> +++ b/gdb/unittests/lookup_name_info-selftests.c
> @@ -38,7 +38,7 @@ check_make_paramless (const char *file, int line,
> completion_mode, true /* ignore_parameters */);
> const char *result = lookup_name.language_lookup_name (lang);
>
> - if (strcmp (result, expected) != 0)
> + if (!streq (result, expected))
> {
> error (_("%s:%d: make-paramless self-test failed: (completion=%d, lang=%d) "
> "\"%s\" -> \"%s\", expected \"%s\""),
> diff --git a/gdb/unittests/scoped_mmap-selftests.c b/gdb/unittests/scoped_mmap-selftests.c
> index a89f94dd47a9..06026b459cda 100644
> --- a/gdb/unittests/scoped_mmap-selftests.c
> +++ b/gdb/unittests/scoped_mmap-selftests.c
> @@ -102,7 +102,7 @@ test_normal ()
>
> SELF_CHECK (m.get () != MAP_FAILED);
> SELF_CHECK (m.size () == 7);
> - SELF_CHECK (0 == strcmp ((char *) m.get (), "Hello!"));
> + SELF_CHECK (streq ((char *) m.get (), "Hello!"));
> }
> }
>
> diff --git a/gdb/unittests/unique_xmalloc_ptr_char.c b/gdb/unittests/unique_xmalloc_ptr_char.c
> index 3618ee52d42c..cd11a05e275d 100644
> --- a/gdb/unittests/unique_xmalloc_ptr_char.c
> +++ b/gdb/unittests/unique_xmalloc_ptr_char.c
> @@ -30,8 +30,8 @@ unique_xmalloc_ptr_char ()
> gdb::unique_xmalloc_ptr<char> a = make_unique_xstrdup ("abc");
> gdb::unique_xmalloc_ptr<char> b = make_unique_xstrndup ("defghi", 3);
>
> - SELF_CHECK (strcmp (a.get (), "abc") == 0);
> - SELF_CHECK (strcmp (b.get (), "def") == 0);
> + SELF_CHECK (streq (a.get (), "abc"));
> + SELF_CHECK (streq (b.get (), "def"));
>
> std::string str = "xxx";
>
> diff --git a/gdb/utils.c b/gdb/utils.c
> index ef8ef87bc5b8..bbb6bcb41624 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -1359,7 +1359,7 @@ maintenance_info_screen (const char *args, int from_tty)
> = rl_variable_value ("horizontal-scroll-mode");
> bool force_horizontal_scroll_mode
> = (horizontal_scroll_mode_value != nullptr
> - && strcmp (horizontal_scroll_mode_value, "on") == 0);
> + && streq (horizontal_scroll_mode_value, "on"));
>
> const char *mode = nullptr;
> const char *reason = nullptr;
> @@ -3341,7 +3341,7 @@ gdb_realpath_check_trailer (const char *input, const char *trailer)
> size_t trail_len = strlen (trailer);
>
> SELF_CHECK (len >= trail_len
> - && strcmp (result.get () + len - trail_len, trailer) == 0);
> + && streq (result.get () + len - trail_len, trailer));
> }
>
> static void
> @@ -3383,9 +3383,9 @@ gdb_argv_as_array_view_test ()
> gdb::array_view<char *> view = argv.as_array_view ();
>
> SELF_CHECK (view.size () == 3);
> - SELF_CHECK (strcmp (view[0], "une") == 0);
> - SELF_CHECK (strcmp (view[1], "bonne") == 0);
> - SELF_CHECK (strcmp (view[2], "50") == 0);
> + SELF_CHECK (streq (view[0], "une"));
> + SELF_CHECK (streq (view[1], "bonne"));
> + SELF_CHECK (streq (view[2], "50"));
> }
> }
>
> diff --git a/gdb/valops.c b/gdb/valops.c
> index 494ed9aaa985..a5f16dc88f0a 100644
> --- a/gdb/valops.c
> +++ b/gdb/valops.c
> @@ -212,10 +212,10 @@ value_cast_structs (struct type *type, struct value *v2)
> || t2->code () == TYPE_CODE_UNION)
> && !!"Precondition is that value is of STRUCT or UNION kind");
>
> - if (t1->name () != NULL
> - && t2->name () != NULL
> - && !strcmp (t1->name (), t2->name ()))
> - return NULL;
> + if (t1->name () != nullptr
> + && t2->name () != nullptr
> + && streq (t1->name (), t2->name ()))
> + return nullptr;
>
> /* Upcasting: look in the type of the source to see if it contains the
> type of the target as a superclass. If so, we'll need to
> @@ -248,7 +248,7 @@ value_cast_structs (struct type *type, struct value *v2)
> /* We might be trying to cast to the outermost enclosing
> type, in which case search_struct_field won't work. */
> if (real_type->name () != NULL
> - && !strcmp (real_type->name (), t1->name ()))
> + && streq (real_type->name (), t1->name ()))
> return v;
>
> v = search_struct_field (t2->name (), v, real_type, 1);
> @@ -2877,7 +2877,7 @@ find_overload_match (gdb::array_view<value *> args,
> probably a C-style function. */
> if (temp_func != nullptr)
> {
> - if (strcmp (temp_func.get (), qualified_name) == 0)
> + if (streq (temp_func.get (), qualified_name))
> func_name = NULL;
> else
> func_name = temp_func.get ();
> @@ -3402,7 +3402,7 @@ enum_constant_from_type (struct type *type, const char *name)
> if (len + 2 >= name_len
> && fname[len - name_len - 2] == ':'
> && fname[len - name_len - 1] == ':'
> - && strcmp (&fname[len - name_len], name) == 0)
> + && streq (&fname[len - name_len], name))
> return value_from_longest (type, type->field (i).loc_enumval ());
> }
>
> @@ -3562,7 +3562,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
> {
> const char *t_field_name = t->field (i).name ();
>
> - if (t_field_name && strcmp (t_field_name, name) == 0)
> + if (t_field_name && streq (t_field_name, name))
> {
> if (t->field (i).is_static ())
> {
> @@ -3639,7 +3639,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
> {
> const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i);
>
> - if (t_field_name && strcmp (t_field_name, name) == 0)
> + if (t_field_name && streq (t_field_name, name))
> {
> int j;
> int len = TYPE_FN_FIELDLIST_LENGTH (t, i);
> diff --git a/gdb/varobj.c b/gdb/varobj.c
> index 6a0ba6c93ab8..edd94ea49630 100644
> --- a/gdb/varobj.c
> +++ b/gdb/varobj.c
> @@ -2181,7 +2181,7 @@ varobj_value_get_print_value (struct value *value,
> = gdbpy_get_display_hint (value_formatter);
> if (hint)
> {
> - if (!strcmp (hint.get (), "string"))
> + if (streq (hint.get (), "string"))
> string_print = true;
> }
>
> diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c
> index a79d1b5e02e9..38ee1d7275e8 100644
> --- a/gdb/windows-tdep.c
> +++ b/gdb/windows-tdep.c
> @@ -1378,10 +1378,10 @@ cygwin_sigwrapper_frame_unwind::sniff (const frame_info_ptr &this_frame,
> if (name == nullptr)
> return 0;
>
> - if (strcmp (name, "_sigbe") != 0
> - && strcmp (name, "__sigbe") != 0
> - && strcmp (name, "sigdelayed") != 0
> - && strcmp (name, "_sigdelayed") != 0)
> + if (!streq (name, "_sigbe")
> + && !streq (name, "__sigbe")
> + && !streq (name, "sigdelayed")
> + && !streq (name, "_sigdelayed"))
> return 0;
>
> frame_debug_printf ("name=%s, start=%s, end=%s",
> diff --git a/gdb/x86-tdep.c b/gdb/x86-tdep.c
> index aa7b1213482f..1f34a6a0ffbd 100644
> --- a/gdb/x86-tdep.c
> +++ b/gdb/x86-tdep.c
> @@ -51,7 +51,7 @@ x86_is_thunk_register_name (const char *name, const char * const *names,
> {
> int reg;
> for (reg = lo; reg < hi; ++reg)
> - if (strcmp (name, names[reg]) == 0)
> + if (streq (name, names[reg]))
> return true;
>
> return false;
> @@ -72,7 +72,7 @@ x86_in_indirect_branch_thunk (CORE_ADDR pc, const char * const *register_names,
> return false;
>
> /* Check the indirect return thunk first. */
> - if (strcmp (name, "__x86_return_thunk") == 0)
> + if (streq (name, "__x86_return_thunk"))
> return true;
>
> /* Then check a family of indirect call/jump thunks. */
> diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
> index aec959e13751..b3d9bb97b621 100644
> --- a/gdb/xcoffread.c
> +++ b/gdb/xcoffread.c
> @@ -262,20 +262,17 @@ xcoff_symfile_offsets (objfile *objfile, const section_addr_info &addrs)
> const char *first_section_name
> = bfd_section_name (objfile->sections_start[0].the_bfd_section);
>
> - if (objfile->sect_index_text == 0
> - && strcmp (first_section_name, ".text") != 0)
> + if (objfile->sect_index_text == 0 && !streq (first_section_name, ".text"))
> objfile->sect_index_text = -1;
>
> - if (objfile->sect_index_data == 0
> - && strcmp (first_section_name, ".data") != 0)
> + if (objfile->sect_index_data == 0 && !streq (first_section_name, ".data"))
> objfile->sect_index_data = -1;
>
> - if (objfile->sect_index_bss == 0
> - && strcmp (first_section_name, ".bss") != 0)
> + if (objfile->sect_index_bss == 0 && !streq (first_section_name, ".bss"))
> objfile->sect_index_bss = -1;
>
> if (objfile->sect_index_rodata == 0
> - && strcmp (first_section_name, ".rodata") != 0)
> + && !streq (first_section_name, ".rodata"))
> objfile->sect_index_rodata = -1;
> }
>
> diff --git a/gdb/xml-support.c b/gdb/xml-support.c
> index 76ce84122fb3..a538c16f926c 100644
> --- a/gdb/xml-support.c
> +++ b/gdb/xml-support.c
> @@ -229,7 +229,7 @@ xml_find_attribute (std::vector<gdb_xml_value> &attributes,
> const char *name)
> {
> for (gdb_xml_value &value : attributes)
> - if (strcmp (value.name, name) == 0)
> + if (streq (value.name, name))
> return &value;
>
> return NULL;
> @@ -270,7 +270,7 @@ gdb_xml_parser::start_element (const XML_Char *name,
> seen = 1;
> for (element = scope.elements; element && element->name;
> element++, seen <<= 1)
> - if (strcmp (element->name, name) == 0)
> + if (streq (element->name, name))
> break;
>
> if (element == NULL || element->name == NULL)
> @@ -307,7 +307,7 @@ gdb_xml_parser::start_element (const XML_Char *name,
> void *parsed_value;
>
> for (p = attrs; *p != NULL; p += 2)
> - if (!strcmp (attribute->name, p[0]))
> + if (streq (attribute->name, p[0]))
> {
> val = p[1];
> break;
> @@ -352,7 +352,7 @@ gdb_xml_parser::start_element (const XML_Char *name,
> for (attribute = element->attributes;
> attribute != NULL && attribute->name != NULL;
> attribute++)
> - if (strcmp (attribute->name, *p) == 0)
> + if (streq (attribute->name, *p))
> break;
>
> if (attribute == NULL || attribute->name == NULL)
> @@ -914,7 +914,7 @@ fetch_xml_builtin (const char *filename)
> const char *const (*p)[2];
>
> for (p = xml_builtin; (*p)[0]; p++)
> - if (strcmp ((*p)[0], filename) == 0)
> + if (streq ((*p)[0], filename))
> return (*p)[1];
>
> return NULL;
> diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c
> index c169e8c1b211..56fb7cff57a0 100644
> --- a/gdb/xml-syscall.c
> +++ b/gdb/xml-syscall.c
> @@ -244,13 +244,13 @@ syscall_start_syscall (struct gdb_xml_parser *parser,
>
> for (const gdb_xml_value &attr : attributes)
> {
> - if (strcmp (attr.name, "name") == 0)
> + if (streq (attr.name, "name"))
> name = (char *) attr.value.get ();
> - else if (strcmp (attr.name, "number") == 0)
> + else if (streq (attr.name, "number"))
> number = * (ULONGEST *) attr.value.get ();
> - else if (strcmp (attr.name, "alias") == 0)
> + else if (streq (attr.name, "alias"))
> alias = (char *) attr.value.get ();
> - else if (strcmp (attr.name, "groups") == 0)
> + else if (streq (attr.name, "groups"))
> groups = (char *) attr.value.get ();
> else
> internal_error (_("Unknown attribute name '%s'."), attr.name);
> diff --git a/gdb/xml-tdesc.c b/gdb/xml-tdesc.c
> index 472c604254a8..c0b1b6353157 100644
> --- a/gdb/xml-tdesc.c
> +++ b/gdb/xml-tdesc.c
> @@ -147,7 +147,7 @@ tdesc_start_target (struct gdb_xml_parser *parser,
> char *version
> = (char *) xml_find_attribute (attributes, "version")->value.get ();
>
> - if (strcmp (version, "1.0") != 0)
> + if (!streq (version, "1.0"))
> gdb_xml_error (parser,
> _("Target description has unsupported version \"%s\""),
> version);
> @@ -185,28 +185,27 @@ tdesc_start_reg (struct gdb_xml_parser *parser,
> name = (char *) attributes[ix++].value.get ();
> bitsize = * (ULONGEST *) attributes[ix++].value.get ();
>
> - if (ix < length && strcmp (attributes[ix].name, "regnum") == 0)
> + if (ix < length && streq (attributes[ix].name, "regnum"))
> regnum = * (ULONGEST *) attributes[ix++].value.get ();
> else
> regnum = data->next_regnum;
>
> - if (ix < length && strcmp (attributes[ix].name, "type") == 0)
> + if (ix < length && streq (attributes[ix].name, "type"))
> type = (char *) attributes[ix++].value.get ();
> else
> type = "int";
>
> - if (ix < length && strcmp (attributes[ix].name, "group") == 0)
> + if (ix < length && streq (attributes[ix].name, "group"))
> group = (char *) attributes[ix++].value.get ();
> else
> group = NULL;
>
> - if (ix < length && strcmp (attributes[ix].name, "save-restore") == 0)
> + if (ix < length && streq (attributes[ix].name, "save-restore"))
> save_restore = * (ULONGEST *) attributes[ix++].value.get ();
> else
> save_restore = 1;
>
> - if (strcmp (type, "int") != 0
> - && strcmp (type, "float") != 0
> + if (!streq (type, "int") && !streq (type, "float")
> && tdesc_named_type (data->current_feature, type) == NULL)
> gdb_xml_error (parser, _("Register \"%s\" has unknown type \"%s\""),
> name, type);
> @@ -381,8 +380,8 @@ tdesc_start_field (struct gdb_xml_parser *parser,
> gdb_xml_error (parser,
> _("Bitfields must live in explicitly sized types"));
>
> - if (field_type_id != NULL
> - && strcmp (field_type_id, "bool") == 0
> + if (field_type_id != nullptr
> + && streq (field_type_id, "bool")
> && start != end)
> {
> gdb_xml_error (parser,
> diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
> index 1916b8cfdfe4..20cb849f1f1d 100644
> --- a/gdb/xstormy16-tdep.c
> +++ b/gdb/xstormy16-tdep.c
> @@ -515,7 +515,7 @@ xstormy16_resolve_jmp_table_entry (struct gdbarch *gdbarch, CORE_ADDR faddr)
> gdb_byte buf[2 * xstormy16_inst_size];
>
> /* Return faddr if it's not pointing into the jump table. */
> - if (strcmp (faddr_sect->the_bfd_section->name, ".plt"))
> + if (!streq (faddr_sect->the_bfd_section->name, ".plt"))
> return faddr;
>
> if (!target_read_memory (faddr, buf, sizeof buf))
> @@ -543,12 +543,12 @@ xstormy16_find_jmp_table_entry (struct gdbarch *gdbarch, CORE_ADDR faddr)
> if (faddr_sect)
> {
> /* Return faddr if it's already a pointer to a jump table entry. */
> - if (!strcmp (faddr_sect->the_bfd_section->name, ".plt"))
> + if (streq (faddr_sect->the_bfd_section->name, ".plt"))
> return faddr;
>
> for (obj_section &osect : faddr_sect->objfile->sections ())
> {
> - if (!strcmp (osect.the_bfd_section->name, ".plt"))
> + if (streq (osect.the_bfd_section->name, ".plt"))
> {
> CORE_ADDR addr, endaddr;
>
> diff --git a/gdbserver/gdbreplay.cc b/gdbserver/gdbreplay.cc
> index d2cf3977359a..50ad3be34b0f 100644
> --- a/gdbserver/gdbreplay.cc
> +++ b/gdbserver/gdbreplay.cc
> @@ -109,7 +109,7 @@ static void
> remote_open (const char *name)
> {
> #ifndef USE_WIN32API
> - if (strcmp (name, "-") == 0)
> + if (streq (name, "-"))
> {
> remote_desc_in = 0;
> remote_desc_out = 1;
> diff --git a/gdbserver/linux-arc-low.cc b/gdbserver/linux-arc-low.cc
> index f3ccbbc61427..9c56af36fec7 100644
> --- a/gdbserver/linux-arc-low.cc
> +++ b/gdbserver/linux-arc-low.cc
> @@ -299,7 +299,7 @@ is_reg_name_available_p (const struct target_desc *tdesc,
> const char *name)
> {
> for (const gdb::reg &reg : tdesc->reg_defs)
> - if (strcmp (name, reg.name) == 0)
> + if (streq (name, reg.name))
> return true;
> return false;
> }
> diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
> index ca20a5bca168..0246217db86c 100644
> --- a/gdbserver/linux-low.cc
> +++ b/gdbserver/linux-low.cc
> @@ -6146,9 +6146,9 @@ linux_process_target::read_loadmap (const char *annex, CORE_ADDR offset,
> struct target_loadmap *data = NULL;
> unsigned int actual_length, copy_length;
>
> - if (strcmp (annex, "exec") == 0)
> + if (streq (annex, "exec"))
> addr = (int) LINUX_LOADMAP_EXEC;
> - else if (strcmp (annex, "interp") == 0)
> + else if (streq (annex, "interp"))
> addr = (int) LINUX_LOADMAP_INTERP;
> else
> return -1;
> diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc
> index cc7c05da3074..28a3d78f747b 100644
> --- a/gdbserver/linux-x86-low.cc
> +++ b/gdbserver/linux-x86-low.cc
> @@ -1084,7 +1084,7 @@ x86_target::process_qsupported (gdb::array_view<const char * const> features)
> p != NULL;
> p = strtok_r (NULL, ",", &saveptr))
> {
> - if (strcmp (p, "i386") == 0)
> + if (streq (p, "i386"))
> {
> use_xml = 1;
> break;
> diff --git a/gdbserver/linux-x86-tdesc.cc b/gdbserver/linux-x86-tdesc.cc
> index e405612be985..1ff6936ff287 100644
> --- a/gdbserver/linux-x86-tdesc.cc
> +++ b/gdbserver/linux-x86-tdesc.cc
> @@ -33,8 +33,7 @@ x86_linux_post_init_tdesc (target_desc *tdesc, bool is_64bit)
> However, init_target_desc requires us to override the already set
> value. That's fine, out new string should match the old one. */
> gdb_assert (tdesc_osabi_name (tdesc) != nullptr);
> - gdb_assert (strcmp (tdesc_osabi_name (tdesc),
> - gdbarch_osabi_name (osabi)) == 0);
> + gdb_assert (streq (tdesc_osabi_name (tdesc), gdbarch_osabi_name (osabi)));
> #endif /* ! IN_PROCESS_AGENT */
>
> #ifdef __x86_64__
> diff --git a/gdbserver/regcache.cc b/gdbserver/regcache.cc
> index f50c77275db8..4ace68869e50 100644
> --- a/gdbserver/regcache.cc
> +++ b/gdbserver/regcache.cc
> @@ -221,7 +221,7 @@ find_regno_no_throw (const struct target_desc *tdesc, const char *name)
> {
> for (int i = 0; i < tdesc->reg_defs.size (); ++i)
> {
> - if (strcmp (name, find_register_by_number (tdesc, i).name) == 0)
> + if (streq (name, find_register_by_number (tdesc, i).name))
> return i;
> }
> return {};
> diff --git a/gdbserver/remote-utils.cc b/gdbserver/remote-utils.cc
> index 7671206ebc1a..34801d0b76fe 100644
> --- a/gdbserver/remote-utils.cc
> +++ b/gdbserver/remote-utils.cc
> @@ -221,7 +221,7 @@ remote_prepare (const char *name)
> socklen_t tmp;
>
> remote_is_stdio = 0;
> - if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
> + if (streq (name, STDIO_CONNECTION_NAME))
> {
> /* We need to record fact that we're using stdio sooner than the
> call to remote_open so start_inferior knows the connection is
> @@ -322,7 +322,7 @@ remote_open (const char *name)
> error ("Only HOST:PORT is supported on this platform.");
> #endif
>
> - if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
> + if (streq (name, STDIO_CONNECTION_NAME))
> {
> fprintf (stderr, "Remote debugging using stdio\n");
>
> @@ -1508,7 +1508,7 @@ look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb)
>
> /* Check the cache first. */
> for (sym = proc->symbol_cache; sym; sym = sym->next)
> - if (strcmp (name, sym->name) == 0)
> + if (streq (name, sym->name))
> {
> *addrp = sym->addr;
> return 1;
> diff --git a/gdbserver/server.cc b/gdbserver/server.cc
> index 793af6354087..ebde831d6031 100644
> --- a/gdbserver/server.cc
> +++ b/gdbserver/server.cc
> @@ -467,11 +467,11 @@ handle_btrace_general_set (char *own_buf)
>
> try
> {
> - if (strcmp (op, "bts") == 0)
> + if (streq (op, "bts"))
> handle_btrace_enable_bts (thread);
> - else if (strcmp (op, "pt") == 0)
> + else if (streq (op, "pt"))
> handle_btrace_enable_pt (thread);
> - else if (strcmp (op, "off") == 0)
> + else if (streq (op, "off"))
> handle_btrace_disable (thread);
> else
> error (_("Bad Qbtrace operation. Use bts, pt, or off."));
> @@ -720,7 +720,7 @@ handle_general_set (char *own_buf)
> return;
> }
>
> - if (strcmp (p, "0") == 0)
> + if (streq (p, "0"))
> enabled = 0;
> else if (p[0] == '1' && (p[1] == ';' || p[1] == '\0'))
> enabled = 1;
> @@ -755,7 +755,7 @@ handle_general_set (char *own_buf)
> return;
> }
>
> - if (strcmp (own_buf, "QEnvironmentReset") == 0)
> + if (streq (own_buf, "QEnvironmentReset"))
> {
> our_environ = gdb_environ::from_host_environ ();
>
> @@ -808,7 +808,7 @@ handle_general_set (char *own_buf)
> return;
> }
>
> - if (strcmp (own_buf, "QStartNoAckMode") == 0)
> + if (streq (own_buf, "QStartNoAckMode"))
> {
> remote_debug_printf ("[noack mode enabled]");
>
> @@ -823,9 +823,9 @@ handle_general_set (char *own_buf)
> int req = -1;
> const char *req_str;
>
> - if (strcmp (mode, "0") == 0)
> + if (streq (mode, "0"))
> req = 0;
> - else if (strcmp (mode, "1") == 0)
> + else if (streq (mode, "1"))
> req = 1;
> else
> {
> @@ -878,9 +878,9 @@ handle_general_set (char *own_buf)
> char *mode = own_buf + strlen ("QAgent:");
> int req = 0;
>
> - if (strcmp (mode, "0") == 0)
> + if (streq (mode, "0"))
> req = 0;
> - else if (strcmp (mode, "1") == 0)
> + else if (streq (mode, "1"))
> req = 1;
> else
> {
> @@ -907,9 +907,9 @@ handle_general_set (char *own_buf)
> char *mode = own_buf + strlen ("QThreadEvents:");
> enum tribool req = TRIBOOL_UNKNOWN;
>
> - if (strcmp (mode, "0") == 0)
> + if (streq (mode, "0"))
> req = TRIBOOL_FALSE;
> - else if (strcmp (mode, "1") == 0)
> + else if (streq (mode, "1"))
> req = TRIBOOL_TRUE;
> else
> {
> @@ -1037,9 +1037,9 @@ handle_general_set (char *own_buf)
> {
> const char *value = own_buf + strlen ("QStartupWithShell:");
>
> - if (strcmp (value, "1") == 0)
> + if (streq (value, "1"))
> startup_with_shell = true;
> - else if (strcmp (value, "0") == 0)
> + else if (streq (value, "0"))
> startup_with_shell = false;
> else
> {
> @@ -1128,7 +1128,7 @@ get_features_xml (const char *annex)
> This variable is set up from the auto-generated
> init_registers_... routine for the current target. */
>
> - if (strcmp (annex, "target.xml") == 0)
> + if (streq (annex, "target.xml"))
> {
> const char *ret = tdesc_get_features_xml (desc);
>
> @@ -1144,7 +1144,7 @@ get_features_xml (const char *annex)
>
> /* Look for the annex. */
> for (i = 0; xml_builtin[i][0] != NULL; i++)
> - if (strcmp (annex, xml_builtin[i][0]) == 0)
> + if (streq (annex, xml_builtin[i][0]))
> break;
>
> if (xml_builtin[i][0] != NULL)
> @@ -1433,19 +1433,19 @@ parse_debug_format_options (const char *arg, int is_monitor)
>
> for (const gdb::unique_xmalloc_ptr<char> &option : options)
> {
> - if (strcmp (option.get (), "all") == 0)
> + if (streq (option.get (), "all"))
> {
> debug_timestamp = 1;
> if (is_monitor)
> monitor_output ("All extra debug format options enabled.\n");
> }
> - else if (strcmp (option.get (), "none") == 0)
> + else if (streq (option.get (), "none"))
> {
> debug_timestamp = 0;
> if (is_monitor)
> monitor_output ("All extra debug format options disabled.\n");
> }
> - else if (strcmp (option.get (), "timestamp") == 0)
> + else if (streq (option.get (), "timestamp"))
> {
> debug_timestamp = 1;
> if (is_monitor)
> @@ -1727,12 +1727,12 @@ handle_monitor_command (const char *mon, char *own_buf)
> write_enn (own_buf);
> }
> }
> - else if (strcmp (mon, "set debug-hw-points 1") == 0)
> + else if (streq (mon, "set debug-hw-points 1"))
> {
> show_debug_regs = 1;
> monitor_output ("H/W point debugging output enabled.\n");
> }
> - else if (strcmp (mon, "set debug-hw-points 0") == 0)
> + else if (streq (mon, "set debug-hw-points 0"))
> {
> show_debug_regs = 0;
> monitor_output ("H/W point debugging output disabled.\n");
> @@ -1750,13 +1750,13 @@ handle_monitor_command (const char *mon, char *own_buf)
> write_enn (own_buf);
> }
> }
> - else if (strcmp (mon, "set debug-file") == 0)
> + else if (streq (mon, "set debug-file"))
> debug_set_output (nullptr);
> else if (startswith (mon, "set debug-file "))
> debug_set_output (mon + sizeof ("set debug-file ") - 1);
> - else if (strcmp (mon, "help") == 0)
> + else if (streq (mon, "help"))
> monitor_show_help ();
> - else if (strcmp (mon, "exit") == 0)
> + else if (streq (mon, "exit"))
> exit_requested = true;
> else
> {
> @@ -2179,11 +2179,11 @@ handle_qxfer_btrace (const char *annex,
> return -3;
> }
>
> - if (strcmp (annex, "all") == 0)
> + if (streq (annex, "all"))
> type = BTRACE_READ_ALL;
> - else if (strcmp (annex, "new") == 0)
> + else if (streq (annex, "new"))
> type = BTRACE_READ_NEW;
> - else if (strcmp (annex, "delta") == 0)
> + else if (streq (annex, "delta"))
> type = BTRACE_READ_DELTA;
> else
> {
> @@ -2336,9 +2336,9 @@ handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
> {
> const struct qxfer *q = &qxfer_packets[i];
>
> - if (strcmp (object, q->object) == 0)
> + if (streq (object, q->object))
> {
> - if (strcmp (rw, "read") == 0)
> + if (streq (rw, "read"))
> {
> unsigned char *data;
> int n;
> @@ -2382,7 +2382,7 @@ handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
> free (data);
> return 1;
> }
> - else if (strcmp (rw, "write") == 0)
> + else if (streq (rw, "write"))
> {
> int n;
> unsigned int len;
> @@ -2538,7 +2538,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> };
>
> /* Reply the current thread id. */
> - if (strcmp ("qC", own_buf) == 0 && !disable_packet_qC)
> + if (streq ("qC", own_buf) && !disable_packet_qC)
> {
> ptid_t ptid;
> require_running_or_return (own_buf);
> @@ -2557,7 +2557,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> return;
> }
>
> - if (strcmp ("qSymbol::", own_buf) == 0)
> + if (streq ("qSymbol::", own_buf))
> {
> scoped_restore_current_thread restore_thread;
>
> @@ -2605,7 +2605,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
>
> if (!disable_packet_qfThreadInfo)
> {
> - if (strcmp ("qfThreadInfo", own_buf) == 0)
> + if (streq ("qfThreadInfo", own_buf))
> {
> require_running_or_return (own_buf);
> init_thread_iter ();
> @@ -2617,7 +2617,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> return;
> }
>
> - if (strcmp ("qsThreadInfo", own_buf) == 0)
> + if (streq ("qsThreadInfo", own_buf))
> {
> require_running_or_return (own_buf);
> /* We're done if the process iterator hits the end of the
> @@ -2638,8 +2638,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> }
> }
>
> - if (the_target->supports_read_offsets ()
> - && strcmp ("qOffsets", own_buf) == 0)
> + if (the_target->supports_read_offsets () && streq ("qOffsets", own_buf))
> {
> CORE_ADDR text, data;
>
> @@ -3010,8 +3009,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> return;
> }
>
> - if (strcmp (own_buf, "qAttached") == 0
> - || startswith (own_buf, "qAttached:"))
> + if (streq (own_buf, "qAttached") || startswith (own_buf, "qAttached:"))
> {
> struct process_info *process;
>
> @@ -3094,7 +3092,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
> return;
> }
>
> - if (strcmp ("qExecAndArgs", own_buf) == 0)
> + if (streq ("qExecAndArgs", own_buf))
> {
> if (program_path.get () == nullptr)
> sprintf (own_buf, "U");
> @@ -3568,7 +3566,7 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len)
> client_state &cs = get_client_state ();
> if (!disable_packet_vCont)
> {
> - if (strcmp (own_buf, "vCtrlC") == 0)
> + if (streq (own_buf, "vCtrlC"))
> {
> the_target->request_interrupt ();
> write_ok (own_buf);
> @@ -4100,7 +4098,7 @@ test_memory_tagging_functions (void)
>
> expected = "m0001020304";
> SELF_CHECK (create_fetch_memtags_reply (packet.data (), bv) == true);
> - SELF_CHECK (strcmp (packet.data (), expected.c_str ()) == 0);
> + SELF_CHECK (streq (packet.data (), expected.c_str ()));
>
> /* Test parsing a QMemTags request. */
>
> @@ -4269,8 +4267,8 @@ captured_main (int argc, char *argv[])
> gdb_assert (optarg != nullptr);
>
> if (optarg == nullptr
> - || strcmp (optarg, "-") == 0
> - || strcmp (optarg, STDIO_CONNECTION_NAME) == 0
> + || streq (optarg, "-")
> + || streq (optarg, STDIO_CONNECTION_NAME)
> || startswith (optarg, "--")
> || strchr (optarg, ':') != nullptr)
> {
> @@ -4310,8 +4308,7 @@ captured_main (int argc, char *argv[])
> {
> int original_optind = optind;
>
> - while (argv[optind] != nullptr
> - && strcmp (argv[optind], "--") != 0)
> + while (argv[optind] != nullptr && !streq (argv[optind], "--"))
> {
> wrapper_argv += argv[optind];
> wrapper_argv += ' ';
> @@ -4385,19 +4382,19 @@ captured_main (int argc, char *argv[])
> tok != nullptr;
> tok = strtok_r (nullptr, ",", &saveptr))
> {
> - if (strcmp ("vCont", tok) == 0)
> + if (streq ("vCont", tok))
> disable_packet_vCont = true;
> - else if (strcmp ("vConts", tok) == 0)
> + else if (streq ("vConts", tok))
> disable_packet_vCont_step = true;
> - else if (strcmp ("Tthread", tok) == 0)
> + else if (streq ("Tthread", tok))
> disable_packet_Tthread = true;
> - else if (strcmp ("qC", tok) == 0)
> + else if (streq ("qC", tok))
> disable_packet_qC = true;
> - else if (strcmp ("qfThreadInfo", tok) == 0)
> + else if (streq ("qfThreadInfo", tok))
> disable_packet_qfThreadInfo = true;
> - else if (strcmp ("T", tok) == 0)
> + else if (streq ("T", tok))
> disable_packet_T = true;
> - else if (strcmp ("threads", tok) == 0)
> + else if (streq ("threads", tok))
> {
> disable_packet_vCont = true;
> disable_packet_Tthread = true;
> @@ -4495,7 +4492,7 @@ captured_main (int argc, char *argv[])
>
> const char *port = argv[optind];
> ++optind;
> - if (port != nullptr && strcmp (port, "-") == 0)
> + if (port != nullptr && streq (port, "-"))
> {
> port = STDIO_CONNECTION_NAME;
>
> @@ -4529,7 +4526,7 @@ captured_main (int argc, char *argv[])
>
> /* --attach used to come after PORT, so allow it there for
> compatibility. */
> - if (*next_arg != NULL && strcmp (*next_arg, "--attach") == 0)
> + if (*next_arg != NULL && streq (*next_arg, "--attach"))
> {
> attach = true;
> next_arg++;
> diff --git a/gdbserver/thread-db.cc b/gdbserver/thread-db.cc
> index 7f29788d7d79..0bdcda2ced8b 100644
> --- a/gdbserver/thread-db.cc
> +++ b/gdbserver/thread-db.cc
> @@ -696,7 +696,7 @@ thread_db_load_search (void)
> where libpthread lives. We *could* fetch the info, but we don't
> do that yet. Ignore it. */
> }
> - else if (strcmp (this_dir, "$sdir") == 0)
> + else if (streq (this_dir, "$sdir"))
> {
> if (try_thread_db_load_from_sdir ())
> {
> diff --git a/gdbserver/tracepoint.cc b/gdbserver/tracepoint.cc
> index 9bedd13567a3..25a3e8ceadfe 100644
> --- a/gdbserver/tracepoint.cc
> +++ b/gdbserver/tracepoint.cc
> @@ -2497,7 +2497,7 @@ cmd_qtdp (char *own_buf)
> if (tpoint->type == trap_tracepoint || tp == NULL)
> {
> install_tracepoint (tpoint, own_buf);
> - if (strcmp (own_buf, "OK") != 0)
> + if (!streq (own_buf, "OK"))
> remove_tracepoint (tpoint);
> }
> else
> @@ -2685,7 +2685,7 @@ cmd_qtv (char *own_buf)
> /* Only make tsv's be undefined before the first trace run. After a
> trace run is over, the user might want to see the last value of
> the tsv, and it might not be available in a traceframe. */
> - else if (!tracing && strcmp (tracing_stop_reason, "tnotrun") == 0)
> + else if (!tracing && streq (tracing_stop_reason, "tnotrun"))
> {
> strcpy (own_buf, "U");
> return;
> @@ -3438,7 +3438,7 @@ cmd_qtstatus (char *packet)
> }
>
> /* If this was a forced stop, include any stop note that was supplied. */
> - if (strcmp (stop_reason_rsp, "tstop") == 0)
> + if (streq (stop_reason_rsp, "tstop"))
> {
> stop_reason_rsp = (char *) alloca (strlen ("tstop:") + strlen (buf3) + 1);
> strcpy (stop_reason_rsp, "tstop:");
> @@ -3803,7 +3803,7 @@ cmd_bigqtbuffer_size (char *own_buf)
> packet += strlen ("QTBuffer:size:");
>
> /* -1 is sent as literal "-1". */
> - if (strcmp (packet, "-1") == 0)
> + if (streq (packet, "-1"))
> sval = DEFAULT_TRACE_BUFFER_SIZE;
> else
> {
> @@ -3880,7 +3880,7 @@ cmd_qtnotes (char *own_buf)
> int
> handle_tracepoint_general_set (char *packet)
> {
> - if (strcmp ("QTinit", packet) == 0)
> + if (streq ("QTinit", packet))
> {
> cmd_qtinit (packet);
> return 1;
> @@ -3915,12 +3915,12 @@ handle_tracepoint_general_set (char *packet)
> cmd_qtro (packet);
> return 1;
> }
> - else if (strcmp ("QTStart", packet) == 0)
> + else if (streq ("QTStart", packet))
> {
> cmd_qtstart (packet);
> return 1;
> }
> - else if (strcmp ("QTStop", packet) == 0)
> + else if (streq ("QTStop", packet))
> {
> cmd_qtstop (packet);
> return 1;
> @@ -3957,7 +3957,7 @@ handle_tracepoint_general_set (char *packet)
> int
> handle_tracepoint_query (char *packet)
> {
> - if (strcmp ("qTStatus", packet) == 0)
> + if (streq ("qTStatus", packet))
> {
> cmd_qtstatus (packet);
> return 1;
> @@ -3967,22 +3967,22 @@ handle_tracepoint_query (char *packet)
> cmd_qtp (packet);
> return 1;
> }
> - else if (strcmp ("qTfP", packet) == 0)
> + else if (streq ("qTfP", packet))
> {
> cmd_qtfp (packet);
> return 1;
> }
> - else if (strcmp ("qTsP", packet) == 0)
> + else if (streq ("qTsP", packet))
> {
> cmd_qtsp (packet);
> return 1;
> }
> - else if (strcmp ("qTfV", packet) == 0)
> + else if (streq ("qTfV", packet))
> {
> cmd_qtfv (packet);
> return 1;
> }
> - else if (strcmp ("qTsV", packet) == 0)
> + else if (streq ("qTsV", packet))
> {
> cmd_qtsv (packet);
> return 1;
> @@ -3997,7 +3997,7 @@ handle_tracepoint_query (char *packet)
> cmd_qtbuffer (packet);
> return 1;
> }
> - else if (strcmp ("qTMinFTPILen", packet) == 0)
> + else if (streq ("qTMinFTPILen", packet))
> {
> cmd_qtminftpilen (packet);
> return 1;
> diff --git a/gdbsupport/common-exceptions.h b/gdbsupport/common-exceptions.h
> index b34f44a66087..040419e30df9 100644
> --- a/gdbsupport/common-exceptions.h
> +++ b/gdbsupport/common-exceptions.h
> @@ -179,7 +179,7 @@ struct gdb_exception
>
> return (reason == other.reason
> && error == other.error
> - && strcmp (msg1, msg2) == 0);
> + && streq (msg1, msg2));
> }
>
> /* Compare two exceptions. */
> diff --git a/gdbsupport/osabi.cc b/gdbsupport/osabi.cc
> index d91bbcdb7ec3..806a15997dce 100644
> --- a/gdbsupport/osabi.cc
> +++ b/gdbsupport/osabi.cc
> @@ -71,7 +71,7 @@ osabi_from_tdesc_string (const char *name)
> int i;
>
> for (i = 0; i < ARRAY_SIZE (gdb_osabi_names); i++)
> - if (strcmp (name, gdb_osabi_names[i].pretty) == 0)
> + if (streq (name, gdb_osabi_names[i].pretty))
> {
> /* See note above: the name table matches the indices assigned
> to enum gdb_osabi. */
> diff --git a/gdbsupport/signals.cc b/gdbsupport/signals.cc
> index eb321805c6d3..367ca571f3db 100644
> --- a/gdbsupport/signals.cc
> +++ b/gdbsupport/signals.cc
> @@ -98,8 +98,7 @@ gdb_signal_from_name (const char *name)
> for (sig = GDB_SIGNAL_HUP;
> sig < GDB_SIGNAL_LAST;
> sig = (enum gdb_signal) ((int) sig + 1))
> - if (signals[sig].name != NULL
> - && strcmp (name, signals[sig].name) == 0)
> + if (signals[sig].name != nullptr && streq (name, signals[sig].name))
> return sig;
> return GDB_SIGNAL_UNKNOWN;
> }
>
> base-commit: 07caff21f90c2f0c9b7b0e79b00b774be668594c
> --
> 2.53.0