From e3414c0e8cc91a35cdcae09c0af8162b8f7c2f94 Mon Sep 17 00:00:00 2001 From: Cristian Cadar Date: Mon, 28 Jun 2010 15:07:59 +0000 Subject: Applied Stefan Bucur's patch from http://llvm.org/bugs/show_bug.cgi?id=6690. The patch adds specialized versions of klee_get_value for different types, fixing the previous klee_get_value function that sometimes truncated 64bit parameters to 32bit. git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@107006 91177308-0d34-0410-b5e6-96231b3b80d8 --- runtime/Runtest/intrinsics.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'runtime/Runtest') diff --git a/runtime/Runtest/intrinsics.c b/runtime/Runtest/intrinsics.c index 7ec21901..2302e278 100644 --- a/runtime/Runtest/intrinsics.c +++ b/runtime/Runtest/intrinsics.c @@ -31,7 +31,7 @@ static unsigned char rand_byte(void) { return x & 0xFF; } -void klee_make_symbolic(void *array, unsigned nbytes, const char *name) { +void klee_make_symbolic(void *array, size_t nbytes, const char *name) { static int rand_init = -1; if (rand_init == -1) { @@ -52,7 +52,7 @@ void klee_make_symbolic(void *array, unsigned nbytes, const char *name) { *v = rand() % 69; } else { char *c = array; - unsigned i; + size_t i; for (i=0; i= n) - fprintf(stderr, "ERROR: max = %d, got = %d\n", n, x); + fprintf(stderr, "ERROR: max = %ld, got = %ld\n", n, x); assert(x < n); return x; } -void klee_assume(unsigned x) { +void klee_assume(uintptr_t x) { if (!x) { fprintf(stderr, "ERROR: invalid klee_assume\n"); } } -unsigned klee_get_value(unsigned x) { - return x; -} +#define KLEE_GET_VALUE_STUB(suffix, type) \ + type klee_get_value##suffix(type x) { \ + return x; \ + } + +KLEE_GET_VALUE_STUB(f, float) +KLEE_GET_VALUE_STUB(d, double) +KLEE_GET_VALUE_STUB(l, long) +KLEE_GET_VALUE_STUB(ll, long long) +KLEE_GET_VALUE_STUB(_i32, int32_t) +KLEE_GET_VALUE_STUB(_i64, int64_t) + +#undef KLEE_GET_VALUE_STUB int klee_range(int begin, int end, const char* name) { int x; -- cgit 1.4.1