summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile10
-rw-r--r--test/test5-01.txt190
-rw-r--r--test/test5-02.txt2
-rw-r--r--test/test5-03.txt4
-rw-r--r--test/test5.c12
5 files changed, 215 insertions, 3 deletions
diff --git a/test/Makefile b/test/Makefile
index a0aa921..65bdd9f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,13 +1,13 @@
-.PHONY: test1 test2 test3 test4 crashtest1 crashtest2 all crashes clean
+.PHONY: test1 test2 test3 test4 test5 crashtest1 crashtest2 all crashes clean
.NOTPARALLEL: all allcrash
CC := gcc-5
CXX := g++-5
PLUGIN = ../build/src/.libs/astdumper.so
-CMD = ${CXX} -c -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o a.out 2>${3}
+CMD = LANG=C ${CXX} -c -fplugin=${PLUGIN} -fplugin-arg-astdumper-command=${1} ${2} -o a.out 2>${3}
-all: test1 test2 test3 test4 clean
+all: test1 test2 test3 test4 test5 clean
crashes: crashtest1 crashtest2 clean
clean:
@@ -27,6 +27,10 @@ test3:
test4:
$(call CMD,dump,test4.c,test4-01.txt)
$(call CMD,findargs,test4.c,test4-02.txt)
+test5:
+ $(call CMD,dump,test5.c,test5-01.txt)
+ $(call CMD,findargs,test5.c,test5-02.txt)
+ $(call CMD,detectnullpointers,test5.c,test5-03.txt)
crashtest1:
$(call CMD,dump,crashtest1.h,crashtest1-01.txt)
diff --git a/test/test5-01.txt b/test/test5-01.txt
new file mode 100644
index 0000000..ebeb2ab
--- /dev/null
+++ b/test/test5-01.txt
@@ -0,0 +1,190 @@
+function_decl func1 test5.c 4:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ tree_list - arg types
+ integer_type - value
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ tree_list - chain
+ pointer_type - value
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ tree_list - chain
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ result_decl test5.c 4:33 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ parm_decl a test5.c 4:16 - argument
+ integer_type - decl type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 32 - parm size
+ - isUsed: 1
+ parm_decl b test5.c 4:24 - argument
+ pointer_type - decl type
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 64 - parm size
+ parm_decl c test5.c 4:32 - argument
+ integer_type - decl type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 8 - parm size
+ cleanup_point_expr test5.c 6:13 - code
+ expr_stmt - operand
+ convert_expr - expresssion
+ modify_expr - operand
+ indirect_ref - operand
+ - isUsed: 1
+ parm_decl b test5.c 4:24 - operand
+ pointer_type - decl type
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 64 - parm size
+ integer_cst 100 - operand
+function_decl func2 test5.c 9:6
+- isPublic: 1
+ function_type - function type
+ void_type - function return type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ tree_list - arg types
+ integer_type - value
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ tree_list - chain
+ pointer_type - value
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ tree_list - chain
+ integer_type - value
+ - precisionBits: 8
+ - isChar: 1
+ - signed
+ type_decl char <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 8 - type size
+ integer_cst -128 - min value
+ integer_cst 127 - max value
+ tree_list - chain
+ void_type - value
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ result_decl test5.c 9:33 - function result
+ - isAutogenerated: 1
+ void_type - result type
+ type_decl void <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ parm_decl a test5.c 9:16 - argument
+ integer_type - decl type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 32 - parm size
+ - isUsed: 1
+ parm_decl b test5.c 9:24 - argument
+ pointer_type - decl type
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 64 - parm size
+ parm_decl c test5.c 9:32 - argument
+ integer_type - decl type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 8 - parm size
+ cleanup_point_expr test5.c 11:19 - code
+ expr_stmt - operand
+ convert_expr - expresssion
+ modify_expr - operand
+ indirect_ref - operand
+ pointer_plus_expr test5.c 11:9 - operand
+ - isUsed: 1
+ parm_decl b test5.c 9:24 - operand
+ pointer_type - decl type
+ integer_type - nested type
+ - precisionBits: 32
+ - signed
+ type_decl int <built-in> 0:0 - type name
+ - isAutogenerated: 1
+ integer_cst 32 - type size
+ integer_cst -2147483648 - min value
+ integer_cst 2147483647 - max value
+ integer_cst 64 - parm size
+ integer_cst 4 - operand
+ integer_cst 200 - operand
diff --git a/test/test5-02.txt b/test/test5-02.txt
new file mode 100644
index 0000000..e9557cf
--- /dev/null
+++ b/test/test5-02.txt
@@ -0,0 +1,2 @@
+func1: pointer_type b,
+func2: pointer_type b,
diff --git a/test/test5-03.txt b/test/test5-03.txt
new file mode 100644
index 0000000..506dead
--- /dev/null
+++ b/test/test5-03.txt
@@ -0,0 +1,4 @@
+test5.c: In function 'void func1(int, int*, char)':
+test5.c:6:13: warning: Using variable without check for NULL
+ *b = 100;
+ ^
diff --git a/test/test5.c b/test/test5.c
new file mode 100644
index 0000000..0312c52
--- /dev/null
+++ b/test/test5.c
@@ -0,0 +1,12 @@
+void func1(int a, int *b, char c);
+void func2(int a, int *b, char c);
+
+void func1(int a, int *b, char c)
+{
+ *b = 100;
+}
+
+void func2(int a, int *b, char c)
+{
+ *(1 + b) = 200;
+}