Print this page
12013 fix GCC4 as primary compiler

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/check_arm64_tagged.c
          +++ new/usr/src/tools/smatch/src/check_arm64_tagged.c
↓ open down ↓ 146 lines elided ↑ open up ↑
 147  147          FOR_EACH_PTR(rl, tmp) {
 148  148                  if (!sval_cmp(tmp->min, sval)) {
 149  149                          return 1;
 150  150                  }
 151  151          } END_FOR_EACH_PTR(tmp);
 152  152          return 0;
 153  153  }
 154  154  
 155  155  static bool rl_is_tagged(struct range_list *rl)
 156  156  {
 157      -        sval_t invalid = { .type = &ullong_ctype, .value = (1ULL << 56) };
 158      -        sval_t invalid_kernel = { .type = &ullong_ctype, .value = (0xff8ULL << 52) };
      157 +        sval_t invalid;
      158 +        sval_t invalid_kernel;
 159  159  
      160 +        invalid.type = &ullong_ctype;
      161 +        invalid.value = 1ULL << 56;
      162 +        invalid_kernel.type = &ullong_ctype;
      163 +        invalid_kernel.value = 0xff8ULL << 52;
      164 +
 160  165          /*
 161  166           * We only care for tagged addresses, thus ignore anything where the
 162  167           * ranges of potential values cannot possibly have any of the top byte
 163  168           * bits set.
 164  169           */
 165  170          if (!rl_is_larger_or_equal(rl, invalid))
 166  171                  return false;
 167  172  
 168  173          /*
 169  174           * Tagged addresses are untagged in the kernel by using sign_extend64 in
↓ open down ↓ 86 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX