2014-03-07 38 views
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 

我能做些什么来解决这个问题?谢谢!

回答

相关问题