[klee-dev] KLEE failed to build cleanly with LLVM 3.3
Daniel Liew
daniel.liew at imperial.ac.uk
Wed Sep 17 20:39:13 BST 2014
On 17 September 2014 20:10, Mark R. Tuttle <tuttle at acm.org> wrote:
> I just did a "git pull" to grab the latest commit (2497fdc) and ran into
> trouble building against LLVM 3.3 and running the regression tests.
>
> Build failed in file src/tools/klee/main.cpp in function
> KleeHandler::openOutputFile
>
> #if LLVM_VERSION_CODE >= LLVM_VERSION(3,5)
> f = new llvm::raw_fd_ostream(path.c_str(), Error, llvm::sys::fs::F_None);
> #elif LLVM_VERSION_CODE >= LLVM_VERSION(3,0)
> f = new llvm::raw_fd_ostream(path.c_str(), Error,
> llvm::sys::fs::F_Binary);
> #else
> f = new llvm::raw_fd_ostream(path.c_str(), Error,
> llvm::raw_fd_ostream::F_Binary);
> #endif
>
> because llvm::sys::fs::F_Binary was not defined. LLVM 3.3 source code seems
> to define llvm::raw_fd_ostream::F_Binary and not llvm::sys::fs:F_Binary. I
> changed the reference to LLVM version 3.0 to 3.4 and the build succeeded.
We are currently targeting LLVM2.9 and LLVM3.4 [1] and are not testing
LLVM3.3 build support. Do you need to use LLVM3.3 for any particular
reason?
We'd happily accept a patch to fix your compilation error provided it
doesn't break the configurations we're testing right now.
> Regression tests failed with
>
> Failing Tests (20):
> KLEE :: Concrete/BitwiseOps.ll
> KLEE :: Concrete/BoolReadWrite.ll
> KLEE :: Concrete/Casts.ll
> KLEE :: Concrete/CmpEq.ll
> KLEE :: Concrete/ConstantExpr.ll
> KLEE :: Concrete/FloatingPointOps.ll
> KLEE :: Concrete/GlobalInitializers.ll
> KLEE :: Concrete/GlobalUndef.ll
> KLEE :: Concrete/GlobalVariable.ll
> KLEE :: Concrete/ICmp.ll
> KLEE :: Concrete/OneCall.ll
> KLEE :: Concrete/OverlappingPhiNodes.ll
> KLEE :: Concrete/Select.ll
> KLEE :: Concrete/Shifts.ll
> KLEE :: Concrete/SimpleStoreAndLoad.ll
> KLEE :: Concrete/UnconditionalBranch.ll
> KLEE :: Concrete/UnconditionalBranchWithSimplePhi.ll
> KLEE :: Concrete/UnorderedPhiNodes.ll
> KLEE :: Concrete/ackermann.c
> KLEE :: Concrete/arith_test.ll
>
> Expected Passes : 131
> Expected Failures : 2
> Unsupported Tests : 1
> Unexpected Failures: 20
>
> Each regression failure generates output of the form
>
> Command 0 Stderr:
> Traceback (most recent call last):
> File "ROOT/klee/src/test/Concrete/ConcreteTest.py", line 72, in <module>
> main()
> File "ROOT/klee/src/test/Concrete/ConcreteTest.py", line 69, in main
> testFile(test_name, opts.klee_path, opts.lli_path)
> File "ROOT/klee/src/test/Concrete/ConcreteTest.py", line 26, in testFile
> lliOut = subprocess.check_output(lli_cmd).decode()
> AttributeError: 'module' object has no attribute 'check_output'
What version of python2 are you using? I have 2.7.8 and it works fine.
> I'm using Python2 and ConcreteTest.py line 26 refers to Python3. Using
> Python3 fails with an error pointing to the LLVM 3.3 source tree
It's likely that the version of llvm-lit in the LLVM3.3 source tree
doesn't support Python3
As a temporary work around you could change
#!/usr/bin/python
to the path to your Python3 installation in ConcreteTest.py
[1] https://travis-ci.org/klee/klee
Thanks,
Dan.
More information about the klee-dev
mailing list