Print this page
11506 smatch resync
*** 74,107 ****
int option_assume_loops = 0;
int option_two_passes = 0;
struct symbol *cur_func_sym = NULL;
struct stree *global_states;
! long long valid_ptr_min = 4096;
! long long valid_ptr_max = 2117777777;
! sval_t valid_ptr_min_sval = {
.type = &ptr_ctype,
{.value = 4096},
};
sval_t valid_ptr_max_sval = {
.type = &ptr_ctype,
! {.value = LONG_MAX - 100000},
};
struct range_list *valid_ptr_rl;
! static void set_valid_ptr_max(void)
{
! if (type_bits(&ptr_ctype) == 32)
! valid_ptr_max = 2117777777;
! else if (type_bits(&ptr_ctype) == 64)
! valid_ptr_max = 2117777777777777777LL;
!
valid_ptr_max_sval.value = valid_ptr_max;
- }
- static void alloc_valid_ptr_rl(void)
- {
valid_ptr_rl = alloc_rl(valid_ptr_min_sval, valid_ptr_max_sval);
valid_ptr_rl = cast_rl(&ptr_ctype, valid_ptr_rl);
valid_ptr_rl = clone_rl_permanent(valid_ptr_rl);
}
--- 74,100 ----
int option_assume_loops = 0;
int option_two_passes = 0;
struct symbol *cur_func_sym = NULL;
struct stree *global_states;
! const unsigned long valid_ptr_min = 4096;
! unsigned long valid_ptr_max = ULONG_MAX & ~(MTAG_OFFSET_MASK);
! const sval_t valid_ptr_min_sval = {
.type = &ptr_ctype,
{.value = 4096},
};
sval_t valid_ptr_max_sval = {
.type = &ptr_ctype,
! {.value = ULONG_MAX & ~(MTAG_OFFSET_MASK)},
};
struct range_list *valid_ptr_rl;
! void alloc_valid_ptr_rl(void)
{
! valid_ptr_max = sval_type_max(&ulong_ctype).value & ~(MTAG_OFFSET_MASK);
valid_ptr_max_sval.value = valid_ptr_max;
valid_ptr_rl = alloc_rl(valid_ptr_min_sval, valid_ptr_max_sval);
valid_ptr_rl = cast_rl(&ptr_ctype, valid_ptr_rl);
valid_ptr_rl = clone_rl_permanent(valid_ptr_rl);
}
*** 502,512 ****
__pass_to_client(strip_parens(expr->cast_expression),
SIZEOF_HOOK);
break;
case EXPR_OFFSETOF:
case EXPR_ALIGNOF:
- evaluate_expression(expr);
break;
case EXPR_CONDITIONAL:
case EXPR_SELECT:
expr_set_parent_expr(expr->conditional, expr);
expr_set_parent_expr(expr->cond_true, expr);
--- 495,504 ----
*** 876,888 ****
int time_parsing_function(void)
{
return ms_since(&fn_start_time) / 1000;
}
! static int taking_too_long(void)
{
! if ((ms_since(&outer_fn_start_time) / 1000) > 60 * 5) /* five minutes */
return 1;
return 0;
}
static int is_last_stmt(struct statement *cur_stmt)
--- 868,885 ----
int time_parsing_function(void)
{
return ms_since(&fn_start_time) / 1000;
}
! /*
! * This defaults to 60 * 5 == 5 minutes, so we'll just multiply
! * whatever we're given by 5.
! */
! bool taking_too_long(void)
{
! if (option_timeout &&
! (ms_since(&outer_fn_start_time) / 1000) > option_timeout * 5)
return 1;
return 0;
}
static int is_last_stmt(struct statement *cur_stmt)
*** 1906,1928 ****
caller_info_fd = fopen(buf, "w");
if (!caller_info_fd)
sm_fatal("Error: Cannot open %s", buf);
}
! void smatch(int argc, char **argv)
{
- struct string_list *filelist = NULL;
struct symbol_list *sym_list;
struct timeval stop, start;
char *path;
int len;
gettimeofday(&start, NULL);
- sparse_initialize(argc, argv, &filelist);
- set_valid_ptr_max();
- alloc_valid_ptr_rl();
FOR_EACH_PTR_NOTAG(filelist, base_file) {
path = getcwd(NULL, 0);
free(full_base_file);
if (path) {
len = strlen(path) + 1 + strlen(base_file) + 1;
--- 1903,1921 ----
caller_info_fd = fopen(buf, "w");
if (!caller_info_fd)
sm_fatal("Error: Cannot open %s", buf);
}
! void smatch(struct string_list *filelist)
{
struct symbol_list *sym_list;
struct timeval stop, start;
char *path;
int len;
gettimeofday(&start, NULL);
FOR_EACH_PTR_NOTAG(filelist, base_file) {
path = getcwd(NULL, 0);
free(full_base_file);
if (path) {
len = strlen(path) + 1 + strlen(base_file) + 1;
*** 1938,1947 ****
--- 1931,1941 ----
} END_FOR_EACH_PTR_NOTAG(base_file);
gettimeofday(&stop, NULL);
set_position(last_pos);
+ final_pass = 1;
if (option_time)
sm_msg("time: %lu", stop.tv_sec - start.tv_sec);
if (option_mem)
sm_msg("mem: %luKb", get_max_memory());
}