[klee-dev] KLEE failed to build cleanly with LLVM 3.3

Mark R. Tuttle tuttle at acm.org
Wed Sep 17 22:13:33 BST 2014


I've been scared away from LLVM 3.4 by KLEE's dire "experimental support
only" warnings for 3.4.  May I shift to 3.4 now?

I'm using python 2.7.5.  I'll debug more deeply, I'll now bet you dinner
the problem is my site's installation of python.

What is the reference to https://travis-ci.org/klee/klee? I've been using
https://github.com/klee/klee.git

Thanks for the quick response.
Mark


On Wed, Sep 17, 2014 at 3:39 PM, Daniel Liew <daniel.liew at imperial.ac.uk>
wrote:

> 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.
>
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the klee-dev mailing list