Print this page
11506 smatch resync

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_param_set.c
          +++ new/usr/src/tools/smatch/src/smatch_param_set.c
↓ open down ↓ 156 lines elided ↑ open up ↑
 157  157  static void print_return_value_param(int return_id, char *return_ranges, struct expression *expr)
 158  158  {
 159  159          struct sm_state *sm;
 160  160          struct smatch_state *extra;
 161  161          int param;
 162  162          struct range_list *rl;
 163  163          const char *param_name;
 164  164          struct string_list *set_list = NULL;
 165  165          char *math_str;
 166  166          char buf[256];
 167      -        sval_t sval;
 168  167  
 169  168          FOR_EACH_MY_SM(my_id, __get_cur_stree(), sm) {
 170  169                  if (!estate_rl(sm->state))
 171  170                          continue;
 172  171                  extra = get_state(SMATCH_EXTRA, sm->name, sm->sym);
 173  172                  if (extra) {
 174  173                          rl = rl_intersection(estate_rl(sm->state), estate_rl(extra));
 175  174                          if (!rl)
 176  175                                  continue;
 177  176                  } else {
↓ open down ↓ 3 lines elided ↑ open up ↑
 181  180                  param = get_param_num_from_sym(sm->sym);
 182  181                  if (param < 0)
 183  182                          continue;
 184  183                  param_name = get_param_name(sm);
 185  184                  if (!param_name)
 186  185                          continue;
 187  186                  if (strcmp(param_name, "$") == 0) {
 188  187                          insert_string(&set_list, (char *)sm->name);
 189  188                          continue;
 190  189                  }
      190 +                if (is_recursive_member(param_name)) {
      191 +                        insert_string(&set_list, (char *)sm->name);
      192 +                        continue;
      193 +                }
 191  194  
 192      -                if (rl_to_sval(rl, &sval)) {
      195 +                if (is_ignored_kernel_data(param_name)) {
 193  196                          insert_string(&set_list, (char *)sm->name);
 194      -                        sql_insert_return_states(return_id, return_ranges,
 195      -                                        param_has_filter_data(sm) ? PARAM_ADD : PARAM_SET,
 196      -                                        param, param_name, show_rl(rl));
 197  197                          continue;
 198  198                  }
 199  199  
 200  200                  math_str = get_value_in_terms_of_parameter_math_var_sym(sm->name, sm->sym);
 201  201                  if (math_str) {
 202  202                          snprintf(buf, sizeof(buf), "%s[%s]", show_rl(rl), math_str);
 203  203                          insert_string(&set_list, (char *)sm->name);
 204  204                          sql_insert_return_states(return_id, return_ranges,
 205  205                                          param_has_filter_data(sm) ? PARAM_ADD : PARAM_SET,
 206  206                                          param, param_name, buf);
↓ open down ↓ 46 lines elided ↑ open up ↑
 253  253          ret = param_was_set_var_sym(name, sym);
 254  254  free:
 255  255          free_string(name);
 256  256          return ret;
 257  257  }
 258  258  
 259  259  void register_param_set(int id)
 260  260  {
 261  261          my_id = id;
 262  262  
      263 +        set_dynamic_states(my_id);
 263  264          add_extra_mod_hook(&extra_mod_hook);
 264  265          add_hook(match_array_assignment, ASSIGNMENT_HOOK);
 265  266          add_unmatched_state_hook(my_id, &unmatched_state);
 266  267          add_merge_hook(my_id, &merge_estates);
 267  268          add_split_return_callback(&print_return_value_param);
 268  269  }
 269  270  
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX