]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
coverity: last of the unsigned >= 0 warnings
authorPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 9 Oct 2023 06:10:01 +0000 (08:10 +0200)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Mon, 9 Oct 2023 06:10:01 +0000 (08:10 +0200)
Also a bit of struct space saving thanks to pahole

23 files changed:
VEX/priv/guest_arm64_toIR.c
VEX/priv/guest_arm_toIR.c
VEX/priv/guest_generic_bb_to_IR.c
coregrind/m_debuginfo/debuginfo.c
coregrind/m_debuginfo/readdwarf3.c
coregrind/m_debuginfo/storage.c
coregrind/m_errormgr.c
coregrind/m_gdbserver/valgrind-low-amd64.c
coregrind/m_gdbserver/valgrind-low-arm.c
coregrind/m_gdbserver/valgrind-low-arm64.c
coregrind/m_gdbserver/valgrind-low-mips32.c
coregrind/m_gdbserver/valgrind-low-mips64.c
coregrind/m_gdbserver/valgrind-low-nanomips.c
coregrind/m_gdbserver/valgrind-low-ppc32.c
coregrind/m_gdbserver/valgrind-low-ppc64.c
coregrind/m_gdbserver/valgrind-low-s390x.c
coregrind/m_gdbserver/valgrind-low-x86.c
coregrind/m_gdbserver/valgrind_low.h
coregrind/m_main.c
coregrind/m_transtab.c
coregrind/m_ume/main.c
include/pub_tool_options.h
memcheck/mc_errors.c

index 577751437917e5daf412a22f0156fb40e147e201..97b09417561214e7e1810bc03269b73feb19dabb 100644 (file)
@@ -10382,7 +10382,7 @@ Bool dis_AdvSIMD_scalar_shift_by_imm(/*MB_OUT*/DisResult* dres, UInt insn)
          Adjust shift to compensate. */
       UInt lanebits = 8 << size;
       shift = lanebits - shift;
-      vassert(shift >= 0 && shift < lanebits);
+      vassert(shift < lanebits);
       const HChar* nm = NULL;
       /**/ if (bitU == 0 && opcode == BITS5(0,1,1,1,0)) nm = "sqshl";
       else if (bitU == 1 && opcode == BITS5(0,1,1,1,0)) nm = "uqshl";
@@ -11816,7 +11816,7 @@ Bool dis_AdvSIMD_shift_by_immediate(/*MB_OUT*/DisResult* dres, UInt insn)
       Bool isQ   = bitQ == 1;
       Bool ok    = getLaneInfo_IMMH_IMMB(&shift, &size, immh, immb);
       if (!ok || (bitQ == 0 && size == X11)) return False;
-      vassert(size >= 0 && size <= 3);
+      vassert(size <= 3);
       /* The shift encoding has opposite sign for the leftwards case.
          Adjust shift to compensate. */
       UInt lanebits = 8 << size;
index 12acfbc865e72cc61d1cf49465d5dcaabe1b626f..2bedccd14dcfd97ea2e599249e06b277acec7677 100644 (file)
@@ -12874,7 +12874,7 @@ static Bool decode_V8_instruction (
         gate = False;
 
      if (gate) {
-        vassert(ix >= 0 && ix < 7);
+        vassert(ix < 7);
         const HChar* inames[7]
            = { "sha1c", "sha1p", "sha1m", "sha1su0",
                "sha256h", "sha256h2", "sha256su1" };
index 1e72ddacd6a850ce4658e874d10596eaac62204a..1b9821a7cf02e0718676307bf20ca88992f9d7b1 100644 (file)
@@ -176,7 +176,7 @@ static void create_self_checks_as_needed(
          len2check  = vge->len[i];
 
          /* stay sane */
-         vassert(len2check >= 0 && len2check < 2000/*arbitrary*/);
+         vassert(len2check < 2000/*arbitrary*/);
 
          /* Skip the check if the translation involved zero bytes */
          if (len2check == 0)
@@ -960,7 +960,7 @@ static IRSB* disassemble_basic_block_till_stop(
       /* stay sane ... */
       vassert(dres.whatNext == Dis_StopHere || dres.whatNext == Dis_Continue);
       /* ... disassembled insn length is sane ... */
-      vassert(dres.len >= 0 && dres.len <= 24);
+      vassert(dres.len <= 24);
 
       /* If the disassembly function passed us a hint, take note of it. */
       if (LIKELY(dres.hint == Dis_HintNone)) {
index 0ffab17922a61c1d66c365f51e6161cdad677e8f..eed134be85113f251ee605d7c37fe8230f127530 100644 (file)
@@ -4480,7 +4480,7 @@ Bool VG_(get_data_description)(
    n_frames = VG_(get_StackTrace)( tid, ips, N_FRAMES,
                                    sps, fps, 0/*first_ip_delta*/ );
 
-   vg_assert(n_frames >= 0 && n_frames <= N_FRAMES);
+   vg_assert(n_frames <= N_FRAMES);
    for (j = 0; j < n_frames; j++) {
       if (consider_vars_in_frame( dname1, dname2,
                                   ep, data_addr,
index b1a709e6a0667e9e4918a4d32b6863bd37248125..a3f100d3487027837ab800ab470a367fefb9618a 100644 (file)
@@ -2594,8 +2594,7 @@ void read_filename_table( /*MOD*/XArray* /* of UInt* */ fndn_ix_Table,
          DiCursor cur = get_AsciiZ(&c);
          str = ML_(addStrFromCursor)( cc->di, cur );
          dir_xa_ix = get_ULEB128( &c );
-         if (dirname_xa != NULL
-             && dir_xa_ix >= 0 && dir_xa_ix < VG_(sizeXA) (dirname_xa))
+         if (dirname_xa != NULL && dir_xa_ix < VG_(sizeXA) (dirname_xa))
             dirname = *(HChar**)VG_(indexXA) ( dirname_xa, dir_xa_ix );
          else
             dirname = NULL;
index ace485c1573f10d4bfdeba33690dc6e2dbb8ad90..961d767b8abde7f7582ba2c3be0e21eda12c7acb 100644 (file)
@@ -2066,7 +2066,6 @@ static void canonicaliseLoctab ( struct _DebugInfo* di )
    sort_loctab_and_loctab_fndn_ix (di);
 
    for (i = 0; i < ((Word)di->loctab_used)-1; i++) {
-      vg_assert(di->loctab[i].size < 10000);
       /* If two adjacent entries overlap, truncate the first. */
       if (di->loctab[i].addr + di->loctab[i].size > di->loctab[i+1].addr) {
          /* Do this in signed int32 because the actual .size fields
index 63c0e4eaa78e22ca7260e481750a07aba3c53944..8f2fc0a965ebb6845fbbb3ea35a521d922fc77f1 100644 (file)
@@ -136,8 +136,8 @@ struct _Error {
 
    // The tool-specific part
    ThreadId tid;           // Initialised by core
-   ExeContext* where;      // Initialised by core
    ErrorKind ekind;        // Used by ALL.  Must be in the range (0..)
+   ExeContext* where;      // Initialised by core
    Addr addr;              // Used frequently
    const HChar* string;    // Used frequently
    void* extra;            // For any tool-specific extras
index 0f83de1e1eb0e52fb9d97ebc46c781025d24fdb9..1808609a5e886aa5642781fa892ff70699d09bd2 100644 (file)
@@ -348,8 +348,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    -1, // Must be computed at init time.
-   regs,
    7, //RSP
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index 5a2348732b90364dc3a97a569d64dad9810f5f0c..79050f15b6a2cad149bd4dc2a49ce2ecd36e6d72 100644 (file)
@@ -294,8 +294,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    13, //SP
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index 292650dc1adb795189b6668eafe6dd585830ecb5..03239b28e889a2e48dcbb44ca332d8444e18b4ca 100644 (file)
@@ -264,8 +264,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    31, //SP
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index a132a43505a8ca59c434b138f96d66f40d0ed8ae..62eeb01f9de64b9a78219a186a9e405dbda924b1 100644 (file)
@@ -364,8 +364,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    29, //sp = r29, which is register offset 29 in regs
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index 026dbe76389d231d1919dfa958e5fa47030c7be3..9b96d9e5bc03a6d552934059425fa4897381e193 100644 (file)
@@ -365,8 +365,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    29, //sp = r29, which is register offset 29 in regs
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index d2c4f0332fc4f224e7e135eb4023b8403071f7e9..dea345c29ed6cf71e76d6932b32fbffe489b1b1c 100644 (file)
@@ -200,8 +200,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    29, //sp = r29, which is register offset 29 in regs
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index bdb0896b9bc3e21909360c8e3bfa0b19dbd70842..be5fb97678c72e6da8dd3346363d318909c5f7d1 100644 (file)
@@ -337,8 +337,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    1, //r1
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index 1e2a159442d63fb25af409575deea7cbc3d6da31..01488bbef72da2649bea81efb6ae613f5a5bddf4 100644 (file)
@@ -492,8 +492,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    1, //r1
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index 74898e471a0a1a3c801e96923904b4658a2714b0..bdb767f20416e0dd5acdb48118e6056ba7df0d58 100644 (file)
@@ -282,8 +282,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    -1, // Override at init time.
-   regs,
    17, //sp = r15, which is register offset 17 in regs
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index e7adac700c3b7e9263cfe4783358734567946fd1..4acccef2a86a082b2ad15370bda28a86614e6577 100644 (file)
@@ -273,8 +273,8 @@ static CORE_ADDR** target_get_dtv (ThreadState *tst)
 
 static struct valgrind_target_ops low_target = {
    num_regs,
-   regs,
    4, //ESP
+   regs,
    transfer_register,
    get_pc,
    set_pc,
index c6c0bb63b5afdc036faf35db28b43b14d2ed9701..d8ae3c908616b6f25b7828998e99d172e4c3eed3 100644 (file)
 struct valgrind_target_ops
 {
    int num_regs;
-   struct reg *reg_defs;
 
    int stack_pointer_regno;
    /* register number of the stack pointer register */
-   
+
+   struct reg *reg_defs;
+
    /* transfer the register regno from/to valgrind (guest state)
       to/from buf
       according to transfer_direction.
index 1cedaaf2e36c5baa4db89ca2dfffefdcfc163784..bb4a0ca96e4ef33907ca5eee2b0a3a032bb349b0 100644 (file)
@@ -679,8 +679,8 @@ else if VG_INT_CLOM(cloPD, arg, "--scheduling-quantum",
    }
 
    else if VG_BOOL_CLOM(cloPD, arg, "--sym-offsets",      VG_(clo_sym_offsets)) {}
-   else if VG_BINT_CLOM(cloPD, arg, "--progress-interval",
-                        VG_(clo_progress_interval), 0, 3600) {}
+   else if VG_BUINT_CLOM(cloPD, arg, "--progress-interval",
+                        VG_(clo_progress_interval), 3600) {}
    else if VG_BOOL_CLO(arg, "--read-inline-info", VG_(clo_read_inline_info)) {}
    else if VG_BOOL_CLO(arg, "--read-var-info",    VG_(clo_read_var_info)) {}
 
index ce54ce7108544b68795bfc7eaa72dd7d2e2a50a6..3c45ef43b3f2c2923200d8f4133aa1f79f32d376 100644 (file)
@@ -2046,7 +2046,7 @@ static void delete_tte ( /*OUT*/Addr* ga_deleted,
    for (i = 0; i < tteC->n_tte2ec; i++) {
       ec_num = tteC->tte2ec_ec[i];
       ec_idx = tteC->tte2ec_ix[i];
-      vg_assert(ec_num >= 0 && ec_num < ECLASS_N);
+      vg_assert(ec_num < ECLASS_N);
       vg_assert(ec_idx >= 0);
       vg_assert(ec_idx < sec->ec2tte_used[ec_num]);
       /* Assert that the two links point at each other. */
index 49e48d242b8dc357b7db7ee57c13288baf5d4e73..229867e2684fd4848c474a90975c556337471159 100644 (file)
@@ -142,7 +142,7 @@ Int VG_(do_exec_inner)(const HChar* exe, ExeInfo* info)
    if (sr_isError(res))
       return sr_Err(res);
 
-   vg_assert2(sr_Res(res) >= 0 && sr_Res(res) < EXE_HANDLER_COUNT, 
+   vg_assert2(sr_Res(res) < EXE_HANDLER_COUNT,
               "invalid VG_(pre_exec_check) result");
 
    ret = (*exe_handlers[sr_Res(res)].load_fn)(fd, exe, info);
index 0f7c11bafb2df08189842c855f0e0b4f208e6a32..972e7546ae58496c48b15db6521c409fcf114af5 100644 (file)
@@ -255,11 +255,36 @@ Bool VG_(bool_clom)(Clo_Mode qq_mode, const HChar* qq_arg, const HChar* qq_optio
       }                                                                \
       res;}))
 
+// As above, but for unsigned int arguments with a lower bound of 0
+#define VG_BUINTN_CLOM(qq_mode, qq_base, qq_arg, qq_option, qq_var, qq_hi) \
+(VG_(check_clom)                                                     \
+ (qq_mode, qq_arg, qq_option,                                        \
+  VG_STREQN(VG_(strlen)(qq_option)+1, qq_arg, qq_option"=")) &&      \
+ ({Bool res = True;                                                  \
+      const HChar* val = &(qq_arg)[ VG_(strlen)(qq_option)+1 ];         \
+      HChar* s;                                                         \
+      Long n = VG_(strtoll##qq_base)( val, &s );                        \
+      (qq_var) = n;                                                     \
+      if ('\0' != s[0] || (qq_var) != n) {                              \
+         VG_(fmsg_bad_option)(qq_arg,                                   \
+                              "Invalid integer value '%s'\n", val);     \
+         res = False; }                                                 \
+      /* Check bounds. */                                               \
+      if ((qq_var) > (qq_hi)) {                                         \
+         VG_(fmsg_bad_option)(qq_arg,                                   \
+            "'%s' argument must be <= %lld\n",            \
+                              (qq_option), (Long)(qq_hi));              \
+         res = False;                                                  \
+      }                                                                \
+      res;}))
+
 // Bounded decimal integer arg, eg. --foo=100
 #define VG_BINT_CLO(qq_arg, qq_option, qq_var, qq_lo, qq_hi) \
    VG_BINTN_CLOM(cloP, 10, (qq_arg), qq_option, (qq_var), (qq_lo), (qq_hi))
 #define VG_BINT_CLOM(qq_mode, qq_arg, qq_option, qq_var, qq_lo, qq_hi) \
    VG_BINTN_CLOM(qq_mode, 10, (qq_arg), qq_option, (qq_var), (qq_lo), (qq_hi))
+#define VG_BUINT_CLOM(qq_mode, qq_arg, qq_option, qq_var, qq_hi) \
+   VG_BUINTN_CLOM(qq_mode, 10, (qq_arg), qq_option, (qq_var), (qq_hi))
 
 // Bounded hexadecimal integer arg, eg. --foo=0x1fa8
 #define VG_BHEX_CLO(qq_arg, qq_option, qq_var, qq_lo, qq_hi) \
index 2a4cce7a119ab86a9f120c7a6b8510952d88b7a7..2195cfbe53dc3eba7d917b41df8a45c59bae33a9 100644 (file)
@@ -1613,6 +1613,7 @@ typedef struct _MC_LeakSuppExtra MC_LeakSuppExtra;
 
 struct _MC_LeakSuppExtra {
    UInt match_leak_kinds;
+   UInt  leak_search_gen;
 
    /* Maintains nr of blocks and bytes suppressed with this suppression
       during the leak search identified by leak_search_gen.
@@ -1620,7 +1621,6 @@ struct _MC_LeakSuppExtra {
       used the first time during a leak search. */
    SizeT blocks_suppressed;
    SizeT bytes_suppressed;
-   UInt  leak_search_gen;
 };
 
 typedef struct {