Hi, I poked around a bit more. In general, does KLEE not support all LLVM intrinsics? Or does KLEE only not support certain intrinsics?
I would believe that KLEE in general is able to support unsigned addition? I have encountered errors for unsupported llvm.uadd.with.overflow.i64 and .i32, so I'm puzzled about why that is the case. Thanks, Jiaqi On Wed, Feb 22, 2012 at 6:03 AM, Jiaqi Tan <[email protected]> wrote: > Hi, > > Thanks for the pointer. > > As for this error message: > WARNING: this target does not support the llvm.stacksave intrinsic. > LLVM ERROR: Code generator does not support intrinsic function > 'llvm.uadd.with.overflow.i64'! > > Is this also caused by unsupported inline asm? Apart from the __asm__ > calls, are there any other C constructs that might generate inlined > asm? > > Thanks, > Jiaqi > > On Wed, Feb 22, 2012 at 1:02 AM, Paul Marinescu > <[email protected]> wrote: >> The error can be caused by an inline asm instruction in your program (e.g. >> call i32 asm ...). KLEE does not support them. >> >> Paul >> >> >> On 21/02/12 09:46, Jiaqi Tan wrote: >>> >>> Hi, >>> >>> I did some poking around the KLEE source, and found that this error is >>> being generated due to the assertion here (code segment included): >>> >>> ===== begin code ===== >>> const Cell& Executor::eval(KInstruction *ki, unsigned index, >>> ExecutionState&state) const { >>> >>> assert(index< ki->inst->getNumOperands()); >>> int vnumber = ki->operands[index]; >>> >>> if (vnumber == -1) { >>> std::cout<< "Assert about to fail: #operands:"<< >>> ki->inst->getNumOperands()<< " index:"<< index<< " vnumber:"<< >>> vnumber<< std::endl; >>> } >>> >>> assert(vnumber != -1&& >>> "Invalid operand to eval(), not a value or constant!"); >>> ===== end code ===== >>> >>> I suppose -1 is used as a special flag value here? Because later on, >>> (- vnumber - 2) is used to grab a constant 3 lines down in the code. >>> What does the operands array in KInstruction store, and where is it >>> populated? >>> >>> Thanks! >>> Jiaqi >>> >>> On Mon, Feb 20, 2012 at 1:52 PM, Jiaqi Tan<[email protected]> wrote: >>>> >>>> Hi, >>>> >>>> I'm trying to run BusyBox, and I'm getting this error message: >>>> >>>> KLEE: WARNING: executable has module level assembly (ignoring) >>>> KLEE: WARNING: calling external: syscall(54, 0, 21505, 231590832) >>>> KLEE: WARNING: calling __user_main with extra arguments. >>>> KLEE: WARNING: calling external: __xstat64(3, 231196304, 231603064) >>>> klee: Executor.cpp:1001: const klee::Cell& >>>> klee::Executor::eval(klee::KInstruction*, unsigned int, >>>> klee::ExecutionState&) const: Assertion `vnumber != -1&& "Invalid >>>> >>>> operand to eval(), not a value or constant!"' failed. >>>> 0 klee 0x089a79f8 >>>> Aborted >>>> >>>> Does anybody have any idea where the source of the problem might be? >>>> I'm not quite sure where to get started to figure out where the >>>> problem is. Is this due to a compilation or linking problem due to >>>> missing code or libraries? >>>> >>>> Thanks! >>>> Jiaqi Tan >>> >>> _______________________________________________ >>> klee-dev mailing list >>> [email protected] >>> http://keeda.Stanford.EDU/mailman/listinfo/klee-dev >> >> _______________________________________________ klee-dev mailing list [email protected] http://keeda.Stanford.EDU/mailman/listinfo/klee-dev
