db: move buf_size to the new add_definition_db_callback()
[smatch.git] / smatch_scripts / db / fill_db_caller_info.pl
blob5220c7464602fcc91b9e8e693f7c637909b3e27e
1 #!/usr/bin/perl -w
3 use strict;
4 use DBI;
6 my $warns = shift;
8 if (!defined($warns)) {
9 print "usage: $0 <warns.txt>\n";
10 exit(1);
13 my $db = DBI->connect("dbi:SQLite:smatch_db.sqlite", "", "", {RaiseError => 1, AutoCommit => 0});
15 my $prev_fn = "";
16 my $prev_line = "+0";
17 my $prev_param = 0;
18 my $func_id = 0;
19 my $type;
21 $db->do("delete from caller_info");
23 open(WARNS, "<$warns");
24 while (<WARNS>) {
25 if (!($_ =~ /info:/)) {
26 next;
28 if ($_ =~ /__builtin_/) {
29 next;
31 if ($_ =~ /(printk|memset|memcpy|kfree|printf|dev_err|writel)/) {
32 next;
35 s/\n//;
37 my ($file, $line, $dummy, $func, $param, $value);
39 if ($_ =~ /info: passes param_value /) {
40 # init/main.c +165 obsolete_checksetup(7) info: passes param_value strlen 0 min-max
41 $type = 1;
42 ($file, $line, $dummy, $dummy, $dummy, $dummy, $func, $param, $value) = split(/ /, $_);
44 } elsif ($_ =~ /info: passes_buffer /) {
45 # init/main.c +175 obsolete_checksetup(17) info: passes_buffer 'printk' 0 38
46 $type = 2;
47 ($file, $line, $dummy, $dummy, $dummy, $func, $param, $value) = split(/ /, $_);
48 } else {
49 next;
52 if (!defined($value) || !($param =~ /^\d+$/)) {
53 next;
56 $func =~ s/'//g;
58 if ($prev_fn ne $func || $prev_line ne $line || $param < $prev_param) {
59 $func_id++;
62 $db->do("insert into caller_info values ('$file', '$func', $func_id, $type, $param, '$value')");
64 $db->commit();
65 $db->disconnect();