From 157e892acad7ab7b3d0660c67ffb4d6c191041b4 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 11 Feb 2013 17:25:38 +0300 Subject: [PATCH] db: move return_values to use raw SQL Instead of printing human readable text and parsing it with fill_db_return_values.pl, just print raw SQL and parse it with fill_db_sql.pl. Signed-off-by: Dan Carpenter --- check_db_info.c | 3 +- smatch.h | 1 + smatch_db.c | 6 ++++ smatch_scripts/db/fill_db_return_values.pl | 49 ------------------------------ 4 files changed, 8 insertions(+), 51 deletions(-) delete mode 100755 smatch_scripts/db/fill_db_return_values.pl diff --git a/check_db_info.c b/check_db_info.c index b153a4e6..216d00e8 100644 --- a/check_db_info.c +++ b/check_db_info.c @@ -43,8 +43,7 @@ static void match_end_func(struct symbol *sym) { if (!return_ranges) return; - sm_msg("info: function_return_values '%s' %s", - show_rl(return_ranges), global_static()); + sql_insert_return_values(show_rl(return_ranges)); return_ranges = NULL; } diff --git a/smatch.h b/smatch.h index 7f7a84ac..17430d05 100644 --- a/smatch.h +++ b/smatch.h @@ -501,6 +501,7 @@ do { \ void sql_insert_return_states(int return_id, const char *return_ranges, int type, int param, const char *key, const char *value); void sql_insert_function_ptr(const char *fn, const char *struct_name); +void sql_insert_return_values(const char *return_values); void sql_exec(int (*callback)(void*, int, char**, char**), const char *sql); void open_smatch_db(void); diff --git a/smatch_db.c b/smatch_db.c index 23926e99..06ebb5bc 100644 --- a/smatch_db.c +++ b/smatch_db.c @@ -93,6 +93,12 @@ void sql_insert_function_ptr(const char *fn, const char *struct_name) struct_name); } +void sql_insert_return_values(const char *return_values) +{ + sql_insert(return_values, "'%s', '%s', %d, '%s'", get_filename(), + get_function(), fn_static(), return_values); +} + void add_definition_db_callback(void (*callback)(const char *name, struct symbol *sym, char *key, char *value), int type) { struct def_callback *def_callback = __alloc_def_callback(0); diff --git a/smatch_scripts/db/fill_db_return_values.pl b/smatch_scripts/db/fill_db_return_values.pl deleted file mode 100755 index ca07193d..00000000 --- a/smatch_scripts/db/fill_db_return_values.pl +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use DBI; - -my $warns = shift; - -if (!defined($warns)) { - print "usage: $0 \n"; - exit(1); -} - -my $db = DBI->connect("dbi:SQLite:smatch_db.sqlite", "", "", {AutoCommit => 0}); -$db->do("PRAGMA synchronous = OFF"); -$db->do("PRAGMA cache_size = 800000"); -$db->do("PRAGMA journal_mode = OFF"); - -$db->do("delete from return_values;"); - -my $type; -my $param; -my ($file_and_line, $file, $dummy, $func, $return_value, $gs); -my $static; - -open(WARNS, "<$warns"); -while () { - - if ($_ =~ / info: function_return_values /) { - # arch/x86/mm/mmap.c:354 mmap_is_ia32() info: function_return_values '0-1' static - ($file_and_line, $func, $dummy, $dummy, $return_value, $gs) = split(/ /, $_); - } else { - next; - } - - ($file, $dummy) = split(/:/, $file_and_line); - - $func =~ s/\(\)//; - $return_value =~ s/'//g; - - $static = 0; - if ($gs =~ /static/) { - $static = 1; - } - - $db->do("insert into return_values values ('$file', '$func', $static, '$return_value')\n"); -} - -$db->commit(); -$db->disconnect(); -- 2.11.4.GIT