Discussion:
error: ‘klee_make_symbolic’ was not declared in this scope
李永超
2014-04-03 01:14:25 UTC
Permalink
Hi,
When building a piece of c++ code, llvm-gcc reports following error:
error: ¡®klee_make_symbolic¡¯ was not declared in this scope


The building command is :
llvm-gcc --emit-llvm -c -g src.cpp -o src.bc



and the piece of code is:


#include <iostream>
class base {
public:
int a;
base(int b):a(b){
};
void foo(){
if(a == 1)std::cout<<"yes\n";
else
std::cout<<"no\n";
}
};
int main() {
int a;
klee_make_symbolic(a, sizeof(a), "a");
base obj(a);
return 0;
}



But llvm-gcc works fine to build .c files with klee_make_symbolic called.
Does anybody have any idea about this error?


Thanks,
Yongchao.
Daniel Liew
2014-04-03 01:18:01 UTC
Permalink
This a fundamental difference between C and C++. In C you are allowed
to call a function without a proto-type (although its bad practice
because the compiler will guess function signature and return type).
In C++ you are not allowed to do this. Include the klee.h header file
and you should be fine.
Hi,
error: ‘klee_make_symbolic’ was not declared in this scope
llvm-gcc --emit-llvm -c -g src.cpp -o src.bc
#include <iostream>
class base {
int a;
base(int b):a(b){
};
void foo(){
if(a == 1)std::cout<<"yes\n";
else
std::cout<<"no\n";
}
};
int main() {
int a;
klee_make_symbolic(a, sizeof(a), "a");
base obj(a);
return 0;
}
But llvm-gcc works fine to build .c files with klee_make_symbolic called.
Does anybody have any idea about this error?
Thanks,
Yongchao.
Loading...