From 61012eef8463764ccd9117dc1c9bc43cc452b7cc Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Fri, 6 Mar 2015 09:42:06 +0000 Subject: [PATCH] New common function "startswith" This commit introduces a new inline common function "startswith" which takes two string arguments and returns nonzero if the first string starts with the second. It also updates the 295 places where this logic was written out longhand to use the new function. gdb/ChangeLog: * common/common-utils.h (startswith): New inline function. All places where this logic was used updated to use the above. --- gdb/ChangeLog | 5 +++ gdb/ada-lang.c | 55 +++++++++++++++--------------- gdb/amd64-tdep.c | 3 +- gdb/amd64-windows-tdep.c | 4 +-- gdb/amd64obsd-tdep.c | 4 +-- gdb/arch-utils.c | 2 +- gdb/arm-tdep.c | 28 ++++++---------- gdb/arm-wince-tdep.c | 2 +- gdb/breakpoint.c | 8 ++--- gdb/bsd-uthread.c | 2 +- gdb/c-typeprint.c | 10 +++--- gdb/cli/cli-dump.c | 2 +- gdb/cli/cli-script.c | 28 ++++++++-------- gdb/coffread.c | 30 ++++++++--------- gdb/common/common-utils.h | 9 +++++ gdb/compile/compile.c | 4 +-- gdb/corelow.c | 2 +- gdb/cp-namespace.c | 3 +- gdb/dbxread.c | 14 ++++---- gdb/dictionary.c | 2 +- gdb/dwarf2-frame.c | 4 +-- gdb/dwarf2read.c | 17 +++++----- gdb/elfread.c | 2 +- gdb/gcore.c | 6 ++-- gdb/gdbserver/hostio.c | 12 +++---- gdb/gdbserver/linux-low.c | 4 +-- gdb/gdbserver/linux-x86-low.c | 2 +- gdb/gdbserver/notif.c | 2 +- gdb/gdbserver/remote-utils.c | 6 ++-- gdb/gdbserver/server.c | 59 +++++++++++++++----------------- gdb/gdbserver/tracepoint.c | 63 ++++++++++++++++------------------- gdb/gdbserver/win32-low.c | 2 +- gdb/gdbtypes.c | 4 +-- gdb/gnu-v2-abi.c | 6 ++-- gdb/gnu-v3-abi.c | 6 ++-- gdb/go-lang.c | 4 +-- gdb/guile/scm-type.c | 6 ++-- gdb/i386-cygwin-tdep.c | 2 +- gdb/i386-tdep.c | 7 ++-- gdb/i386obsd-tdep.c | 6 ++-- gdb/infcmd.c | 4 +-- gdb/jv-typeprint.c | 4 +-- gdb/linespec.c | 11 +++--- gdb/linux-nat.c | 8 ++--- gdb/m2-typeprint.c | 2 +- gdb/m32r-rom.c | 2 +- gdb/machoread.c | 2 +- gdb/macrocmd.c | 4 +-- gdb/microblaze-rom.c | 4 +-- gdb/minsyms.c | 2 +- gdb/mips-sde-tdep.c | 2 +- gdb/mips-tdep.c | 23 ++++++------- gdb/msp430-tdep.c | 3 +- gdb/nat/linux-procfs.c | 2 +- gdb/nbsd-tdep.c | 2 +- gdb/p-typeprint.c | 10 +++--- gdb/ppc-linux-tdep.c | 2 +- gdb/python/py-type.c | 6 ++-- gdb/regcache.c | 2 +- gdb/remote-m32r-sdi.c | 4 +-- gdb/remote-notif.c | 2 +- gdb/remote.c | 25 ++++++-------- gdb/reverse.c | 6 ++-- gdb/rs6000-tdep.c | 2 +- gdb/ser-tcp.c | 4 +-- gdb/serial.c | 4 +-- gdb/somread.c | 4 +-- gdb/sparc64nbsd-tdep.c | 2 +- gdb/sparcnbsd-tdep.c | 2 +- gdb/symtab.c | 6 ++-- gdb/tracefile-tfile.c | 10 +++--- gdb/tracepoint.c | 6 ++-- gdb/tui/tui-data.c | 2 +- gdb/utils.c | 5 ++- gdb/valops.c | 12 +++---- gdb/windows-nat.c | 8 ++--- gdb/xcoffread.c | 2 +- 77 files changed, 309 insertions(+), 329 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bfb584c50d..c7735f1b8b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-03-06 Gary Benson + + * common/common-utils.h (startswith): New inline function. + All places where this logic was used updated to use the above. + 2015-03-05 Pedro Alves PR gdb/18002 diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index b01672358b..1e70d12661 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -596,7 +596,7 @@ field_name_match (const char *field_name, const char *target) return (strncmp (field_name, target, len) == 0 && (field_name[len] == '\0' - || (strncmp (field_name + len, "___", 3) == 0 + || (startswith (field_name + len, "___") && strcmp (field_name + strlen (field_name) - 6, "___XVN") != 0))); } @@ -1003,8 +1003,7 @@ ada_encode (const char *decoded) for (mapping = ada_opname_table; mapping->encoded != NULL - && strncmp (mapping->decoded, p, - strlen (mapping->decoded)) != 0; mapping += 1) + && !startswith (p, mapping->decoded); mapping += 1) ; if (mapping->encoded == NULL) error (_("invalid Ada operator name: %s"), p); @@ -1085,9 +1084,9 @@ ada_remove_trailing_digits (const char *encoded, int *len) *len = i; else if (i >= 0 && encoded[i] == '$') *len = i; - else if (i >= 2 && strncmp (encoded + i - 2, "___", 3) == 0) + else if (i >= 2 && startswith (encoded + i - 2, "___")) *len = i - 2; - else if (i >= 1 && strncmp (encoded + i - 1, "__", 2) == 0) + else if (i >= 1 && startswith (encoded + i - 1, "__")) *len = i - 1; } } @@ -1156,7 +1155,7 @@ ada_decode (const char *encoded) /* The name of the Ada main procedure starts with "_ada_". This prefix is not part of the decoded name, so skip this part if we see this prefix. */ - if (strncmp (encoded, "_ada_", 5) == 0) + if (startswith (encoded, "_ada_")) encoded += 5; /* If the name starts with '_', then it is not a properly encoded @@ -1187,20 +1186,20 @@ ada_decode (const char *encoded) is for the body of a task, but that information does not actually appear in the decoded name. */ - if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0) + if (len0 > 3 && startswith (encoded + len0 - 3, "TKB")) len0 -= 3; /* Remove any trailing TB suffix. The TB suffix is slightly different from the TKB suffix because it is used for non-anonymous task bodies. */ - if (len0 > 2 && strncmp (encoded + len0 - 2, "TB", 2) == 0) + if (len0 > 2 && startswith (encoded + len0 - 2, "TB")) len0 -= 2; /* Remove trailing "B" suffixes. */ /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */ - if (len0 > 1 && strncmp (encoded + len0 - 1, "B", 1) == 0) + if (len0 > 1 && startswith (encoded + len0 - 1, "B")) len0 -= 1; /* Make decoded big enough for possible expansion by operator name. */ @@ -1258,7 +1257,7 @@ ada_decode (const char *encoded) /* Replace "TK__" with "__", which will eventually be translated into "." (just below). */ - if (i < len0 - 4 && strncmp (encoded + i, "TK__", 4) == 0) + if (i < len0 - 4 && startswith (encoded + i, "TK__")) i += 2; /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually @@ -1467,7 +1466,7 @@ match_name (const char *sym_name, const char *name, int wild) return (strncmp (sym_name, name, len_name) == 0 && is_name_suffix (sym_name + len_name)) - || (strncmp (sym_name, "_ada_", 5) == 0 + || (startswith (sym_name, "_ada_") && strncmp (sym_name + 5, name, len_name) == 0 && is_name_suffix (sym_name + len_name + 5)); } @@ -4604,7 +4603,7 @@ lesseq_defined_than (struct symbol *sym0, struct symbol *sym1) TYPE_CODE (type0) == TYPE_CODE (type1) && (equiv_types (type0, type1) || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0 - && strncmp (name1 + len0, "___XV", 5) == 0)); + && startswith (name1 + len0, "___XV"))); } case LOC_CONST: return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1) @@ -4700,7 +4699,7 @@ ada_lookup_simple_minsym (const char *name) using, for instance, Standard.Constraint_Error when Constraint_Error is ambiguous (due to the user defining its own Constraint_Error entity inside its program). */ - if (strncmp (name, "standard__", sizeof ("standard__") - 1) == 0) + if (startswith (name, "standard__")) name += sizeof ("standard__") - 1; ALL_MSYMBOLS (objfile, msymbol) @@ -5028,11 +5027,11 @@ old_renaming_is_invisible (const struct symbol *sym, const char *function_name) a library-level function. Strip this prefix before doing the comparison, as the encoding for the renaming does not contain this prefix. */ - if (strncmp (function_name, "_ada_", 5) == 0) + if (startswith (function_name, "_ada_")) function_name += 5; { - int is_invisible = strncmp (function_name, scope, strlen (scope)) != 0; + int is_invisible = !startswith (function_name, scope); do_cleanups (old_chain); return is_invisible; @@ -5430,7 +5429,7 @@ ada_lookup_symbol_list_worker (const char *name0, const struct block *block0, using, for instance, Standard.Constraint_Error when Constraint_Error is ambiguous (due to the user defining its own Constraint_Error entity inside its program). */ - if (strncmp (name0, "standard__", sizeof ("standard__") - 1) == 0) + if (startswith (name0, "standard__")) { block = NULL; name = name0 + sizeof ("standard__") - 1; @@ -5830,7 +5829,7 @@ advance_wild_match (const char **namep, const char *name0, int target0) if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9')) { name += 1; - if (name == name0 + 5 && strncmp (name0, "_ada", 4) == 0) + if (name == name0 + 5 && startswith (name0, "_ada")) break; else name += 1; @@ -5984,7 +5983,7 @@ ada_add_block_symbols (struct obstack *obstackp, cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0]; if (cmp == 0) { - cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (sym), 5); + cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_"); if (cmp == 0) cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5, name_len); @@ -6371,7 +6370,7 @@ ada_is_ignored_field (struct type *type, int field_num) for tagged types, and it contains the components inherited from the parent type. This field should not be printed as is, but should not be ignored either. */ - if (name[0] == '_' && strncmp (name, "_parent", 7) != 0) + if (name[0] == '_' && !startswith (name, "_parent")) return 1; } @@ -6698,8 +6697,8 @@ ada_is_parent_field (struct type *type, int field_num) const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num); return (name != NULL - && (strncmp (name, "PARENT", 6) == 0 - || strncmp (name, "_parent", 7) == 0)); + && (startswith (name, "PARENT") + || startswith (name, "_parent"))); } /* True iff field number FIELD_NUM of structure type TYPE is a @@ -6714,9 +6713,9 @@ ada_is_wrapper_field (struct type *type, int field_num) const char *name = TYPE_FIELD_NAME (type, field_num); return (name != NULL - && (strncmp (name, "PARENT", 6) == 0 + && (startswith (name, "PARENT") || strcmp (name, "REP") == 0 - || strncmp (name, "_parent", 7) == 0 + || startswith (name, "_parent") || name[0] == 'S' || name[0] == 'R' || name[0] == 'O')); } @@ -6787,7 +6786,7 @@ ada_variant_discrim_name (struct type *type0) for (discrim_end = name + strlen (name) - 6; discrim_end != name; discrim_end -= 1) { - if (strncmp (discrim_end, "___XVN", 6) == 0) + if (startswith (discrim_end, "___XVN")) break; } if (discrim_end == name) @@ -6799,7 +6798,7 @@ ada_variant_discrim_name (struct type *type0) if (discrim_start == name + 1) return ""; if ((discrim_start > name + 3 - && strncmp (discrim_start - 3, "___", 3) == 0) + && startswith (discrim_start - 3, "___")) || discrim_start[-1] == '.') break; } @@ -7551,7 +7550,7 @@ field_alignment (struct type *type, int f) else align_offset = len - 1; - if (align_offset < 7 || strncmp ("___XV", name + align_offset - 6, 5) != 0) + if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV")) return TARGET_CHAR_BIT; return atoi (name + align_offset) * TARGET_CHAR_BIT; @@ -12475,7 +12474,7 @@ catch_ada_exception_command_split (char *args, /* Check to see if we have a condition. */ args = skip_spaces (args); - if (strncmp (args, "if", 2) == 0 + if (startswith (args, "if") && (isspace (args[2]) || args[2] == '\0')) { args += 2; @@ -12736,7 +12735,7 @@ catch_ada_assert_command_split (char *args, char **cond_string) args = skip_spaces (args); /* Check whether a condition was provided. */ - if (strncmp (args, "if", 2) == 0 + if (startswith (args, "if") && (isspace (args[2]) || args[2] == '\0')) { args += 2; diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index e9de0f66ed..c76810342f 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -2378,8 +2378,7 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) if (post_prologue_pc && (cust != NULL && COMPUNIT_PRODUCER (cust) != NULL - && strncmp (COMPUNIT_PRODUCER (cust), "clang ", - sizeof ("clang ") - 1) == 0)) + && startswith (COMPUNIT_PRODUCER (cust), "clang "))) return max (start_pc, post_prologue_pc); } diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c index 2aa10a100d..de5d8c7ccf 100644 --- a/gdb/amd64-windows-tdep.c +++ b/gdb/amd64-windows-tdep.c @@ -1157,8 +1157,8 @@ amd64_windows_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) if (symname) { - if (strncmp (symname, "__imp_", 6) == 0 - || strncmp (symname, "_imp_", 5) == 0) + if (startswith (symname, "__imp_") + || startswith (symname, "_imp_")) destination = read_memory_unsigned_integer (indirect_addr, 8, byte_order); } diff --git a/gdb/amd64obsd-tdep.c b/gdb/amd64obsd-tdep.c index 04cd31ff00..d6c7e90a01 100644 --- a/gdb/amd64obsd-tdep.c +++ b/gdb/amd64obsd-tdep.c @@ -372,7 +372,7 @@ amd64obsd_trapframe_cache (struct frame_info *this_frame, void **this_cache) sp = get_frame_register_unsigned (this_frame, AMD64_RSP_REGNUM); find_pc_partial_function (func, &name, NULL, NULL); - if (name && strncmp (name, "Xintr", 5) == 0) + if (name && startswith (name, "Xintr")) addr = sp + 8; /* It's an interrupt frame. */ else addr = sp; @@ -436,7 +436,7 @@ amd64obsd_trapframe_sniffer (const struct frame_unwind *self, return (name && ((strcmp (name, "calltrap") == 0) || (strcmp (name, "osyscall1") == 0) || (strcmp (name, "Xsyscall") == 0) - || (strncmp (name, "Xintr", 5) == 0))); + || (startswith (name, "Xintr")))); } static const struct frame_unwind amd64obsd_trapframe_unwind = { diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index 32d48a744f..e1c8ab0163 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -661,7 +661,7 @@ initialize_current_architecture (void) chp = strchr (target_name, '-'); if (chp != NULL && chp - 2 >= target_name - && strncmp (chp - 2, "el", 2) == 0) + && startswith (chp - 2, "el")) default_byte_order = BFD_ENDIAN_LITTLE; } if (default_byte_order == BFD_ENDIAN_UNKNOWN) diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index d7cd6e5af8..630a2077d9 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -484,15 +484,15 @@ skip_prologue_function (struct gdbarch *gdbarch, CORE_ADDR pc, int is_thumb) /* On soft-float targets, __truncdfsf2 is called to convert promoted arguments to their argument types in non-prototyped functions. */ - if (strncmp (name, "__truncdfsf2", strlen ("__truncdfsf2")) == 0) + if (startswith (name, "__truncdfsf2")) return 1; - if (strncmp (name, "__aeabi_d2f", strlen ("__aeabi_d2f")) == 0) + if (startswith (name, "__aeabi_d2f")) return 1; /* Internal functions related to thread-local storage. */ - if (strncmp (name, "__tls_get_addr", strlen ("__tls_get_addr")) == 0) + if (startswith (name, "__tls_get_addr")) return 1; - if (strncmp (name, "__aeabi_read_tp", strlen ("__aeabi_read_tp")) == 0) + if (startswith (name, "__aeabi_read_tp")) return 1; } else @@ -1314,9 +1314,7 @@ arm_skip_stack_protector(CORE_ADDR pc, struct gdbarch *gdbarch) /* ADDR must correspond to a symbol whose name is __stack_chk_guard. Otherwise, this sequence cannot be for stack protector. */ if (stack_chk_guard.minsym == NULL - || strncmp (MSYMBOL_LINKAGE_NAME (stack_chk_guard.minsym), - "__stack_chk_guard", - strlen ("__stack_chk_guard")) != 0) + || !startswith (MSYMBOL_LINKAGE_NAME (stack_chk_guard.minsym), "__stack_chk_guard")) return pc; if (is_thumb) @@ -1413,10 +1411,8 @@ arm_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) if (post_prologue_pc && (cust == NULL || COMPUNIT_PRODUCER (cust) == NULL - || strncmp (COMPUNIT_PRODUCER (cust), "GNU ", - sizeof ("GNU ") - 1) == 0 - || strncmp (COMPUNIT_PRODUCER (cust), "clang ", - sizeof ("clang ") - 1) == 0)) + || startswith (COMPUNIT_PRODUCER (cust), "GNU ") + || startswith (COMPUNIT_PRODUCER (cust), "clang "))) return post_prologue_pc; if (post_prologue_pc != 0) @@ -9315,8 +9311,8 @@ arm_skip_stub (struct frame_info *frame, CORE_ADDR pc) _call_via_xx, where x is the register name. The possible names are r0-r9, sl, fp, ip, sp, and lr. ARM RealView has similar functions, named __ARM_call_via_r[0-7]. */ - if (strncmp (name, "_call_via_", 10) == 0 - || strncmp (name, "__ARM_call_via_", strlen ("__ARM_call_via_")) == 0) + if (startswith (name, "_call_via_") + || startswith (name, "__ARM_call_via_")) { /* Use the name suffix to determine which register contains the target PC. */ @@ -9338,11 +9334,9 @@ arm_skip_stub (struct frame_info *frame, CORE_ADDR pc) namelen = strlen (name); if (name[0] == '_' && name[1] == '_' && ((namelen > 2 + strlen ("_from_thumb") - && strncmp (name + namelen - strlen ("_from_thumb"), "_from_thumb", - strlen ("_from_thumb")) == 0) + && startswith (name + namelen - strlen ("_from_thumb"), "_from_thumb")) || (namelen > 2 + strlen ("_from_arm") - && strncmp (name + namelen - strlen ("_from_arm"), "_from_arm", - strlen ("_from_arm")) == 0))) + && startswith (name + namelen - strlen ("_from_arm"), "_from_arm")))) { char *target_name; int target_len = namelen - 2; diff --git a/gdb/arm-wince-tdep.c b/gdb/arm-wince-tdep.c index 206ff4f72b..72295ba4ca 100644 --- a/gdb/arm-wince-tdep.c +++ b/gdb/arm-wince-tdep.c @@ -66,7 +66,7 @@ arm_pe_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) return 0; symname = MSYMBOL_LINKAGE_NAME (indsym.minsym); - if (symname == NULL || strncmp (symname, "__imp_", 6) != 0) + if (symname == NULL || !startswith (symname, "__imp_")) return 0; next_pc = read_memory_unsigned_integer (indirect, 4, byte_order); diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index c5d3240970..d85f271e04 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -9729,7 +9729,7 @@ parse_breakpoint_sals (char **address, /* If no arg given, or if first arg is 'if ', use the default breakpoint. */ if ((*address) == NULL - || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2]))) + || (startswith ((*address), "if") && isspace ((*address)[2]))) { /* The last displayed codepoint, if it's valid, is our default breakpoint address. */ @@ -11401,7 +11401,7 @@ watch_command_1 (const char *arg, int accessflag, int from_tty, tok++; toklen = end_tok - tok + 1; - if (toklen == 6 && !strncmp (tok, "thread", 6)) + if (toklen == 6 && startswith (tok, "thread")) { /* At this point we've found a "thread" token, which means the user is trying to set a watchpoint that triggers @@ -11423,7 +11423,7 @@ watch_command_1 (const char *arg, int accessflag, int from_tty, if (!valid_thread_id (thread)) invalid_thread_id_error (thread); } - else if (toklen == 4 && !strncmp (tok, "mask", 4)) + else if (toklen == 4 && startswith (tok, "mask")) { /* We've found a "mask" token, which means the user wants to create a hardware watchpoint that is going to have the mask @@ -15493,7 +15493,7 @@ strace_command (char *arg, int from_tty) /* Decide if we are dealing with a static tracepoint marker (`-m'), or with a normal static tracepoint. */ - if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2])) + if (arg && startswith (arg, "-m") && isspace (arg[2])) ops = &strace_marker_breakpoint_ops; else ops = &tracepoint_breakpoint_ops; diff --git a/gdb/bsd-uthread.c b/gdb/bsd-uthread.c index 0a838ef8a3..a5abb63d9e 100644 --- a/gdb/bsd-uthread.c +++ b/gdb/bsd-uthread.c @@ -247,7 +247,7 @@ bsd_uthread_solib_loaded (struct so_list *so) for (names = bsd_uthread_solib_names; *names; names++) { - if (strncmp (so->so_original_name, *names, strlen (*names)) == 0) + if (startswith (so->so_original_name, *names)) { solib_read_symbols (so, 0); diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 64279c86eb..421b720148 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -544,7 +544,7 @@ is_type_conversion_operator (struct type *type, int i, int j) some other way, feel free to rewrite this function. */ const char *name = TYPE_FN_FIELDLIST_NAME (type, i); - if (strncmp (name, "operator", 8) != 0) + if (!startswith (name, "operator")) return 0; name += 8; @@ -560,9 +560,9 @@ is_type_conversion_operator (struct type *type, int i, int j) /* If this doesn't look like the start of an identifier, then it isn't a type conversion operator. */ return 0; - else if (strncmp (name, "new", 3) == 0) + else if (startswith (name, "new")) name += 3; - else if (strncmp (name, "delete", 6) == 0) + else if (startswith (name, "delete")) name += 6; else /* If it doesn't look like new or delete, it's a type conversion @@ -933,7 +933,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, enum}" tag for unnamed struct/union/enum's, which we don't want to print. */ if (TYPE_TAG_NAME (type) != NULL - && strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) + && !startswith (TYPE_TAG_NAME (type), "{unnamed")) { /* When printing the tag name, we are still effectively printing in the outer context, hence the use of FLAGS @@ -1345,7 +1345,7 @@ c_type_print_base (struct type *type, struct ui_file *stream, tag for unnamed struct/union/enum's, which we don't want to print. */ if (TYPE_TAG_NAME (type) != NULL - && strncmp (TYPE_TAG_NAME (type), "{unnamed", 8)) + && !startswith (TYPE_TAG_NAME (type), "{unnamed")) { print_name_maybe_canonical (TYPE_TAG_NAME (type), flags, stream); if (show > 0) diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c index 481c3a28bc..0f9485f85e 100644 --- a/gdb/cli/cli-dump.c +++ b/gdb/cli/cli-dump.c @@ -575,7 +575,7 @@ restore_command (char *args_in, int from_tty) char *binary_string = "binary"; /* Look for optional "binary" flag. */ - if (strncmp (args, binary_string, strlen (binary_string)) == 0) + if (startswith (args, binary_string)) { binary_flag = 1; args += strlen (binary_string); diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 65232dacbf..010d661af4 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -800,7 +800,7 @@ locate_arg (char *p) { while ((p = strchr (p, '$'))) { - if (strncmp (p, "$arg", 4) == 0 + if (startswith (p, "$arg") && (isdigit (p[4]) || p[4] == 'c')) return p; p++; @@ -988,7 +988,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands, /* 'end' is always recognized, regardless of parse_commands value. We also permit whitespace before end and after. */ - if (p_end - p_start == 3 && !strncmp (p_start, "end", 3)) + if (p_end - p_start == 3 && startswith (p_start, "end")) return end_command; if (parse_commands) @@ -1005,14 +1005,14 @@ process_next_line (char *p, struct command_line **command, int parse_commands, return nop_command; /* Is the else clause of an if control structure? */ - if (p_end - p == 4 && !strncmp (p, "else", 4)) + if (p_end - p == 4 && startswith (p, "else")) return else_command; /* Check for while, if, break, continue, etc and build a new command line structure for them. */ - if ((p_end - p >= 14 && !strncmp (p, "while-stepping", 14)) - || (p_end - p >= 8 && !strncmp (p, "stepping", 8)) - || (p_end - p >= 2 && !strncmp (p, "ws", 2))) + if ((p_end - p >= 14 && startswith (p, "while-stepping")) + || (p_end - p >= 8 && startswith (p, "stepping")) + || (p_end - p >= 2 && startswith (p, "ws"))) { /* Because validate_actionline and encode_action lookup command's line as command, we need the line to @@ -1027,7 +1027,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands, not. */ *command = build_command_line (while_stepping_control, p); } - else if (p_end - p > 5 && !strncmp (p, "while", 5)) + else if (p_end - p > 5 && startswith (p, "while")) { char *first_arg; @@ -1036,7 +1036,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands, first_arg++; *command = build_command_line (while_control, first_arg); } - else if (p_end - p > 2 && !strncmp (p, "if", 2)) + else if (p_end - p > 2 && startswith (p, "if")) { char *first_arg; @@ -1045,7 +1045,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands, first_arg++; *command = build_command_line (if_control, first_arg); } - else if (p_end - p >= 8 && !strncmp (p, "commands", 8)) + else if (p_end - p >= 8 && startswith (p, "commands")) { char *first_arg; @@ -1054,13 +1054,13 @@ process_next_line (char *p, struct command_line **command, int parse_commands, first_arg++; *command = build_command_line (commands_control, first_arg); } - else if (p_end - p == 6 && !strncmp (p, "python", 6)) + else if (p_end - p == 6 && startswith (p, "python")) { /* Note that we ignore the inline "python command" form here. */ *command = build_command_line (python_control, ""); } - else if (p_end - p == 6 && !strncmp (p, "compile", 7)) + else if (p_end - p == 6 && startswith (p, "compile")) { /* Note that we ignore the inline "compile command" form here. */ @@ -1068,12 +1068,12 @@ process_next_line (char *p, struct command_line **command, int parse_commands, (*command)->control_u.compile.scope = COMPILE_I_INVALID_SCOPE; } - else if (p_end - p == 5 && !strncmp (p, "guile", 5)) + else if (p_end - p == 5 && startswith (p, "guile")) { /* Note that we ignore the inline "guile command" form here. */ *command = build_command_line (guile_control, ""); } - else if (p_end - p == 10 && !strncmp (p, "loop_break", 10)) + else if (p_end - p == 10 && startswith (p, "loop_break")) { *command = (struct command_line *) xmalloc (sizeof (struct command_line)); @@ -1083,7 +1083,7 @@ process_next_line (char *p, struct command_line **command, int parse_commands, (*command)->body_count = 0; (*command)->body_list = NULL; } - else if (p_end - p == 13 && !strncmp (p, "loop_continue", 13)) + else if (p_end - p == 13 && startswith (p, "loop_continue")) { *command = (struct command_line *) xmalloc (sizeof (struct command_line)); diff --git a/gdb/coffread.c b/gdb/coffread.c index 366d82823a..28f7b18120 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -231,7 +231,7 @@ coff_locate_sections (bfd *abfd, asection *sectp, void *csip) csi->textaddr = bfd_section_vma (abfd, sectp); csi->textsize += bfd_section_size (abfd, sectp); } - else if (strncmp (name, ".text", sizeof ".text" - 1) == 0) + else if (startswith (name, ".text")) { csi->textsize += bfd_section_size (abfd, sectp); } @@ -239,7 +239,7 @@ coff_locate_sections (bfd *abfd, asection *sectp, void *csip) { csi->stabstrsect = sectp; } - else if (strncmp (name, ".stab", sizeof ".stab" - 1) == 0) + else if (startswith (name, ".stab")) { const char *s; @@ -448,7 +448,7 @@ is_import_fixup_symbol (struct coff_symbol *cs, return 0; /* The name must start with "__fu__". */ - if (strncmp (cs->c_name, "__fu", 4) != 0) + if (!startswith (cs->c_name, "__fu")) return 0; if (! isdigit (cs->c_name[4])) return 0; @@ -605,8 +605,8 @@ coff_symfile_read (struct objfile *objfile, int symfile_flags) FIXME: We should use BFD to read the symbol table, and thus avoid this problem. */ pe_file = - strncmp (bfd_get_target (objfile->obfd), "pe", 2) == 0 - || strncmp (bfd_get_target (objfile->obfd), "epoc-pe", 7) == 0; + startswith (bfd_get_target (objfile->obfd), "pe") + || startswith (bfd_get_target (objfile->obfd), "epoc-pe"); /* End of warning. */ @@ -672,8 +672,8 @@ coff_symfile_read (struct objfile *objfile, int symfile_flags) symbol in OBJFILE. Note that 'maintenance print msymbols' shows that type of these "_imp_XXXX" symbols is mst_data. */ if (MSYMBOL_TYPE (msym) == mst_data - && (strncmp (name, "__imp_", 6) == 0 - || strncmp (name, "_imp_", 5) == 0)) + && (startswith (name, "__imp_") + || startswith (name, "_imp_"))) { const char *name1 = (name[1] == '_' ? &name[7] : &name[6]); struct bound_minimal_symbol found; @@ -946,14 +946,14 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms, } else if (!SDB_TYPE (cs->c_type) && cs->c_name[0] == 'L' - && (strncmp (cs->c_name, "LI%", 3) == 0 - || strncmp (cs->c_name, "LF%", 3) == 0 - || strncmp (cs->c_name, "LC%", 3) == 0 - || strncmp (cs->c_name, "LP%", 3) == 0 - || strncmp (cs->c_name, "LPB%", 4) == 0 - || strncmp (cs->c_name, "LBB%", 4) == 0 - || strncmp (cs->c_name, "LBE%", 4) == 0 - || strncmp (cs->c_name, "LPBX%", 5) == 0)) + && (startswith (cs->c_name, "LI%") + || startswith (cs->c_name, "LF%") + || startswith (cs->c_name, "LC%") + || startswith (cs->c_name, "LP%") + || startswith (cs->c_name, "LPB%") + || startswith (cs->c_name, "LBB%") + || startswith (cs->c_name, "LBE%") + || startswith (cs->c_name, "LPBX%"))) /* At least on a 3b1, gcc generates swbeg and string labels that look like this. Ignore them. */ break; diff --git a/gdb/common/common-utils.h b/gdb/common/common-utils.h index 60aa030a0f..cd2665aec5 100644 --- a/gdb/common/common-utils.h +++ b/gdb/common/common-utils.h @@ -68,4 +68,13 @@ char *savestring (const char *ptr, size_t len); extern char *safe_strerror (int); +/* Return non-zero if the start of STRING matches PATTERN, zero + otherwise. */ + +static inline int +startswith (const char *string, const char *pattern) +{ + return strncmp (string, pattern, strlen (pattern)) == 0; +} + #endif diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index c204a135ef..1d342a0d82 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -172,7 +172,7 @@ do_rmdir (void *arg) char *zap; int wstat; - gdb_assert (strncmp (dir, TMP_PREFIX, strlen (TMP_PREFIX)) == 0); + gdb_assert (startswith (dir, TMP_PREFIX)); zap = concat ("rm -rf ", dir, (char *) NULL); wstat = system (zap); if (wstat == -1 || !WIFEXITED (wstat) || WEXITSTATUS (wstat) != 0) @@ -313,7 +313,7 @@ get_selected_pc_producer_options (void) const char *cs; if (symtab == NULL || symtab->producer == NULL - || strncmp (symtab->producer, "GNU ", strlen ("GNU ")) != 0) + || !startswith (symtab->producer, "GNU ")) return NULL; cs = symtab->producer; diff --git a/gdb/corelow.c b/gdb/corelow.c index c7d4318e00..65e13268cb 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -234,7 +234,7 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg) int fake_pid_p = 0; struct inferior *inf; - if (strncmp (bfd_section_name (abfd, asect), ".reg/", 5) != 0) + if (!startswith (bfd_section_name (abfd, asect), ".reg/")) return; core_tid = atoi (bfd_section_name (abfd, asect) + 5); diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 4f68432192..4a00cb62e6 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -497,8 +497,7 @@ cp_lookup_symbol_via_imports (const char *scope, len = strlen (current->import_dest); directive_match = (search_parents - ? (strncmp (scope, current->import_dest, - strlen (current->import_dest)) == 0 + ? (startswith (scope, current->import_dest) && (len == 0 || scope[len] == ':' || scope[len] == '\0')) diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 4f60e10bce..c8f974ff04 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -539,12 +539,12 @@ dbx_symfile_read (struct objfile *objfile, int symfile_flags) differently from Solaris), and false for SunOS4 and other a.out file formats. */ block_address_function_relative = - ((0 == strncmp (bfd_get_target (sym_bfd), "elf", 3)) - || (0 == strncmp (bfd_get_target (sym_bfd), "som", 3)) - || (0 == strncmp (bfd_get_target (sym_bfd), "coff", 4)) - || (0 == strncmp (bfd_get_target (sym_bfd), "pe", 2)) - || (0 == strncmp (bfd_get_target (sym_bfd), "epoc-pe", 7)) - || (0 == strncmp (bfd_get_target (sym_bfd), "nlm", 3))); + ((startswith (bfd_get_target (sym_bfd), "elf")) + || (startswith (bfd_get_target (sym_bfd), "som")) + || (startswith (bfd_get_target (sym_bfd), "coff")) + || (startswith (bfd_get_target (sym_bfd), "pe")) + || (startswith (bfd_get_target (sym_bfd), "epoc-pe")) + || (startswith (bfd_get_target (sym_bfd), "nlm"))); val = bfd_seek (sym_bfd, DBX_SYMTAB_OFFSET (objfile), SEEK_SET); if (val < 0) @@ -2547,7 +2547,7 @@ read_ofile_symtab (struct objfile *objfile, struct partial_symtab *pst) processing_gcc_compilation = 2; if (tempstring[0] == bfd_get_symbol_leading_char (symfile_bfd)) ++tempstring; - if (strncmp (tempstring, "__gnu_compiled", 14) == 0) + if (startswith (tempstring, "__gnu_compiled")) processing_gcc_compilation = 2; } } diff --git a/gdb/dictionary.c b/gdb/dictionary.c index 2c81182cb5..a16955a071 100644 --- a/gdb/dictionary.c +++ b/gdb/dictionary.c @@ -806,7 +806,7 @@ dict_hash (const char *string0) string = string0; if (*string == '_') { - if (strncmp (string, "_ada_", 5) == 0) + if (startswith (string, "_ada_")) string += 5; else return msymbol_hash_iw (string0); diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 71e3f6b7e6..b648aa350e 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -878,7 +878,7 @@ dwarf2_frame_find_quirks (struct dwarf2_frame_state *fs, this problem is fixed (no quirk needed). If the armcc augmentation is missing, the quirk is needed. */ if (fde->cie->version == 3 - && (strncmp (fde->cie->augmentation, "armcc", 5) != 0 + && (!startswith (fde->cie->augmentation, "armcc") || strchr (fde->cie->augmentation + 5, '+') == NULL)) fs->armcc_cfa_offsets_reversed = 1; @@ -1935,7 +1935,7 @@ decode_frame_entry_1 (struct comp_unit *unit, const gdb_byte *start, /* Ignore armcc augmentations. We only use them for quirks, and that doesn't happen until later. */ - if (strncmp (augmentation, "armcc", 5) == 0) + if (startswith (augmentation, "armcc")) augmentation += strlen (augmentation); /* The GCC 2.x "eh" augmentation has a pointer immediately diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 071f97bea6..a283cba637 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -12306,7 +12306,7 @@ check_producer (struct dwarf2_cu *cu) cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6); cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3); } - else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0) + else if (startswith (cu->producer, "Intel(R) C")) cu->producer_is_icc = 1; else { @@ -12987,8 +12987,8 @@ is_vtable_name (const char *name, struct dwarf2_cu *cu) /* Look for the C++ and Java forms of the vtable. */ if ((cu->language == language_java - && strncmp (name, vtable, sizeof (vtable) - 1) == 0) - || (strncmp (name, vptr, sizeof (vptr) - 1) == 0 + && startswith (name, vtable)) + || (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))) return 1; @@ -13296,8 +13296,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu) } } else if (cu->producer - && strncmp (cu->producer, - "IBM(R) XL C/C++ Advanced Edition", 32) == 0) + && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition")) { /* The IBM XLC compiler does not provide direct indication of the containing type, but the vtable pointer is @@ -14695,7 +14694,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu) type_flags |= TYPE_FLAG_UNSIGNED; if (cu->language == language_fortran && name - && strncmp (name, "character(", sizeof ("character(") - 1) == 0) + && startswith (name, "character(")) code = TYPE_CODE_CHAR; break; case DW_ATE_signed_char: @@ -18262,7 +18261,7 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu, if (cu->language == language_fortran && die->parent && die->parent->tag == DW_TAG_module && cu->producer - && strncmp (cu->producer, "GNU Fortran ", 12) == 0) + && startswith (cu->producer, "GNU Fortran ")) SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED; /* A variable with DW_AT_external is never static, @@ -19339,8 +19338,8 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) or simply "" or "" in GCC 4.3 and GCC 4.4. We work around this problem by ignoring these. */ if (attr && DW_STRING (attr) - && (strncmp (DW_STRING (attr), "._", 2) == 0 - || strncmp (DW_STRING (attr), "name, ".plt", 4) != 0 + if (!startswith (sect->name, ".plt") && bfd_get_section_by_name (abfd, ".plt") != NULL) continue; diff --git a/gdb/gcore.c b/gdb/gcore.c index 1ebff2a420..3e05c61267 100644 --- a/gdb/gcore.c +++ b/gdb/gcore.c @@ -387,9 +387,9 @@ make_output_phdrs (bfd *obfd, asection *osec, void *ignored) int p_type = 0; /* FIXME: these constants may only be applicable for ELF. */ - if (strncmp (bfd_section_name (obfd, osec), "load", 4) == 0) + if (startswith (bfd_section_name (obfd, osec), "load")) p_type = PT_LOAD; - else if (strncmp (bfd_section_name (obfd, osec), "note", 4) == 0) + else if (startswith (bfd_section_name (obfd, osec), "note")) p_type = PT_NOTE; else p_type = PT_NULL; @@ -562,7 +562,7 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored) return; /* Only interested in "load" sections. */ - if (strncmp ("load", bfd_section_name (obfd, osec), 4) != 0) + if (!startswith (bfd_section_name (obfd, osec), "load")) return; size = min (total_size, MAX_COPY_BYTES); diff --git a/gdb/gdbserver/hostio.c b/gdb/gdbserver/hostio.c index e6b7754cf1..ec29eb9d2d 100644 --- a/gdb/gdbserver/hostio.c +++ b/gdb/gdbserver/hostio.c @@ -511,17 +511,17 @@ handle_readlink (char *own_buf, int *new_packet_len) int handle_vFile (char *own_buf, int packet_len, int *new_packet_len) { - if (strncmp (own_buf, "vFile:open:", 11) == 0) + if (startswith (own_buf, "vFile:open:")) handle_open (own_buf); - else if (strncmp (own_buf, "vFile:pread:", 12) == 0) + else if (startswith (own_buf, "vFile:pread:")) handle_pread (own_buf, new_packet_len); - else if (strncmp (own_buf, "vFile:pwrite:", 13) == 0) + else if (startswith (own_buf, "vFile:pwrite:")) handle_pwrite (own_buf, packet_len); - else if (strncmp (own_buf, "vFile:close:", 12) == 0) + else if (startswith (own_buf, "vFile:close:")) handle_close (own_buf); - else if (strncmp (own_buf, "vFile:unlink:", 13) == 0) + else if (startswith (own_buf, "vFile:unlink:")) handle_unlink (own_buf); - else if (strncmp (own_buf, "vFile:readlink:", 15) == 0) + else if (startswith (own_buf, "vFile:readlink:")) handle_readlink (own_buf, new_packet_len); else return 0; diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 4da11c6b08..48d905b81b 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -5903,9 +5903,9 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, break; len = sep - annex; - if (len == 5 && strncmp (annex, "start", 5) == 0) + if (len == 5 && startswith (annex, "start")) addrp = &lm_addr; - else if (len == 4 && strncmp (annex, "prev", 4) == 0) + else if (len == 4 && startswith (annex, "prev")) addrp = &lm_prev; else { diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index 3a10e612b2..72478d8647 100644 --- a/gdb/gdbserver/linux-x86-low.c +++ b/gdb/gdbserver/linux-x86-low.c @@ -1523,7 +1523,7 @@ x86_linux_process_qsupported (const char *query) with "i386" in qSupported query, it supports x86 XML target descriptions. */ use_xml = 0; - if (query != NULL && strncmp (query, "xmlRegisters=", 13) == 0) + if (query != NULL && startswith (query, "xmlRegisters=")) { char *copy = xstrdup (query + 13); char *p; diff --git a/gdb/gdbserver/notif.c b/gdb/gdbserver/notif.c index ba2af775b7..436c1b8244 100644 --- a/gdb/gdbserver/notif.c +++ b/gdb/gdbserver/notif.c @@ -86,7 +86,7 @@ handle_notif_ack (char *own_buf, int packet_len) { const char *ack_name = notifs[i]->ack_name; - if (strncmp (own_buf, ack_name, strlen (ack_name)) == 0 + if (startswith (own_buf, ack_name) && packet_len == strlen (ack_name)) break; } diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c index 02c40f5194..1de86beecf 100644 --- a/gdb/gdbserver/remote-utils.c +++ b/gdb/gdbserver/remote-utils.c @@ -531,7 +531,7 @@ hex_or_minus_one (char *buf, char **obuf) { ULONGEST ret; - if (strncmp (buf, "-1", 2) == 0) + if (startswith (buf, "-1")) { ret = (ULONGEST) -1; buf += 2; @@ -1447,7 +1447,7 @@ look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb) return -1; } - if (strncmp (own_buf, "qSymbol:", strlen ("qSymbol:")) != 0) + if (!startswith (own_buf, "qSymbol:")) { warning ("Malformed response to qSymbol, ignoring: %s\n", own_buf); return -1; @@ -1556,7 +1556,7 @@ relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc) return -1; } - if (strncmp (own_buf, "qRelocInsn:", strlen ("qRelocInsn:")) != 0) + if (!startswith (own_buf, "qRelocInsn:")) { warning ("Malformed response to qRelocInsn, ignoring: %s\n", own_buf); diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index 83529ffcd4..4189877fa3 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -429,7 +429,7 @@ handle_btrace_general_set (char *own_buf) const char *err; char *op; - if (strncmp ("Qbtrace:", own_buf, strlen ("Qbtrace:")) != 0) + if (!startswith (own_buf, "Qbtrace:")) return 0; op = own_buf + strlen ("Qbtrace:"); @@ -473,7 +473,7 @@ handle_btrace_conf_general_set (char *own_buf) struct thread_info *thread; char *op; - if (strncmp ("Qbtrace-conf:", own_buf, strlen ("Qbtrace-conf:")) != 0) + if (!startswith (own_buf, "Qbtrace-conf:")) return 0; op = own_buf + strlen ("Qbtrace-conf:"); @@ -492,7 +492,7 @@ handle_btrace_conf_general_set (char *own_buf) return -1; } - if (strncmp (op, "bts:size=", strlen ("bts:size=")) == 0) + if (startswith (op, "bts:size=")) { unsigned long size; char *endp = NULL; @@ -522,7 +522,7 @@ handle_btrace_conf_general_set (char *own_buf) static void handle_general_set (char *own_buf) { - if (strncmp ("QPassSignals:", own_buf, strlen ("QPassSignals:")) == 0) + if (startswith (own_buf, "QPassSignals:")) { int numsigs = (int) GDB_SIGNAL_LAST, i; const char *p = own_buf + strlen ("QPassSignals:"); @@ -547,7 +547,7 @@ handle_general_set (char *own_buf) return; } - if (strncmp ("QProgramSignals:", own_buf, strlen ("QProgramSignals:")) == 0) + if (startswith (own_buf, "QProgramSignals:")) { int numsigs = (int) GDB_SIGNAL_LAST, i; const char *p = own_buf + strlen ("QProgramSignals:"); @@ -587,7 +587,7 @@ handle_general_set (char *own_buf) return; } - if (strncmp (own_buf, "QNonStop:", 9) == 0) + if (startswith (own_buf, "QNonStop:")) { char *mode = own_buf + 9; int req = -1; @@ -624,8 +624,7 @@ handle_general_set (char *own_buf) return; } - if (strncmp ("QDisableRandomization:", own_buf, - strlen ("QDisableRandomization:")) == 0) + if (startswith (own_buf, "QDisableRandomization:")) { char *packet = own_buf + strlen ("QDisableRandomization:"); ULONGEST setting; @@ -649,7 +648,7 @@ handle_general_set (char *own_buf) && handle_tracepoint_general_set (own_buf)) return; - if (strncmp ("QAgent:", own_buf, strlen ("QAgent:")) == 0) + if (startswith (own_buf, "QAgent:")) { char *mode = own_buf + strlen ("QAgent:"); int req = 0; @@ -1072,8 +1071,7 @@ handle_monitor_command (char *mon, char *own_buf) remote_debug = 0; monitor_output ("Protocol debug output disabled.\n"); } - else if (strncmp (mon, "set debug-format ", - sizeof ("set debug-format ") - 1) == 0) + else if (startswith (mon, "set debug-format ")) { char *error_msg = parse_debug_format_options (mon + sizeof ("set debug-format ") - 1, @@ -1661,7 +1659,7 @@ handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p) char *annex; char *offset; - if (strncmp (own_buf, "qXfer:", 6) != 0) + if (!startswith (own_buf, "qXfer:")) return 0; /* Grab the object, r/w and annex. */ @@ -1935,7 +1933,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } /* Protocol features query. */ - if (strncmp ("qSupported", own_buf, 10) == 0 + if (startswith (own_buf, "qSupported") && (own_buf[10] == ':' || own_buf[10] == '\0')) { char *p = &own_buf[10]; @@ -2089,7 +2087,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) /* Thread-local storage support. */ if (the_target->get_tls_address != NULL - && strncmp ("qGetTLSAddr:", own_buf, 12) == 0) + && startswith (own_buf, "qGetTLSAddr:")) { char *p = own_buf + 12; CORE_ADDR parts[2], address = 0; @@ -2154,7 +2152,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) /* Windows OS Thread Information Block address support. */ if (the_target->get_tib_address != NULL - && strncmp ("qGetTIBAddr:", own_buf, 12) == 0) + && startswith (own_buf, "qGetTIBAddr:")) { char *annex; int n; @@ -2176,7 +2174,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } /* Handle "monitor" commands. */ - if (strncmp ("qRcmd,", own_buf, 6) == 0) + if (startswith (own_buf, "qRcmd,")) { char *mon = malloc (PBUFSIZ); int len = strlen (own_buf + 6); @@ -2207,8 +2205,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) return; } - if (strncmp ("qSearch:memory:", own_buf, - sizeof ("qSearch:memory:") - 1) == 0) + if (startswith (own_buf, "qSearch:memory:")) { require_running (own_buf); handle_search_memory (own_buf, packet_len); @@ -2216,7 +2213,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } if (strcmp (own_buf, "qAttached") == 0 - || strncmp (own_buf, "qAttached:", sizeof ("qAttached:") - 1) == 0) + || startswith (own_buf, "qAttached:")) { struct process_info *process; @@ -2242,7 +2239,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) return; } - if (strncmp ("qCRC:", own_buf, 5) == 0) + if (startswith (own_buf, "qCRC:")) { /* CRC check (compare-section). */ char *comma; @@ -2672,14 +2669,14 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) { if (!disable_packet_vCont) { - if (strncmp (own_buf, "vCont;", 6) == 0) + if (startswith (own_buf, "vCont;")) { require_running (own_buf); handle_v_cont (own_buf); return; } - if (strncmp (own_buf, "vCont?", 6) == 0) + if (startswith (own_buf, "vCont?")) { strcpy (own_buf, "vCont;c;C;s;S;t"); if (target_supports_range_stepping ()) @@ -2691,11 +2688,11 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) } } - if (strncmp (own_buf, "vFile:", 6) == 0 + if (startswith (own_buf, "vFile:") && handle_vFile (own_buf, packet_len, new_packet_len)) return; - if (strncmp (own_buf, "vAttach;", 8) == 0) + if (startswith (own_buf, "vAttach;")) { if ((!extended_protocol || !multi_process) && target_running ()) { @@ -2707,7 +2704,7 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) return; } - if (strncmp (own_buf, "vRun;", 5) == 0) + if (startswith (own_buf, "vRun;")) { if ((!extended_protocol || !multi_process) && target_running ()) { @@ -2719,7 +2716,7 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) return; } - if (strncmp (own_buf, "vKill;", 6) == 0) + if (startswith (own_buf, "vKill;")) { if (!target_running ()) { @@ -3211,9 +3208,7 @@ captured_main (int argc, char *argv[]) } else if (strcmp (*next_arg, "--debug") == 0) debug_threads = 1; - else if (strncmp (*next_arg, - "--debug-format=", - sizeof ("--debug-format=") - 1) == 0) + else if (startswith (*next_arg, "--debug-format=")) { char *error_msg = parse_debug_format_options ((*next_arg) @@ -3232,9 +3227,7 @@ captured_main (int argc, char *argv[]) gdbserver_show_disableable (stdout); exit (0); } - else if (strncmp (*next_arg, - "--disable-packet=", - sizeof ("--disable-packet=") - 1) == 0) + else if (startswith (*next_arg, "--disable-packet=")) { char *packets, *tok; @@ -3533,7 +3526,7 @@ process_point_options (struct breakpoint *bp, char **packet) if (!add_breakpoint_condition (bp, &dataptr)) skip_to_semicolon (&dataptr); } - else if (strncmp (dataptr, "cmds:", strlen ("cmds:")) == 0) + else if (startswith (dataptr, "cmds:")) { dataptr += strlen ("cmds:"); if (debug_threads) diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c index 6fcd0b07b5..27fcf03247 100644 --- a/gdb/gdbserver/tracepoint.c +++ b/gdb/gdbserver/tracepoint.c @@ -3551,14 +3551,14 @@ cmd_qtframe (char *own_buf) packet += strlen ("QTFrame:"); - if (strncmp (packet, "pc:", strlen ("pc:")) == 0) + if (startswith (packet, "pc:")) { packet += strlen ("pc:"); unpack_varlen_hex (packet, &pc); trace_debug ("Want to find next traceframe at pc=0x%s", paddress (pc)); tframe = find_next_traceframe_in_range (pc, pc, 1, &tfnum); } - else if (strncmp (packet, "range:", strlen ("range:")) == 0) + else if (startswith (packet, "range:")) { packet += strlen ("range:"); packet = unpack_varlen_hex (packet, &lo); @@ -3568,7 +3568,7 @@ cmd_qtframe (char *own_buf) paddress (lo), paddress (hi)); tframe = find_next_traceframe_in_range (lo, hi, 1, &tfnum); } - else if (strncmp (packet, "outside:", strlen ("outside:")) == 0) + else if (startswith (packet, "outside:")) { packet += strlen ("outside:"); packet = unpack_varlen_hex (packet, &lo); @@ -3579,7 +3579,7 @@ cmd_qtframe (char *own_buf) paddress (lo), paddress (hi)); tframe = find_next_traceframe_in_range (lo, hi, 0, &tfnum); } - else if (strncmp (packet, "tdp:", strlen ("tdp:")) == 0) + else if (startswith (packet, "tdp:")) { packet += strlen ("tdp:"); unpack_varlen_hex (packet, &num); @@ -3653,7 +3653,7 @@ cmd_qtstatus (char *packet) /* The user visible error string in terror needs to be hex encoded. We leave it as plain string in `tracing_stop_reason' to ease debugging. */ - if (strncmp (stop_reason_rsp, "terror:", strlen ("terror:")) == 0) + if (startswith (stop_reason_rsp, "terror:")) { const char *result_name; int hexstr_len; @@ -4106,7 +4106,7 @@ cmd_qtnotes (char *own_buf) while (*packet) { - if (strncmp ("user:", packet, strlen ("user:")) == 0) + if (startswith (packet, "user:")) { packet += strlen ("user:"); saved = packet; @@ -4120,7 +4120,7 @@ cmd_qtnotes (char *own_buf) xfree (tracing_user_name); tracing_user_name = user; } - else if (strncmp ("notes:", packet, strlen ("notes:")) == 0) + else if (startswith (packet, "notes:")) { packet += strlen ("notes:"); saved = packet; @@ -4134,7 +4134,7 @@ cmd_qtnotes (char *own_buf) xfree (tracing_notes); tracing_notes = notes; } - else if (strncmp ("tstop:", packet, strlen ("tstop:")) == 0) + else if (startswith (packet, "tstop:")) { packet += strlen ("tstop:"); saved = packet; @@ -4163,32 +4163,32 @@ handle_tracepoint_general_set (char *packet) cmd_qtinit (packet); return 1; } - else if (strncmp ("QTDP:", packet, strlen ("QTDP:")) == 0) + else if (startswith (packet, "QTDP:")) { cmd_qtdp (packet); return 1; } - else if (strncmp ("QTDPsrc:", packet, strlen ("QTDPsrc:")) == 0) + else if (startswith (packet, "QTDPsrc:")) { cmd_qtdpsrc (packet); return 1; } - else if (strncmp ("QTEnable:", packet, strlen ("QTEnable:")) == 0) + else if (startswith (packet, "QTEnable:")) { cmd_qtenable_disable (packet, 1); return 1; } - else if (strncmp ("QTDisable:", packet, strlen ("QTDisable:")) == 0) + else if (startswith (packet, "QTDisable:")) { cmd_qtenable_disable (packet, 0); return 1; } - else if (strncmp ("QTDV:", packet, strlen ("QTDV:")) == 0) + else if (startswith (packet, "QTDV:")) { cmd_qtdv (packet); return 1; } - else if (strncmp ("QTro:", packet, strlen ("QTro:")) == 0) + else if (startswith (packet, "QTro:")) { cmd_qtro (packet); return 1; @@ -4203,28 +4203,27 @@ handle_tracepoint_general_set (char *packet) cmd_qtstop (packet); return 1; } - else if (strncmp ("QTDisconnected:", packet, - strlen ("QTDisconnected:")) == 0) + else if (startswith (packet, "QTDisconnected:")) { cmd_qtdisconnected (packet); return 1; } - else if (strncmp ("QTFrame:", packet, strlen ("QTFrame:")) == 0) + else if (startswith (packet, "QTFrame:")) { cmd_qtframe (packet); return 1; } - else if (strncmp ("QTBuffer:circular:", packet, strlen ("QTBuffer:circular:")) == 0) + else if (startswith (packet, "QTBuffer:circular:")) { cmd_bigqtbuffer_circular (packet); return 1; } - else if (strncmp ("QTBuffer:size:", packet, strlen ("QTBuffer:size:")) == 0) + else if (startswith (packet, "QTBuffer:size:")) { cmd_bigqtbuffer_size (packet); return 1; } - else if (strncmp ("QTNotes:", packet, strlen ("QTNotes:")) == 0) + else if (startswith (packet, "QTNotes:")) { cmd_qtnotes (packet); return 1; @@ -4241,7 +4240,7 @@ handle_tracepoint_query (char *packet) cmd_qtstatus (packet); return 1; } - else if (strncmp ("qTP:", packet, strlen ("qTP:")) == 0) + else if (startswith (packet, "qTP:")) { cmd_qtp (packet); return 1; @@ -4266,12 +4265,12 @@ handle_tracepoint_query (char *packet) cmd_qtsv (packet); return 1; } - else if (strncmp ("qTV:", packet, strlen ("qTV:")) == 0) + else if (startswith (packet, "qTV:")) { cmd_qtv (packet); return 1; } - else if (strncmp ("qTBuffer:", packet, strlen ("qTBuffer:")) == 0) + else if (startswith (packet, "qTBuffer:")) { cmd_qtbuffer (packet); return 1; @@ -4286,7 +4285,7 @@ handle_tracepoint_query (char *packet) cmd_qtsstm (packet); return 1; } - else if (strncmp ("qTSTMat:", packet, strlen ("qTSTMat:")) == 0) + else if (startswith (packet, "qTSTMat:")) { cmd_qtstmat (packet); return 1; @@ -6123,7 +6122,7 @@ tracepoint_send_agent (struct tracepoint *tpoint) if (ret) return ret; - if (strncmp (buf, "OK", 2) != 0) + if (!startswith (buf, "OK")) return 1; /* The value of tracepoint's target address is stored in BUF. */ @@ -7202,7 +7201,7 @@ gdb_agent_helper_thread (void *arg) if (cmd_buf[0]) { - if (strncmp ("close", cmd_buf, 5) == 0) + if (startswith (cmd_buf, "close")) { stop_loop = 1; } @@ -7215,21 +7214,15 @@ gdb_agent_helper_thread (void *arg) { cmd_qtsstm (cmd_buf); } - else if (strncmp ("unprobe_marker_at:", - cmd_buf, - sizeof ("unprobe_marker_at:") - 1) == 0) + else if (startswith (cmd_buf, "unprobe_marker_at:")) { unprobe_marker_at (cmd_buf); } - else if (strncmp ("probe_marker_at:", - cmd_buf, - sizeof ("probe_marker_at:") - 1) == 0) + else if (startswith (cmd_buf, "probe_marker_at:")) { probe_marker_at (cmd_buf); } - else if (strncmp ("qTSTMat:", - cmd_buf, - sizeof ("qTSTMat:") - 1) == 0) + else if (startswith (cmd_buf, "qTSTMat:")) { cmd_qtstmat (cmd_buf); } diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c index 2b24c8717b..6c86765b2d 100644 --- a/gdb/gdbserver/win32-low.c +++ b/gdb/gdbserver/win32-low.c @@ -778,7 +778,7 @@ handle_output_debug_string (struct target_waitstatus *ourstatus) return; } - if (strncmp (s, "cYg", 3) != 0) + if (!startswith (s, "cYg")) { if (!server_waiting) { diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 24f64bee93..d087a12100 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -2376,7 +2376,7 @@ check_stub_method (struct type *type, int method_id, int signature_id) } /* If we read one argument and it was ``void'', don't count it. */ - if (strncmp (argtypetext, "(void)", 6) == 0) + if (startswith (argtypetext, "(void)")) argcount -= 1; /* We need one extra slot, for the THIS pointer. */ @@ -2471,7 +2471,7 @@ check_stub_method_group (struct type *type, int method_id) Therefore the only thing we need to handle here are v2 operator names. */ - if (found_stub && strncmp (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z", 2) != 0) + if (found_stub && !startswith (TYPE_FN_FIELD_PHYSNAME (f, 0), "_Z")) { int ret; char dem_opname[256]; diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c index 5389374783..68b734c1b1 100644 --- a/gdb/gnu-v2-abi.c +++ b/gdb/gnu-v2-abi.c @@ -37,7 +37,7 @@ static enum dtor_kinds gnuv2_is_destructor_name (const char *name) { if ((name[0] == '_' && is_cplus_marker (name[1]) && name[2] == '_') - || strncmp (name, "__dt__", 6) == 0) + || startswith (name, "__dt__")) return complete_object_dtor; else return 0; @@ -48,7 +48,7 @@ gnuv2_is_constructor_name (const char *name) { if ((name[0] == '_' && name[1] == '_' && (isdigit (name[2]) || strchr ("Qt", name[2]))) - || strncmp (name, "__ct__", 6) == 0) + || startswith (name, "__ct__")) return complete_object_ctor; else return 0; @@ -68,7 +68,7 @@ gnuv2_is_vtable_name (const char *name) static int gnuv2_is_operator_name (const char *name) { - return strncmp (name, "operator", 8) == 0; + return startswith (name, "operator"); } diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 6a96d21473..d1ed8fce24 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -39,13 +39,13 @@ static struct gdbarch_data *std_type_info_gdbarch_data; static int gnuv3_is_vtable_name (const char *name) { - return strncmp (name, "_ZTV", 4) == 0; + return startswith (name, "_ZTV"); } static int gnuv3_is_operator_name (const char *name) { - return strncmp (name, "operator", 8) == 0; + return startswith (name, "operator"); } @@ -330,7 +330,7 @@ gnuv3_rtti_type (struct value *value, should work just as well, and doesn't read target memory. */ vtable_symbol_name = MSYMBOL_DEMANGLED_NAME (vtable_symbol); if (vtable_symbol_name == NULL - || strncmp (vtable_symbol_name, "vtable for ", 11)) + || !startswith (vtable_symbol_name, "vtable for ")) { warning (_("can't find linker symbol for virtual table for `%s' value"), TYPE_SAFE_NAME (values_type)); diff --git a/gdb/go-lang.c b/gdb/go-lang.c index 9bdc99a799..b48467d838 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -233,8 +233,8 @@ unpack_mangled_go_symbol (const char *mangled_name, libgo_.*: used by gccgo's runtime Thus we don't support -fgo-prefix (except as used by the runtime). */ - if (strncmp (mangled_name, "go.", 3) != 0 - && strncmp (mangled_name, "libgo_", 6) != 0) + if (!startswith (mangled_name, "go.") + && !startswith (mangled_name, "libgo_")) return NULL; /* Quick check for whether a search may be fruitful. */ diff --git a/gdb/guile/scm-type.c b/gdb/guile/scm-type.c index 196b4a1363..d21a7aec8c 100644 --- a/gdb/guile/scm-type.c +++ b/gdb/guile/scm-type.c @@ -1216,11 +1216,11 @@ tyscm_lookup_typename (const char *type_name, const struct block *block) TRY_CATCH (except, RETURN_MASK_ALL) { - if (!strncmp (type_name, "struct ", 7)) + if (startswith (type_name, "struct ")) type = lookup_struct (type_name + 7, NULL); - else if (!strncmp (type_name, "union ", 6)) + else if (startswith (type_name, "union ")) type = lookup_union (type_name + 6, NULL); - else if (!strncmp (type_name, "enum ", 5)) + else if (startswith (type_name, "enum ")) type = lookup_enum (type_name + 5, NULL); else type = lookup_typename (current_language, get_current_arch (), diff --git a/gdb/i386-cygwin-tdep.c b/gdb/i386-cygwin-tdep.c index a4f64e515d..79ff478fa9 100644 --- a/gdb/i386-cygwin-tdep.c +++ b/gdb/i386-cygwin-tdep.c @@ -107,7 +107,7 @@ core_process_module_section (bfd *abfd, asection *sect, void *obj) gdb_byte *buf = NULL; - if (strncmp (sect->name, ".module", 7) != 0) + if (!startswith (sect->name, ".module")) return; buf = xmalloc (bfd_get_section_size (sect) + 1); diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 8c08f8b850..a78bedfc5f 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -1824,8 +1824,7 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) if (post_prologue_pc && (cust != NULL && COMPUNIT_PRODUCER (cust) != NULL - && strncmp (COMPUNIT_PRODUCER (cust), "clang ", - sizeof ("clang ") - 1) == 0)) + && startswith (COMPUNIT_PRODUCER (cust), "clang "))) return max (start_pc, post_prologue_pc); } @@ -3854,8 +3853,8 @@ i386_pe_skip_trampoline_code (struct frame_info *frame, if (symname) { - if (strncmp (symname, "__imp_", 6) == 0 - || strncmp (symname, "_imp_", 5) == 0) + if (startswith (symname, "__imp_") + || startswith (symname, "_imp_")) return name ? 1 : read_memory_unsigned_integer (indirect, 4, byte_order); } diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c index 5e1d7f8115..eae445c845 100644 --- a/gdb/i386obsd-tdep.c +++ b/gdb/i386obsd-tdep.c @@ -357,7 +357,7 @@ i386obsd_trapframe_cache (struct frame_info *this_frame, void **this_cache) sp = get_frame_register_unsigned (this_frame, I386_ESP_REGNUM); find_pc_partial_function (func, &name, NULL, NULL); - if (name && strncmp (name, "Xintr", 5) == 0) + if (name && startswith (name, "Xintr")) addr = sp + 8; /* It's an interrupt frame. */ else addr = sp; @@ -420,8 +420,8 @@ i386obsd_trapframe_sniffer (const struct frame_unwind *self, find_pc_partial_function (get_frame_pc (this_frame), &name, NULL, NULL); return (name && (strcmp (name, "calltrap") == 0 || strcmp (name, "syscall1") == 0 - || strncmp (name, "Xintr", 5) == 0 - || strncmp (name, "Xsoft", 5) == 0)); + || startswith (name, "Xintr") + || startswith (name, "Xsoft"))); } static const struct frame_unwind i386obsd_trapframe_unwind = { diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 3737b8f6f1..99104e9b67 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -791,7 +791,7 @@ continue_command (char *args, int from_tty) if (args != NULL) { - if (strncmp (args, "-a", sizeof ("-a") - 1) == 0) + if (startswith (args, "-a")) { all_threads = 1; args += sizeof ("-a") - 1; @@ -2870,7 +2870,7 @@ interrupt_command (char *args, int from_tty) dont_repeat (); /* Not for the faint of heart. */ if (args != NULL - && strncmp (args, "-a", sizeof ("-a") - 1) == 0) + && startswith (args, "-a")) all_threads = 1; if (!non_stop && all_threads) diff --git a/gdb/jv-typeprint.c b/gdb/jv-typeprint.c index 5338c95fa3..0bf6d10b31 100644 --- a/gdb/jv-typeprint.c +++ b/gdb/jv-typeprint.c @@ -168,12 +168,12 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, { QUIT; /* Don't print out virtual function table. */ - if (strncmp (TYPE_FIELD_NAME (type, i), "_vptr", 5) == 0 + if (startswith (TYPE_FIELD_NAME (type, i), "_vptr") && is_cplus_marker ((TYPE_FIELD_NAME (type, i))[5])) continue; /* Don't print the dummy field "class". */ - if (strncmp (TYPE_FIELD_NAME (type, i), "class", 5) == 0) + if (startswith (TYPE_FIELD_NAME (type, i), "class")) continue; print_spaces_filtered (level + 4, stream); diff --git a/gdb/linespec.c b/gdb/linespec.c index 0d012b402b..7d7c58d5f2 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -454,8 +454,7 @@ is_ada_operator (const char *string) for (mapping = ada_opname_table; mapping->encoded != NULL - && strncmp (mapping->decoded, string, - strlen (mapping->decoded)) != 0; ++mapping) + && !startswith (string, mapping->decoded); ++mapping) ; return mapping->decoded == NULL ? 0 : strlen (mapping->decoded); @@ -1122,9 +1121,9 @@ find_methods (struct type *t, const char *name, const char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter); char dem_opname[64]; - if (strncmp (method_name, "__", 2) == 0 || - strncmp (method_name, "op", 2) == 0 || - strncmp (method_name, "type", 4) == 0) + if (startswith (method_name, "__") || + startswith (method_name, "op") || + startswith (method_name, "type")) { if (cplus_demangle_opname (method_name, dem_opname, DMGL_ANSI)) method_name = dem_opname; @@ -1210,7 +1209,7 @@ find_toplevel_string (const char *haystack, const char *needle) if (s != NULL) { /* Found first char in HAYSTACK; check rest of string. */ - if (strncmp (s, needle, strlen (needle)) == 0) + if (startswith (s, needle)) return s; /* Didn't find it; loop over HAYSTACK, looking for the next diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 4a5a066721..627280ed9d 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -4215,13 +4215,13 @@ linux_proc_pending_signals (int pid, sigset_t *pending, Unfortunately some Red Hat kernels include the shared pending queue but not the ShdPnd status field. */ - if (strncmp (buffer, "SigPnd:\t", 8) == 0) + if (startswith (buffer, "SigPnd:\t")) add_line_to_sigset (buffer + 8, pending); - else if (strncmp (buffer, "ShdPnd:\t", 8) == 0) + else if (startswith (buffer, "ShdPnd:\t")) add_line_to_sigset (buffer + 8, pending); - else if (strncmp (buffer, "SigBlk:\t", 8) == 0) + else if (startswith (buffer, "SigBlk:\t")) add_line_to_sigset (buffer + 8, blocked); - else if (strncmp (buffer, "SigIgn:\t", 8) == 0) + else if (startswith (buffer, "SigIgn:\t")) add_line_to_sigset (buffer + 8, ignored); } diff --git a/gdb/m2-typeprint.c b/gdb/m2-typeprint.c index 21bca39072..be198722bf 100644 --- a/gdb/m2-typeprint.c +++ b/gdb/m2-typeprint.c @@ -538,7 +538,7 @@ m2_record_fields (struct type *type, struct ui_file *stream, int show, /* Print the tag if it exists. */ if (TYPE_TAG_NAME (type) != NULL) { - if (strncmp (TYPE_TAG_NAME (type), "$$", 2) != 0) + if (!startswith (TYPE_TAG_NAME (type), "$$")) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) diff --git a/gdb/m32r-rom.c b/gdb/m32r-rom.c index 9d6b8b369d..a2ac53795a 100644 --- a/gdb/m32r-rom.c +++ b/gdb/m32r-rom.c @@ -447,7 +447,7 @@ m32r_upload_command (char *args, int from_tty) myIPaddress = skip_spaces (myIPaddress); - if (!strncmp (myIPaddress, "0.0.", 4)) /* empty */ + if (startswith (myIPaddress, "0.0.")) /* empty */ error (_("Please use 'set board-address' to " "set the M32R-EVA board's IP address.")); if (strchr (myIPaddress, '(')) diff --git a/gdb/machoread.c b/gdb/machoread.c index 790f665049..831bbcb622 100644 --- a/gdb/machoread.c +++ b/gdb/machoread.c @@ -1004,7 +1004,7 @@ macho_symfile_offsets (struct objfile *objfile, const char *bfd_sect_name = osect->the_bfd_section->name; int sect_index = osect - objfile->sections;; - if (strncmp (bfd_sect_name, "LC_SEGMENT.", 11) == 0) + 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) diff --git a/gdb/macrocmd.c b/gdb/macrocmd.c index a40049a0b0..3db1239f24 100644 --- a/gdb/macrocmd.c +++ b/gdb/macrocmd.c @@ -325,7 +325,7 @@ extract_identifier (char **expp, int is_parameter) char *p = *expp; unsigned int len; - if (is_parameter && !strncmp (p, "...", 3)) + if (is_parameter && startswith (p, "...")) { /* Ok. */ } @@ -339,7 +339,7 @@ extract_identifier (char **expp, int is_parameter) ; } - if (is_parameter && !strncmp (p, "...", 3)) + if (is_parameter && startswith (p, "...")) p += 3; len = p - *expp; diff --git a/gdb/microblaze-rom.c b/gdb/microblaze-rom.c index 66251db393..beffadf100 100644 --- a/gdb/microblaze-rom.c +++ b/gdb/microblaze-rom.c @@ -83,7 +83,7 @@ picobug_dumpregs (struct regcache *regcache) if (strchr (p, '-')) { /* Got a range. Either r0-r7, r8-r15 or ss0-ss4. */ - if (strncmp (p, "r0", 2) == 0 || strncmp (p, "r8", 2) == 0) + if (startswith (p, "r0") || startswith (p, "r8")) { int rn = (p[1] == '0' ? 0 : 8); int i = 0; @@ -97,7 +97,7 @@ picobug_dumpregs (struct regcache *regcache) i++; } } - else if (strncmp (p, "ss", 2) == 0) + else if (startswith (p, "ss")) { /* Get the next five values, ignoring the first. */ int rn; diff --git a/gdb/minsyms.c b/gdb/minsyms.c index f8985e8e87..d7097a9394 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -996,7 +996,7 @@ prim_record_minimal_symbol_full (const char *name, int name_len, int copy_name, --name_len; } - if (ms_type == mst_file_text && strncmp (name, "__gnu_compiled", 14) == 0) + if (ms_type == mst_file_text && startswith (name, "__gnu_compiled")) return (NULL); if (msym_bunch_index == BUNCH_SIZE) diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c index eb171bf3f9..0246b27bba 100644 --- a/gdb/mips-sde-tdep.c +++ b/gdb/mips-sde-tdep.c @@ -212,7 +212,7 @@ mips_sde_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, /* The presence of a section with a ".sde" prefix is indicative of an SDE binary. */ - if (strncmp (name, ".sde", 4) == 0) + if (startswith (name, ".sde")) *os_ident_ptr = GDB_OSABI_SDE; } diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index bd8faef26b..6e8ccd688a 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -1345,14 +1345,13 @@ mips_in_frame_stub (CORE_ADDR pc) return 0; /* If the PC is in __mips16_call_stub_*, this is a call/return stub. */ - if (strncmp (name, mips_str_mips16_call_stub, - strlen (mips_str_mips16_call_stub)) == 0) + if (startswith (name, mips_str_mips16_call_stub)) return 1; /* If the PC is in __call_stub_*, this is a call/return or a call stub. */ - if (strncmp (name, mips_str_call_stub, strlen (mips_str_call_stub)) == 0) + if (startswith (name, mips_str_call_stub)) return 1; /* If the PC is in __fn_stub_*, this is a call stub. */ - if (strncmp (name, mips_str_fn_stub, strlen (mips_str_fn_stub)) == 0) + if (startswith (name, mips_str_fn_stub)) return 1; return 0; /* Not a stub. */ @@ -3813,7 +3812,7 @@ mips_stub_frame_sniffer (const struct frame_unwind *self, msym = lookup_minimal_symbol_by_pc (pc); if (msym.minsym != NULL && MSYMBOL_LINKAGE_NAME (msym.minsym) != NULL - && strncmp (MSYMBOL_LINKAGE_NAME (msym.minsym), ".pic.", 5) == 0) + && startswith (MSYMBOL_LINKAGE_NAME (msym.minsym), ".pic.")) return 1; return 0; @@ -7846,8 +7845,8 @@ mips_skip_mips16_trampoline_code (struct frame_info *frame, CORE_ADDR pc) /* If the PC is in __call_stub_* or __fn_stub*, this is one of the compiler-generated call or call/return stubs. */ - if (strncmp (name, mips_str_fn_stub, strlen (mips_str_fn_stub)) == 0 - || strncmp (name, mips_str_call_stub, strlen (mips_str_call_stub)) == 0) + if (startswith (name, mips_str_fn_stub) + || startswith (name, mips_str_call_stub)) { if (pc == start_addr) /* This is the 'call' part of a call stub. Call this helper @@ -7934,7 +7933,7 @@ mips_skip_pic_trampoline_code (struct frame_info *frame, CORE_ADDR pc) if (msym.minsym == NULL || BMSYMBOL_VALUE_ADDRESS (msym) != pc || MSYMBOL_LINKAGE_NAME (msym.minsym) == NULL - || strncmp (MSYMBOL_LINKAGE_NAME (msym.minsym), ".pic.", 5) != 0) + || !startswith (MSYMBOL_LINKAGE_NAME (msym.minsym), ".pic.")) return 0; /* A two-instruction header. */ @@ -8099,7 +8098,7 @@ mips_find_abi_section (bfd *abfd, asection *sect, void *obj) if (*abip != MIPS_ABI_UNKNOWN) return; - if (strncmp (name, ".mdebug.", 8) != 0) + if (!startswith (name, ".mdebug.")) return; if (strcmp (name, ".mdebug.abi32") == 0) @@ -8124,11 +8123,11 @@ mips_find_long_section (bfd *abfd, asection *sect, void *obj) int *lbp = (int *) obj; const char *name = bfd_get_section_name (abfd, sect); - if (strncmp (name, ".gcc_compiled_long32", 20) == 0) + if (startswith (name, ".gcc_compiled_long32")) *lbp = 32; - else if (strncmp (name, ".gcc_compiled_long64", 20) == 0) + else if (startswith (name, ".gcc_compiled_long64")) *lbp = 64; - else if (strncmp (name, ".gcc_compiled_long", 18) == 0) + else if (startswith (name, ".gcc_compiled_long")) warning (_("unrecognized .gcc_compiled_longXX")); } diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index f4ee41adcc..622ce55204 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -834,8 +834,7 @@ msp430_in_return_stub (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name) { return (name != NULL - && strncmp (msp430_epilog_name_prefix, name, - strlen (msp430_epilog_name_prefix)) == 0); + && startswith (name, msp430_epilog_name_prefix)); } /* Implement the "skip_trampoline_code" gdbarch method. */ diff --git a/gdb/nat/linux-procfs.c b/gdb/nat/linux-procfs.c index 1e922b9482..f1493839f6 100644 --- a/gdb/nat/linux-procfs.c +++ b/gdb/nat/linux-procfs.c @@ -93,7 +93,7 @@ linux_proc_pid_get_state (pid_t pid, char *buffer, size_t buffer_size, have_state = 0; while (fgets (buffer, buffer_size, procfile) != NULL) - if (strncmp (buffer, "State:", 6) == 0) + if (startswith (buffer, "State:")) { have_state = 1; break; diff --git a/gdb/nbsd-tdep.c b/gdb/nbsd-tdep.c index 59d97d424b..762d80f6c8 100644 --- a/gdb/nbsd-tdep.c +++ b/gdb/nbsd-tdep.c @@ -45,5 +45,5 @@ nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *func_name) have function names which begin with "__sigtramp". */ return (func_name != NULL - && strncmp (func_name, "__sigtramp", 10) == 0); + && startswith (func_name, "__sigtramp")); } diff --git a/gdb/p-typeprint.c b/gdb/p-typeprint.c index 5a7a887253..b5bf4d456e 100644 --- a/gdb/p-typeprint.c +++ b/gdb/p-typeprint.c @@ -154,8 +154,8 @@ void pascal_type_print_method_args (const char *physname, const char *methodname, struct ui_file *stream) { - int is_constructor = (strncmp (physname, "__ct__", 6) == 0); - int is_destructor = (strncmp (physname, "__dt__", 6) == 0); + int is_constructor = (startswith (physname, "__ct__")); + int is_destructor = (startswith (physname, "__dt__")); if (is_constructor || is_destructor) { @@ -567,7 +567,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show, { QUIT; /* Don't print out virtual function table. */ - if ((strncmp (TYPE_FIELD_NAME (type, i), "_vptr", 5) == 0) + if ((startswith (TYPE_FIELD_NAME (type, i), "_vptr")) && is_cplus_marker ((TYPE_FIELD_NAME (type, i))[5])) continue; @@ -643,8 +643,8 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show, { const char *physname = TYPE_FN_FIELD_PHYSNAME (f, j); - int is_constructor = (strncmp (physname, "__ct__", 6) == 0); - int is_destructor = (strncmp (physname, "__dt__", 6) == 0); + int is_constructor = (startswith (physname, "__ct__")); + int is_destructor = (startswith (physname, "__dt__")); QUIT; if (TYPE_FN_FIELD_PROTECTED (f, j)) diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index a7b1163571..6c6eacfb16 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -985,7 +985,7 @@ ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc) static int ppc_linux_spu_section (bfd *abfd, asection *asect, void *user_data) { - return strncmp (bfd_section_name (abfd, asect), "SPU/", 4) == 0; + return startswith (bfd_section_name (abfd, asect), "SPU/"); } static const struct target_desc * diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index a3da67807d..72d4dcf93e 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -747,11 +747,11 @@ typy_lookup_typename (const char *type_name, const struct block *block) TRY_CATCH (except, RETURN_MASK_ALL) { - if (!strncmp (type_name, "struct ", 7)) + if (startswith (type_name, "struct ")) type = lookup_struct (type_name + 7, NULL); - else if (!strncmp (type_name, "union ", 6)) + else if (startswith (type_name, "union ")) type = lookup_union (type_name + 6, NULL); - else if (!strncmp (type_name, "enum ", 5)) + else if (startswith (type_name, "enum ")) type = lookup_enum (type_name + 5, NULL); else type = lookup_typename (python_language, python_gdbarch, diff --git a/gdb/regcache.c b/gdb/regcache.c index 9373ceb2e5..366eba0a42 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -1342,7 +1342,7 @@ regcache_dump (struct regcache *regcache, struct ui_file *file, t = n; } /* Chop a leading builtin_type. */ - if (strncmp (t, blt, strlen (blt)) == 0) + if (startswith (t, blt)) t += strlen (blt); } fprintf_unfiltered (file, " %-15s", t); diff --git a/gdb/remote-m32r-sdi.c b/gdb/remote-m32r-sdi.c index c55b75c6fe..f7ea0b85c9 100644 --- a/gdb/remote-m32r-sdi.c +++ b/gdb/remote-m32r-sdi.c @@ -1265,9 +1265,9 @@ m32r_load (struct target_ops *self, const char *args, int from_tty) if (*arg != '-') filename = arg; - else if (strncmp (arg, "-quiet", strlen (arg)) == 0) + else if (startswith ("-quiet", arg)) quiet = 1; - else if (strncmp (arg, "-nostart", strlen (arg)) == 0) + else if (startswith ("-nostart", arg)) nostart = 1; else error (_("Unknown option `%s'"), arg); diff --git a/gdb/remote-notif.c b/gdb/remote-notif.c index 3e07fc7241..2d24a9a57f 100644 --- a/gdb/remote-notif.c +++ b/gdb/remote-notif.c @@ -133,7 +133,7 @@ handle_notification (struct remote_notif_state *state, char *buf) { const char *name = notifs[i]->name; - if (strncmp (buf, name, strlen (name)) == 0 + if (startswith (buf, name) && buf[strlen (name)] == ':') break; } diff --git a/gdb/remote.c b/gdb/remote.c index 8f783a440b..495dfdc415 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -491,7 +491,7 @@ remote_get_noisy_reply (char **buf_p, buf = *buf_p; if (buf[0] == 'E') trace_error (buf); - else if (strncmp (buf, "qRelocInsn:", strlen ("qRelocInsn:")) == 0) + else if (startswith (buf, "qRelocInsn:")) { ULONGEST ul; CORE_ADDR from, to, org_to; @@ -3157,14 +3157,14 @@ get_offsets (void) ptr = buf; lose = 0; - if (strncmp (ptr, "Text=", 5) == 0) + if (startswith (ptr, "Text=")) { ptr += 5; /* Don't use strtol, could lose on big values. */ while (*ptr && *ptr != ';') text_addr = (text_addr << 4) + fromhex (*ptr++); - if (strncmp (ptr, ";Data=", 6) == 0) + if (startswith (ptr, ";Data=")) { ptr += 6; while (*ptr && *ptr != ';') @@ -3173,7 +3173,7 @@ get_offsets (void) else lose = 1; - if (!lose && strncmp (ptr, ";Bss=", 5) == 0) + if (!lose && startswith (ptr, ";Bss=")) { ptr += 5; while (*ptr && *ptr != ';') @@ -3185,7 +3185,7 @@ get_offsets (void) else lose = 1; } - else if (strncmp (ptr, "TextSeg=", 8) == 0) + else if (startswith (ptr, "TextSeg=")) { ptr += 8; /* Don't use strtol, could lose on big values. */ @@ -3193,7 +3193,7 @@ get_offsets (void) text_addr = (text_addr << 4) + fromhex (*ptr++); num_segments = 1; - if (strncmp (ptr, ";DataSeg=", 9) == 0) + if (startswith (ptr, ";DataSeg=")) { ptr += 9; while (*ptr && *ptr != ';') @@ -3800,7 +3800,7 @@ remote_check_symbols (void) packet_ok (rs->buf, &remote_protocol_packets[PACKET_qSymbol]); reply = rs->buf; - while (strncmp (reply, "qSymbol:", 8) == 0) + while (startswith (reply, "qSymbol:")) { struct bound_minimal_symbol sym; @@ -3840,7 +3840,7 @@ remote_serial_open (const char *name) of in ser-tcp.c, because it is the remote protocol assuming that the serial connection is reliable and not the serial connection promising to be. */ - if (!udp_warning && strncmp (name, "udp:", 4) == 0) + if (!udp_warning && startswith (name, "udp:")) { warning (_("The remote protocol may be unreliable over UDP.\n" "Some events may be lost, rendering further debugging " @@ -4631,7 +4631,7 @@ remote_vcont_probe (struct remote_state *rs) buf = rs->buf; /* Make sure that the features we assume are supported. */ - if (strncmp (buf, "vCont", 5) == 0) + if (startswith (buf, "vCont")) { char *p = &buf[5]; int support_s, support_S, support_c, support_C; @@ -5729,8 +5729,7 @@ Packet: '%s'\n"), if (*p == '\0') ; - else if (strncmp (p, - "process:", sizeof ("process:") - 1) == 0) + else if (startswith (p, "process:")) { ULONGEST upid; @@ -10212,9 +10211,7 @@ remote_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb) int remote_filename_p (const char *filename) { - return strncmp (filename, - REMOTE_SYSROOT_PREFIX, - sizeof (REMOTE_SYSROOT_PREFIX) - 1) == 0; + return startswith (filename, REMOTE_SYSROOT_PREFIX); } bfd * diff --git a/gdb/reverse.c b/gdb/reverse.c index e0946c80ba..ed55a3a4dd 100644 --- a/gdb/reverse.c +++ b/gdb/reverse.c @@ -255,9 +255,9 @@ goto_bookmark_command (char *args, int from_tty) if (args == NULL || args[0] == '\0') error (_("Command requires an argument.")); - if (strncmp (args, "start", strlen ("start")) == 0 - || strncmp (args, "begin", strlen ("begin")) == 0 - || strncmp (args, "end", strlen ("end")) == 0) + if (startswith (args, "start") + || startswith (args, "begin") + || startswith (args, "end")) { /* Special case. Give target opportunity to handle. */ target_goto_bookmark ((gdb_byte *) args, from_tty); diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 46f6e41c5e..0a86929251 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -2220,7 +2220,7 @@ static int rs6000_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name) { - return name && !strncmp (name, "@FIX", 4); + return name && startswith (name, "@FIX"); } /* Skip code that the user doesn't want to see when stepping: diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c index 3467b1f694..9c3dcf4ee4 100644 --- a/gdb/ser-tcp.c +++ b/gdb/ser-tcp.c @@ -168,12 +168,12 @@ net_open (struct serial *scb, const char *name) unsigned int polls = 0; use_udp = 0; - if (strncmp (name, "udp:", 4) == 0) + if (startswith (name, "udp:")) { use_udp = 1; name = name + 4; } - else if (strncmp (name, "tcp:", 4) == 0) + else if (startswith (name, "tcp:")) name = name + 4; port_str = strchr (name, ':'); diff --git a/gdb/serial.c b/gdb/serial.c index 59bf7af3ca..b7e620d0f4 100644 --- a/gdb/serial.c +++ b/gdb/serial.c @@ -190,9 +190,9 @@ serial_open (const char *name) if (strcmp (name, "pc") == 0) ops = serial_interface_lookup ("pc"); - else if (strncmp (name, "lpt", 3) == 0) + else if (startswith (name, "lpt")) ops = serial_interface_lookup ("parallel"); - else if (strncmp (name, "|", 1) == 0) + else if (startswith (name, "|")) { ops = serial_interface_lookup ("pipe"); /* Discard ``|'' and any space before the command itself. */ diff --git a/gdb/somread.c b/gdb/somread.c index 2bee2b1fa5..49cfe766a6 100644 --- a/gdb/somread.c +++ b/gdb/somread.c @@ -212,8 +212,8 @@ som_symtab_read (bfd *abfd, struct objfile *objfile, if ((symname[0] == 'L' && symname[1] == '$') || (symname[0] == '$' && symname[strlen (symname) - 1] == '$') || (symname[0] == 'D' && symname[1] == '$') - || (strncmp (symname, "L0\001", 3) == 0) - || (strncmp (symname, "$PIC", 4) == 0)) + || (startswith (symname, "L0\001")) + || (startswith (symname, "$PIC"))) continue; break; diff --git a/gdb/sparc64nbsd-tdep.c b/gdb/sparc64nbsd-tdep.c index 78e3b58e07..32da6ac697 100644 --- a/gdb/sparc64nbsd-tdep.c +++ b/gdb/sparc64nbsd-tdep.c @@ -216,7 +216,7 @@ sparc64nbsd_sigtramp_frame_sniffer (const struct frame_unwind *self, find_pc_partial_function (pc, &name, NULL, NULL); if (sparc64nbsd_pc_in_sigtramp (pc, name)) { - if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21)) + if (name == NULL || !startswith (name, "__sigtramp_sigcontext")) return 1; } diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c index b5fab8b0ea..c145919926 100644 --- a/gdb/sparcnbsd-tdep.c +++ b/gdb/sparcnbsd-tdep.c @@ -241,7 +241,7 @@ sparc32nbsd_sigcontext_frame_sniffer (const struct frame_unwind *self, find_pc_partial_function (pc, &name, NULL, NULL); if (sparc32nbsd_pc_in_sigtramp (pc, name)) { - if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21)) + if (name == NULL || !startswith (name, "__sigtramp_sigcontext")) return 1; } diff --git a/gdb/symtab.c b/gdb/symtab.c index 12168cbefc..aebe2d979e 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -535,7 +535,7 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id) || (newname && strcmp (field_name, newname) == 0); if (!is_destructor) - is_destructor = (strncmp (physname, "__dt", 4) == 0); + is_destructor = (startswith (physname, "__dt")); if (is_destructor || is_full_physname_constructor) { @@ -3950,7 +3950,7 @@ static const char * operator_chars (const char *p, const char **end) { *end = ""; - if (strncmp (p, "operator", 8)) + if (!startswith (p, "operator")) return *end; p += 8; @@ -6003,7 +6003,7 @@ producer_is_realview (const char *producer) return 0; for (i = 0; i < ARRAY_SIZE (arm_idents); i++) - if (strncmp (producer, arm_idents[i], strlen (arm_idents[i])) == 0) + if (startswith (producer, arm_idents[i])) return 1; return 0; diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c index 44c6189f82..3ee7243d3d 100644 --- a/gdb/tracefile-tfile.c +++ b/gdb/tracefile-tfile.c @@ -426,7 +426,7 @@ tfile_open (const char *arg, int from_tty) bytes += TRACE_HEADER_SIZE; if (!(header[0] == 0x7f - && (strncmp (header + 1, "TRACE0\n", 7) == 0))) + && (startswith (header + 1, "TRACE0\n")))) error (_("File is not a valid trace file.")); push_target (&tfile_ops); @@ -510,22 +510,22 @@ tfile_interp_line (char *line, struct uploaded_tp **utpp, { char *p = line; - if (strncmp (p, "R ", strlen ("R ")) == 0) + if (startswith (p, "R ")) { p += strlen ("R "); trace_regblock_size = strtol (p, &p, 16); } - else if (strncmp (p, "status ", strlen ("status ")) == 0) + else if (startswith (p, "status ")) { p += strlen ("status "); parse_trace_status (p, current_trace_status ()); } - else if (strncmp (p, "tp ", strlen ("tp ")) == 0) + else if (startswith (p, "tp ")) { p += strlen ("tp "); parse_tracepoint_definition (p, utpp); } - else if (strncmp (p, "tsv ", strlen ("tsv ")) == 0) + else if (startswith (p, "tsv ")) { p += strlen ("tsv "); parse_tsv_definition (p, utsvp); diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 0774f5e2a2..7c04ecbcd7 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -3830,11 +3830,11 @@ parse_tracepoint_definition (char *line, struct uploaded_tp **utpp) end = hex2bin (p, (gdb_byte *) buf, strlen (p) / 2); buf[end] = '\0'; - if (strncmp (srctype, "at:", strlen ("at:")) == 0) + if (startswith (srctype, "at:")) utp->at_string = xstrdup (buf); - else if (strncmp (srctype, "cond:", strlen ("cond:")) == 0) + else if (startswith (srctype, "cond:")) utp->cond_string = xstrdup (buf); - else if (strncmp (srctype, "cmd:", strlen ("cmd:")) == 0) + else if (startswith (srctype, "cmd:")) VEC_safe_push (char_ptr, utp->cmd_strings, xstrdup (buf)); } else if (piece == 'V') diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c index 3eff9fdb6b..43bcec2aeb 100644 --- a/gdb/tui/tui-data.c +++ b/gdb/tui/tui-data.c @@ -391,7 +391,7 @@ tui_partial_win_by_name (char *name) char *cur_name = tui_win_name (&tui_win_list[i]->generic); if (strlen (name) <= strlen (cur_name) - && strncmp (name, cur_name, strlen (name)) == 0) + && startswith (cur_name, name)) win_info = tui_win_list[i]; } i++; diff --git a/gdb/utils.c b/gdb/utils.c index 4f9f4f05a2..7172bba719 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -2663,8 +2663,7 @@ subset_compare (char *string_to_compare, char *template_string) if (template_string != (char *) NULL && string_to_compare != (char *) NULL && strlen (string_to_compare) <= strlen (template_string)) match = - (strncmp - (template_string, string_to_compare, strlen (string_to_compare)) == 0); + (startswith (template_string, string_to_compare)); else match = 0; return match; @@ -3278,7 +3277,7 @@ producer_is_gcc (const char *producer, int *major, int *minor) { const char *cs; - if (producer != NULL && strncmp (producer, "GNU ", strlen ("GNU ")) == 0) + if (producer != NULL && startswith (producer, "GNU ")) { int maj, min; diff --git a/gdb/valops.c b/gdb/valops.c index 23a4b3778f..b096a516a1 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1992,9 +1992,9 @@ search_struct_method (const char *name, struct value **arg1p, const char *t_field_name = TYPE_FN_FIELDLIST_NAME (type, i); /* FIXME! May need to check for ARM demangling here. */ - if (strncmp (t_field_name, "__", 2) == 0 || - strncmp (t_field_name, "op", 2) == 0 || - strncmp (t_field_name, "type", 4) == 0) + if (startswith (t_field_name, "__") || + startswith (t_field_name, "op") || + startswith (t_field_name, "type")) { if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI)) t_field_name = dem_opname; @@ -3386,9 +3386,9 @@ value_struct_elt_for_reference (struct type *domain, int offset, const char *t_field_name = TYPE_FN_FIELDLIST_NAME (t, i); char dem_opname[64]; - if (strncmp (t_field_name, "__", 2) == 0 - || strncmp (t_field_name, "op", 2) == 0 - || strncmp (t_field_name, "type", 4) == 0) + if (startswith (t_field_name, "__") + || startswith (t_field_name, "op") + || startswith (t_field_name, "type")) { if (cplus_demangle_opname (t_field_name, dem_opname, DMGL_ANSI)) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 107bdf2bb6..42a6046a48 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -813,11 +813,10 @@ handle_output_debug_string (struct target_waitstatus *ourstatus) &s, 1024, 0) || !s || !*s) /* nothing to do */; - else if (strncmp (s, _CYGWIN_SIGNAL_STRING, - sizeof (_CYGWIN_SIGNAL_STRING) - 1) != 0) + else if (!startswith (s, _CYGWIN_SIGNAL_STRING)) { #ifdef __CYGWIN__ - if (strncmp (s, "cYg", 3) != 0) + if (!startswith (s, "cYg")) #endif warning (("%s"), s); } @@ -1014,8 +1013,7 @@ handle_exception (struct target_waitstatus *ourstatus) if ((!cygwin_exceptions && (addr >= cygwin_load_start && addr < cygwin_load_end)) || (find_pc_partial_function (addr, &fn, NULL, NULL) - && strncmp (fn, "KERNEL32!IsBad", - strlen ("KERNEL32!IsBad")) == 0)) + && startswith (fn, "KERNEL32!IsBad"))) return 0; } #endif diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index e83bd13e16..3cb6eda305 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -2839,7 +2839,7 @@ scan_xcoff_symtab (struct objfile *objfile) loader-generated definitions. Keeping the global symbols leads to "in psymbols but not in symbols" errors. */ - if (strncmp (namestring, "@FIX", 4) == 0) + if (startswith (namestring, "@FIX")) continue; symbol.n_value += ANOFFSET (objfile->section_offsets, -- 2.34.1