2014-03-07 9 views
0

어제 나는 stackoverflow에 대한 질문을했지만 명확하게 설명하지 않았으므로 묻는 방법이 바뀌고 문제가 명확해질 수 있습니다.klee가 Objectfile을 실행할 때 sleep() 함수가 작동하지 않는 이유는 무엇입니까?

/* 
* 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을 수정, 나는 프로그램에서 unistd.h을 포함하고, 스레드 일시 정지를 만들기 위해 기능을 sleep()를 호출 get_sign.c을 실행 한 다음 klee get_sign.o을 사용하여 오브젝트 파일을 실행하십시오. 스레드가 일시 중지하지 않으면 sleep()이 작동하지 않습니다. 나는이 klee --libc=uclibc get_sign.o처럼 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 

을 중단하지 않습니다 문제? 고맙습니다!

답변