在程序上运行KLEE时,我遇到了一个错误"KLEE: ERROR:未知的内在: llvm.objectsize.i64.p0i8“。
我知道我应该在IntrinsicCleaner传递中添加对它的支持。但是我没有找到这个内在函数的文档。有人知道这个内在功能的目的吗?
下面是涉及该函数的LLCM代码行:
%6 = call i64 @llvm.objectsize.i64.p0i8(i8* %5, i1 false)
发布于 2014-10-29 12:16:33
就在LLVM文档里
declare i64 @llvm.objectsize.i64(i8* <object>, i1 <min>)llvm.objectsize内部特性旨在向优化器提供信息,以便在编译时确定a)操作(如memcpy)是否会溢出与对象对应的缓冲区,或者( b)运行时检查溢出是否必要。此上下文中的对象意味着特定类、结构、数组或其他对象的分配。
发布于 2021-03-10 03:54:46
我将延长马可的回答,以回答丁宝的问题。'p0‘表示指向地址空间0的指针;'i8’表示8位整数.见LLLVM语言引用。
https://stackoverflow.com/questions/26598981
复制相似问题