about summary refs log tree commit diff homepage
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);
+}