Print this page
11506 smatch resync

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_extra.h
          +++ new/usr/src/tools/smatch/src/smatch_extra.h
↓ open down ↓ 22 lines elided ↑ open up ↑
  23   23          struct symbol *sym;
  24   24  };
  25   25  
  26   26  DECLARE_PTR_LIST(related_list, struct relation);
  27   27  
  28   28  struct data_info {
  29   29          struct related_list *related;
  30   30          struct range_list *value_ranges;
  31   31          sval_t fuzzy_max;
  32   32          unsigned int hard_max:1;
       33 +        unsigned int capped:1;
  33   34  };
  34   35  DECLARE_ALLOCATOR(data_info);
  35   36  
  36   37  extern struct string_list *__ignored_macros;
  37   38  
  38   39  /* these are implemented in smatch_ranges.c */
  39   40  struct range_list *rl_zero(void);
  40   41  struct range_list *rl_one(void);
  41   42  char *show_rl(struct range_list *list);
  42   43  int str_to_comparison_arg(const char *c, struct expression *call, int *comparison, struct expression **arg);
  43   44  void str_to_rl(struct symbol *type, char *value, struct range_list **rl);
  44      -void call_results_to_rl(struct expression *call, struct symbol *type, char *value, struct range_list **rl);
       45 +void call_results_to_rl(struct expression *call, struct symbol *type, const char *value, struct range_list **rl);
  45   46  
  46   47  struct data_range *alloc_range(sval_t min, sval_t max);
  47   48  struct data_range *alloc_range_perm(sval_t min, sval_t max);
  48   49  
       50 +int rl_fits_in_type(struct range_list *rl, struct symbol *type);
       51 +
  49   52  struct range_list *alloc_rl(sval_t min, sval_t max);
  50   53  struct range_list *clone_rl(struct range_list *list);
  51   54  struct range_list *clone_rl_permanent(struct range_list *list);
  52   55  struct range_list *alloc_whole_rl(struct symbol *type);
  53   56  
  54   57  void add_range(struct range_list **list, sval_t min, sval_t max);
  55   58  struct range_list *remove_range(struct range_list *list, sval_t min, sval_t max);
  56   59  void tack_on(struct range_list **list, struct data_range *drange);
  57   60  
  58   61  int true_comparison_range(struct data_range *left, int comparison, struct data_range *right);
↓ open down ↓ 6 lines elided ↑ open up ↑
  65   68  
  66   69  int possibly_false(struct expression *left, int comparison, struct expression *right);
  67   70  int possibly_false_rl(struct range_list *left_ranges, int comparison, struct range_list *right_ranges);
  68   71  int possibly_false_rl_LR(int comparison, struct range_list *a, struct range_list *b, int left);
  69   72  
  70   73  int rl_has_sval(struct range_list *rl, sval_t sval);
  71   74  int ranges_equiv(struct data_range *one, struct data_range *two);
  72   75  
  73   76  int rl_equiv(struct range_list *one, struct range_list *two);
  74   77  int is_whole_rl(struct range_list *rl);
       78 +int is_unknown_ptr(struct range_list *rl);
  75   79  int is_whole_rl_non_zero(struct range_list *rl);
  76   80  int estate_is_unknown(struct smatch_state *state);
  77   81  
  78   82  sval_t rl_min(struct range_list *rl);
  79   83  sval_t rl_max(struct range_list *rl);
  80   84  int rl_to_sval(struct range_list *rl, sval_t *sval);
  81   85  struct symbol *rl_type(struct range_list *rl);
  82   86  
  83      -struct range_list *rl_invert(struct range_list *orig);
  84   87  struct range_list *rl_filter(struct range_list *rl, struct range_list *filter);
  85   88  struct range_list *rl_intersection(struct range_list *one, struct range_list *two);
  86   89  struct range_list *rl_union(struct range_list *one, struct range_list *two);
  87   90  struct range_list *rl_binop(struct range_list *left, int op, struct range_list *right);
  88   91  
  89   92  void push_rl(struct range_list_stack **rl_stack, struct range_list *rl);
  90   93  struct range_list *pop_rl(struct range_list_stack **rl_stack);
  91   94  struct range_list *top_rl(struct range_list_stack *rl_stack);
  92   95  void filter_top_rl(struct range_list_stack **rl_stack, struct range_list *filter);
  93   96  
↓ open down ↓ 16 lines elided ↑ open up ↑
 110  113  
 111  114  /* smatch_estate.c */
 112  115  
 113  116  struct smatch_state *alloc_estate_empty(void);
 114  117  struct smatch_state *alloc_estate_sval(sval_t sval);
 115  118  struct smatch_state *alloc_estate_range(sval_t min, sval_t max);
 116  119  struct smatch_state *alloc_estate_rl(struct range_list *rl);
 117  120  struct smatch_state *alloc_estate_whole(struct symbol *type);
 118  121  struct smatch_state *clone_estate(struct smatch_state *state);
 119  122  struct smatch_state *clone_estate_cast(struct symbol *type, struct smatch_state *state);
      123 +struct smatch_state *clone_partial_estate(struct smatch_state *state, struct range_list *rl);
 120  124  
 121  125  struct smatch_state *merge_estates(struct smatch_state *s1, struct smatch_state *s2);
 122  126  
 123  127  int estates_equiv(struct smatch_state *one, struct smatch_state *two);
 124  128  int estate_is_whole(struct smatch_state *state);
 125  129  int estate_is_empty(struct smatch_state *state);
 126  130  
 127  131  struct range_list *estate_rl(struct smatch_state *state);
 128  132  struct related_list *estate_related(struct smatch_state *state);
 129  133  
↓ open down ↓ 3 lines elided ↑ open up ↑
 133  137  
 134  138  int estate_has_fuzzy_max(struct smatch_state *state);
 135  139  sval_t estate_get_fuzzy_max(struct smatch_state *state);
 136  140  void estate_set_fuzzy_max(struct smatch_state *state, sval_t max);
 137  141  void estate_copy_fuzzy_max(struct smatch_state *new, struct smatch_state *old);
 138  142  void estate_clear_fuzzy_max(struct smatch_state *state);
 139  143  int estate_has_hard_max(struct smatch_state *state);
 140  144  void estate_set_hard_max(struct smatch_state *state);
 141  145  void estate_clear_hard_max(struct smatch_state *state);
 142  146  int estate_get_hard_max(struct smatch_state *state, sval_t *sval);
      147 +bool estate_capped(struct smatch_state *state);
      148 +void estate_set_capped(struct smatch_state *state);
 143  149  
 144  150  int estate_get_single_value(struct smatch_state *state, sval_t *sval);
 145  151  struct smatch_state *get_implied_estate(struct expression *expr);
 146  152  
 147  153  struct smatch_state *estate_filter_sval(struct smatch_state *orig, sval_t filter);
 148      -struct smatch_state *estate_filter_range(struct smatch_state *orig, sval_t filter_min, sval_t filter_max);
 149  154  struct data_info *clone_dinfo_perm(struct data_info *dinfo);
 150  155  struct smatch_state *clone_estate_perm(struct smatch_state *state);
 151  156  
 152  157  /* smatch_extra.c */
 153  158  bool is_impossible_variable(struct expression *expr);
 154  159  struct sm_state *get_extra_sm_state(struct expression *expr);
 155  160  struct smatch_state *get_extra_state(struct expression *expr);
 156  161  void call_extra_mod_hooks(const char *name, struct symbol *sym, struct expression *expr, struct smatch_state *state);
 157  162  void set_extra_mod(const char *name, struct symbol *sym, struct expression *expr, struct smatch_state *state);
 158  163  void set_extra_expr_mod(struct expression *expr, struct smatch_state *state);
↓ open down ↓ 68 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX