aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/Feature/AliasFunctionExit.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Feature/AliasFunctionExit.c')
-rw-r--r--test/Feature/AliasFunctionExit.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Feature/AliasFunctionExit.c b/test/Feature/AliasFunctionExit.c
new file mode 100644
index 00000000..fcaf7e6c
--- /dev/null
+++ b/test/Feature/AliasFunctionExit.c
@@ -0,0 +1,30 @@
+// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc
+// RUN: %klee %t1.bc > %t1.log
+// RUN: grep -c START %t1.log | grep 1
+// RUN: grep -c END %t1.log | grep 2
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+void start(int x) {
+ printf("START\n");
+ if (x == 53)
+ exit(1);
+}
+
+void end(int status) {
+ klee_alias_function("exit", "exit");
+ printf("END: status = %d\n", status);
+ exit(status);
+}
+
+
+int main() {
+ int x;
+ klee_make_symbolic_name(&x, sizeof(x), "x");
+
+ klee_alias_function("exit", "end");
+ start(x);
+ end(0);
+}