gpt4 book ai didi

llvm - KLEE 用于使用 pthreads 的 C++ 代码

转载 作者:行者123 更新时间:2023-12-01 12:48:04 26 4
gpt4 key购买 nike

我是尝试使用 KLEE 的初学者。我在一个 C++ 程序上使用 KLEE 自包含包使用 pthreads。我已经生成了一个 .o 文件并使用了带有以下选项的 KLEE

klee --libc=uclibc --posix-runtime test.o

但我看到我收到警告

KLEE: NOTE: Using model:
/home/pgbovine/klee/Release+Asserts/lib/libkleeRuntimePOSIX.bca

KLEE: output directory = "klee-out-4"
KLEE: WARNING: undefined reference to function: klee_get_valuel
KLEE: WARNING: undefined reference to function: pthread_create
KLEE: WARNING: undefined reference to function: pthread_exit
KLEE: WARNING: undefined reference to function: pthread_join
KLEE: WARNING: executable has module level assembly (ignoring)
KLEE: WARNING: calling external: syscall(54, 0, 21505, 571522624)
KLEE: WARNING: calling __user_main with extra arguments.
KLEE: WARNING: calling external: pthread_create(571589384, 0, 563903904, 571574176)
0 klee 0x08965ab8
[pid 1846] +++ killed by SIGSEGV +++

+++ killed by SIGSEGV +++
Segmentation fault

在 .bc 文件上使用 klee 也得到相同的结果。

我不确定为什么我会得到对 pthread 函数的 undefined reference 。我是不确定是否正确使用了 pthreads 库。是有办法确保这一点吗?使用 llvm-ld 也无济于事。

下面是我使用的llvm-ld命令

 llvm-ld tests.bc -l=/usr/lib/libpthread.a

我不确定为什么会出现段错误。该程序有效当我通常用 g++ 编译程序并运行可执行文件。

谁能告诉我哪里出错了?

最佳答案

问题是 Klee 中没有现有的 pthread 支持。因此,当您调用 pthread_create() 时,Klee 不会响应它(这就是您看到 KLEE: WARNING: calling external: pthread_create 的原因)。在这种情况下,Klee 将因此失败而崩溃。

关于llvm - KLEE 用于使用 pthreads 的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com