-
Notifications
You must be signed in to change notification settings - Fork 145
Description
Firstly, I haved follow the guide to recompile instructmented libc++ for symbolic execution.
Secondly, Here is my demo program for testing c++ feature.
compiling command: sym++ vec.cpp -o vec.
I use ldd command to see the dependend so.
The exes link to the gun's libstdc++, not the instructmented libc++ i compiled.
Can somebody help me to solve this problem? very thank you.
~/workspace/symcc_demo/vector_case$ ldd vec
linux-vdso.so.1 (0x00007ffe32de8000)
libachk.so => /lib/libachk.so (0x00007f23e11f9000)
libSymRuntime.so => /home/q00502037/software/symcc/build/SymRuntime-prefix/src/SymRuntime-build/libSymRuntime.so (0x00007f23e0d23000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f23e099a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f23e05fc000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f23e03e4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f23dfff3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f23dfdef000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f23dfbd0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f23df9c8000)
libz3.so.4.12 => /usr/local/lib/libz3.so.4.12 (0x00007f23ddfa8000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f23ddd7e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f23e13ff000)
------------Deomo---------------
#include
#include
#include
#include
using namespace std;
class People
{
public:
People(string name, int age, vector entry) : name(name), age(age), entry(entry) {}
public:
string name;
int age;
vector entry;
};
bool FunA(People *p)
{
if (p->entry[0] == 1234) {
return true;
} else if (p->entry[1] == 1234) {
return true;
} else {
return false;
}
}
int main(int argc, char **argv)
{
// char *file = argv[1];
// string file = "./seed";
// ifstream ifile(cin, ios::in);
string temp;
vector res;
while(getline(cin, temp)) {
res.push_back(temp);
}
string name = res[0];
int age = stoi(res[1]);
vector entry;
for (int i = 2; i < res.size(); ++i) {
entry.push_back(stoi(res[i]));
}
People p(name, age, entry);
cout << p.name << " " << p.age << endl;
for (auto &i : p.entry) {
cout << i << endl;
}
FunA(&p);
// for (string &it : res) {
// cout << it << endl;
// }
return 0;
}