0
昨天我問了一個關於stackoverflow的問題,但我沒有清楚地描述它,所以我改變了問題的方式,或許可以讓問題清楚。 首先,我修改的例子get_sign.c其中克利提供,包括我在節目中unistd.h
,並調用該函數sleep()
,以使線程暫停,具體如下爲什麼函數sleep()在klee執行Objectfile時無法工作?
/*
* First KLEE tutorial: testing a small function
*/
#include <unistd.h>
int get_sign(int x) {
if (x == 0)
return 0;
if (x < 0)
return -1;
else
return 1;
}
int main() {
int a;
klee_make_symbolic(&a, sizeof(a), "a");
sleep(10);
return get_sign(a);
}
我使用了「llvm-gcc
」編譯get_sign.c,然後使用klee get_sign.o
來執行objectfile,線程不會暫停,意味着sleep()
不起作用。 所以我添加了一個說法,當我執行get_sign.o,這樣klee --libc=uclibc get_sign.o
,不幸的是,該線程仍然沒有停止,而且,克利報告一個錯誤,
KLEE: ERROR: /home/lab/work/klee-uclibc/libc/signal/sigaction.c:58: failed external call: __syscall_rt_sigaction
KLEE: NOTE: now ignoring this error at this location
我能做些什麼來解決這個問題?謝謝!