Print this page
11972 resync smatch

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/lib.h
          +++ new/usr/src/tools/smatch/src/lib.h
   1    1  #ifndef LIB_H
   2    2  #define LIB_H
   3    3  
        4 +#include <stdbool.h>
   4    5  #include <stdlib.h>
   5    6  #include <stddef.h>
   6    7  
   7    8  /*
   8    9   * Basic helper routine descriptions for 'sparse'.
   9   10   *
  10   11   * Copyright (C) 2003 Transmeta Corp.
  11   12   *               2003 Linus Torvalds
  12   13   *               2004 Christopher Li
  13   14   *
↓ open down ↓ 11 lines elided ↑ open up ↑
  25   26   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  26   27   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  27   28   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  28   29   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  29   30   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  30   31   * THE SOFTWARE.
  31   32   */
  32   33  
  33   34  #include "compat.h"
  34   35  #include "ptrlist.h"
       36 +#include "utils.h"
       37 +#include "bits.h"
  35   38  
  36   39  #define DO_STRINGIFY(x) #x
  37   40  #define STRINGIFY(x) DO_STRINGIFY(x)
  38   41  
  39   42  #ifndef ARRAY_SIZE
  40   43  #define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
  41   44  #endif
  42   45  
  43      -extern int verbose, optimize, optimize_size, preprocessing;
       46 +extern int verbose, optimize_level, optimize_size, preprocessing;
  44   47  extern int die_if_error;
  45   48  extern int parse_error;
  46      -extern int repeat_phase, merge_phi_sources;
       49 +extern int repeat_phase;
       50 +extern int do_output;
  47   51  extern int gcc_major, gcc_minor, gcc_patchlevel;
  48   52  
       53 +extern const char *base_filename;
       54 +
  49   55  extern unsigned int hexval(unsigned int c);
  50   56  
  51   57  struct position {
  52   58          unsigned int type:6,
  53   59                       stream:14,
  54   60                       newline:1,
  55   61                       whitespace:1,
  56   62                       pos:10;
  57   63          unsigned int line:31,
  58   64                       noexpand:1;
↓ open down ↓ 17 lines elided ↑ open up ↑
  76   82  DECLARE_PTR_LIST(instruction_list, struct instruction);
  77   83  DECLARE_PTR_LIST(multijmp_list, struct multijmp);
  78   84  DECLARE_PTR_LIST(pseudo_list, struct pseudo);
  79   85  DECLARE_PTR_LIST(ident_list, struct ident);
  80   86  DECLARE_PTR_LIST(string_list, char);
  81   87  
  82   88  typedef struct pseudo *pseudo_t;
  83   89  
  84   90  struct token *skip_to(struct token *, int);
  85   91  struct token *expect(struct token *, int, const char *);
       92 +void unexpected(struct token *, const char *errmsg);
       93 +
  86   94  #ifdef __GNUC__
  87   95  #define FORMAT_ATTR(pos) __attribute__ ((__format__ (__printf__, pos, pos+1)))
  88   96  #define NORETURN_ATTR __attribute__ ((__noreturn__))
  89   97  #define SENTINEL_ATTR __attribute__ ((__sentinel__))
  90   98  #else
  91   99  #define FORMAT_ATTR(pos)
  92  100  #define NORETURN_ATTR
  93  101  #define SENTINEL_ATTR
  94  102  #endif
  95  103  
↓ open down ↓ 5 lines elided ↑ open up ↑
 101  109  
 102  110  extern void info(struct position, const char *, ...) FORMAT_ATTR(2);
 103  111  extern void warning(struct position, const char *, ...) FORMAT_ATTR(2);
 104  112  extern void sparse_error(struct position, const char *, ...) FORMAT_ATTR(2);
 105  113  extern void expression_error(struct expression *, const char *, ...) FORMAT_ATTR(2);
 106  114  
 107  115  #define ERROR_CURR_PHASE        (1 << 0)
 108  116  #define ERROR_PREV_PHASE        (1 << 1)
 109  117  extern int has_error;
 110  118  
      119 +
      120 +enum phase {
      121 +        PASS__PARSE,
      122 +        PASS__LINEARIZE,
      123 +        PASS__MEM2REG,
      124 +        PASS__OPTIM,
      125 +        PASS__FINAL,
      126 +};
      127 +
      128 +#define PASS_PARSE              (1UL << PASS__PARSE)
      129 +#define PASS_LINEARIZE          (1UL << PASS__LINEARIZE)
      130 +#define PASS_MEM2REG            (1UL << PASS__MEM2REG)
      131 +#define PASS_OPTIM              (1UL << PASS__OPTIM)
      132 +#define PASS_FINAL              (1UL << PASS__FINAL)
      133 +
      134 +
 111  135  extern void add_pre_buffer(const char *fmt, ...) FORMAT_ATTR(1);
      136 +extern void predefine(const char *name, int weak, const char *fmt, ...) FORMAT_ATTR(3);
 112  137  
 113  138  extern int preprocess_only;
 114  139  
 115  140  extern int Waddress;
 116  141  extern int Waddress_space;
 117  142  extern int Wbitwise;
      143 +extern int Wbitwise_pointer;
      144 +extern int Wcast_from_as;
 118  145  extern int Wcast_to_as;
 119  146  extern int Wcast_truncate;
 120  147  extern int Wconstant_suffix;
 121  148  extern int Wconstexpr_not_const;
 122  149  extern int Wcontext;
 123  150  extern int Wdecl;
 124  151  extern int Wdeclarationafterstatement;
 125  152  extern int Wdefault_bitfield_sign;
 126  153  extern int Wdesignated_init;
 127  154  extern int Wdo_while;
 128  155  extern int Wenum_mismatch;
 129  156  extern int Wexternal_function_has_definition;
 130  157  extern int Wsparse_error;
 131  158  extern int Wimplicit_int;
 132  159  extern int Winit_cstring;
      160 +extern int Wint_to_pointer_cast;
 133  161  extern int Wmemcpy_max_count;
 134  162  extern int Wnon_pointer_null;
 135  163  extern int Wold_initializer;
 136  164  extern int Wold_style_definition;
 137  165  extern int Wone_bit_signed_bitfield;
 138  166  extern int Woverride_init;
 139  167  extern int Woverride_init_all;
 140  168  extern int Woverride_init_whole_range;
 141  169  extern int Wparen_string;
 142  170  extern int Wpointer_arith;
      171 +extern int Wpointer_to_int_cast;
 143  172  extern int Wptr_subtraction_blows;
 144  173  extern int Wreturn_void;
 145  174  extern int Wshadow;
      175 +extern int Wshift_count_negative;
      176 +extern int Wshift_count_overflow;
 146  177  extern int Wsizeof_bool;
 147  178  extern int Wstrict_prototypes;
 148  179  extern int Wtautological_compare;
 149  180  extern int Wtransparent_union;
 150  181  extern int Wtypesign;
 151  182  extern int Wundef;
 152  183  extern int Wuninitialized;
 153  184  extern int Wunknown_attribute;
 154  185  extern int Wvla;
 155  186  
 156  187  extern int dump_macro_defs;
      188 +extern int dump_macros_only;
 157  189  
 158      -extern int dbg_entry;
      190 +extern int dbg_compound;
 159  191  extern int dbg_dead;
      192 +extern int dbg_domtree;
      193 +extern int dbg_entry;
      194 +extern int dbg_ir;
      195 +extern int dbg_postorder;
 160  196  
      197 +extern unsigned int fmax_warnings;
 161  198  extern int fmem_report;
 162      -extern int fdump_linearize;
      199 +extern unsigned long fdump_ir;
 163  200  extern unsigned long long fmemcpy_max_count;
      201 +extern unsigned long fpasses;
      202 +extern int funsigned_char;
 164  203  
 165  204  extern int arch_m64;
 166  205  extern int arch_msize_long;
 167  206  extern int arch_big_endian;
      207 +extern int arch_mach;
 168  208  
 169      -extern void declare_builtin_functions(void);
 170      -extern void create_builtin_stream(void);
 171  209  extern void dump_macro_definitions(void);
 172  210  extern struct symbol_list *sparse_initialize(int argc, char **argv, struct string_list **files);
 173  211  extern struct symbol_list *__sparse(char *filename);
 174  212  extern struct symbol_list *sparse_keep_tokens(char *filename);
 175  213  extern struct symbol_list *sparse(char *filename);
 176  214  extern void report_stats(void);
 177  215  
 178  216  static inline int symbol_list_size(struct symbol_list *list)
 179  217  {
 180  218          return ptr_list_size((struct ptr_list *)(list));
↓ open down ↓ 19 lines elided ↑ open up ↑
 200  238          return ptr_list_size((struct ptr_list *)(list));
 201  239  }
 202  240  
 203  241  static inline int bb_list_size(struct basic_block_list *list)
 204  242  {
 205  243          return ptr_list_size((struct ptr_list *)(list));
 206  244  }
 207  245  
 208  246  static inline void free_instruction_list(struct instruction_list **head)
 209  247  {
 210      -        free_ptr_list((struct ptr_list **)head);
      248 +        free_ptr_list(head);
 211  249  }
 212  250  
 213  251  static inline struct instruction * delete_last_instruction(struct instruction_list **head)
 214  252  {
 215  253          return undo_ptr_list_last((struct ptr_list **)head);
 216  254  }
 217  255  
 218      -static inline struct basic_block * delete_last_basic_block(struct basic_block_list **head)
 219      -{
 220      -        return delete_ptr_list_last((struct ptr_list **)head);
 221      -}
 222      -
 223  256  static inline struct basic_block *first_basic_block(struct basic_block_list *head)
 224  257  {
 225  258          return first_ptr_list((struct ptr_list *)head);
 226  259  }
 227  260  static inline struct instruction *last_instruction(struct instruction_list *head)
 228  261  {
 229  262          return last_ptr_list((struct ptr_list *)head);
 230  263  }
 231  264  
 232  265  static inline struct instruction *first_instruction(struct instruction_list *head)
↓ open down ↓ 52 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX