[klee-dev] Testing coreutils: Invalid record

felicia felicia at comp.nus.edu.sg
Wed Jan 6 01:42:48 GMT 2016


Hi Dan,

Thank you for the earlier reply. I think the LLVM should be match 
because I just use one version of LLVM, which is LLVM-3.4. (I also use 
coreutils version 6.11)

I redo the process again, and somehow got different result.

So, when I execute this:
  ~/git/original/klee/Release+Asserts/bin/klee --libc=uclibc 
--posix-runtime ./echo.bc --sym-arg 3

The error shows like this:
KLEE: ERROR: Link with library 
/home/felicia/git/original/klee/Release+Asserts/lib/klee-uclibc.bca 
failed: Invalid bitcode signatureLoading module failed : Invalid bitcode 
signature

If I removed the --libc=uclibc, the result would be:
..
..
LEE: WARNING: undefined reference to function: error (UNSAFE)!
KLEE: WARNING ONCE: calling external: syscall(4, 36044240, 36139248)
KLEE: WARNING ONCE: calling external: getenv(35986432)
KLEE: WARNING ONCE: calling external: setlocale(6, 35987552)
KLEE: ERROR: 
/home/felicia/coreutils-6.11/obj-llvm/src/../../src/echo.c:138: external 
modified read-only object
KLEE: NOTE: now ignoring this error at this location

KLEE: done: total instructions = 706
KLEE: done: completed paths = 1
KLEE: done: generated tests = 1

Do you have any recommendation regarding uclibc.bca error? Thank you 
very much.



On 2015-12-29 13:29, Dan Liew wrote:
> On 28 December 2015 at 05:35, felicia <felicia at comp.nus.edu.sg> wrote:
>> I followed the instruction on
>> https://klee.github.io/tutorials/testing-coreutils/
>> I would like to run coreutils by using KLEE latest version and LLVM 
>> 3.4
>> Since, I use clang instead of llvm-gcc. In the step 2, I use clang to 
>> build
>> coreutils with these commands below:
>> 
>> ../configure --disable-nls CFLAGS="-g"
>> export LLVM_COMPILER=clang
>> make CC=/home/felicia/whole-program-llvm-master/wllvm
>> make -C src arch hostname 
>> CC=/home/felicia/whole-program-llvm-master/wllvm
>> 
>> However when I proceed to step 3: Using KLEE as Interpreter by 
>> execute:
>> 
>> ~/full-path-to KLEE/Release+Asserts/bin/klee --libc=uclibc 
>> --posix-runtime
>> ./cat.bc --version,
>> 
>> the output is KLEE: ERROR: error loading program './cat.bc': Invalid 
>> record
>> 
>> Am I missing something? Thank you very much.
> 
> That error likely means something is wrong with the LLVM bitcode you
> are feeding to KLEE. One possible cause is that the version of LLVM
> that your clang was compiled against does not match the version that
> you built KLEE with. The LLVM bitcode format changes over time so to
> have things work correctly you should use the version of Clang the the
> KLEE build system uses to compile its own runtime library.
> 
> HTH,
> Dan.




More information about the klee-dev mailing list