Hi,

I guess I'm confused here. First, the problem is because LLVM
intrinsics are being generated into my bit-code? In that case, where
are the intrinsics being generated? Is it being generated by klee-gcc,
or llvm-gcc, or llvm-ld?

I have tried doing "llvm-ld -disable-opt", and adding CFLAGS="-O0" to
my compilation, but I am still seeing the "call i[8|16|32|64] asm"
instructions in my (disassembled) bit-code. llvm-gcc doesn't have any
options for disabling optimization. If the bit-code already contains
the intrinsics, will doing "klee -optimize=false" help?

Sorry I'm a bit confused here.

Thanks,
Jiaqi

On Wed, Feb 22, 2012 at 2:08 PM, Jiaqi Tan <[email protected]> wrote:
> Hi,
>
> It's still not working for me. Could this be because I'm using a
> version of LLVM that's too new? I've tried LLVM 2.8 and 3.0 and both
> aren't working. Sorry if this has been asked before, but what's the
> recommended version of LLVM to use with klee from trunk?
>
> Thanks,
> Jiaqi
>
> On Wed, Feb 22, 2012 at 1:55 PM, Paul Marinescu
> <[email protected]> wrote:
>> These intrinsics were added to LLVM after KLEE was released. Furthermore, 
>> you can avoid them by disabling the instruction combine pass (or 
>> --optimize=false altogether).
>>
>> Paul
>>
>>
>> On 22 Feb 2012, at 05:35, Jiaqi Tan wrote:
>>
>>> 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

Reply via email to