1

我已经编译WiresharkLLVM然后我继续链接一些我也编译成的库LLVM

我链接的库是libwsutil,libzlibpcap. 然而 KLEE 仍然给我一个未定义函数的警告libpcap

我使用这些标志编译了 libpcap:

CC="llvm-gcc" CFLAGS="-flto -c" AR="llvm-ar" LD="llvm-ld"

这些标志也适用于其他库。

可能是什么原因?

KLEE: WARNING ONCE: function "capture_loop_dispatch" has inline asm
KLEE: WARNING ONCE: function "__user_main" has inline asm
KLEE: WARNING: undefined reference to function: __ctype_b_loc
KLEE: WARNING: undefined reference to function: __xstat64
KLEE: WARNING: undefined reference to function: bpf_image
KLEE: WARNING: undefined reference to function: cap_free
KLEE: WARNING: undefined reference to function: cap_init
KLEE: WARNING: undefined reference to function: cap_set_flag
KLEE: WARNING: undefined reference to function: cap_set_proc
...
...
KLEE: WARNING: undefined reference to function: lseek64
KLEE: WARNING: undefined reference to function: pcap_activate
KLEE: WARNING: undefined reference to function: pcap_breakloop
KLEE: WARNING: undefined reference to function: pcap_can_set_rfmon
KLEE: WARNING: undefined reference to function: pcap_close
KLEE: WARNING: undefined reference to function: pcap_compile
KLEE: WARNING: undefined reference to function: pcap_create
KLEE: WARNING: undefined reference to function: pcap_datalink
KLEE: WARNING: undefined reference to function: pcap_datalink_name_to_val
KLEE: WARNING: undefined reference to function: pcap_datalink_val_to_description
KLEE: WARNING: undefined reference to function: pcap_datalink_val_to_name
KLEE: WARNING: undefined reference to function: pcap_dispatch
KLEE: WARNING: undefined reference to function: pcap_findalldevs
KLEE: WARNING: undefined reference to function: pcap_free_datalinks
KLEE: WARNING: undefined reference to function: pcap_freealldevs
KLEE: WARNING: undefined reference to function: pcap_freecode
KLEE: WARNING: undefined reference to function: pcap_get_selectable_fd
KLEE: WARNING: undefined reference to function: pcap_geterr
KLEE: WARNING: undefined reference to function: pcap_lib_version
KLEE: WARNING: undefined reference to function: pcap_list_datalinks
KLEE: WARNING: undefined reference to function: pcap_lookupnet
KLEE: WARNING: undefined reference to function: pcap_open_live
KLEE: WARNING: undefined reference to function: pcap_set_buffer_size
KLEE: WARNING: undefined reference to function: pcap_set_datalink
KLEE: WARNING: undefined reference to function: pcap_set_promisc
KLEE: WARNING: undefined reference to function: pcap_set_rfmon
KLEE: WARNING: undefined reference to function: pcap_set_snaplen
KLEE: WARNING: undefined reference to function: pcap_set_timeout
KLEE: WARNING: undefined reference to function: pcap_setfilter
KLEE: WARNING: undefined reference to function: pcap_snapshot
KLEE: WARNING: undefined reference to function: pcap_stats
KLEE: WARNING: undefined reference to function: pcap_statustostr
KLEE: WARNING: undefined reference to function: prctl
4

1 回答 1

3

在入门中阅读 KLEE 的“入门”

默认情况下,KLEE 适用于封闭程序(不使用任何外部代码的程序,例如 C 库函数)。但是,如果您想使用 KLEE 运行实际程序,您将需要启用 KLEE POSIX 运行时,它建立在 uClibc C 库之上。

所以 KLEE 默认不能使用 C 库函数,如果你使用 KLEE 选项libc=uclibc,KLEE 会将外部函数链接到你的 IR 代码中,并执行 IR 代码

于 2015-10-22T09:02:56.550 回答