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

Mark R. Tuttle tuttle at acm.org
Wed Sep 17 20:10:45 BST 2014


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.

*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'

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

Traceback (most recent call last):
  File "ROOT/llvm/3.3/src/utils/lit/lit.py", line 4, in <module>
    import lit
  File "ROOT/llvm/3.3/src/utils/lit/lit/__init__.py", line 3, in <module>
    from main import main
ImportError: No module named main


Any advice on how to proceed?

Thanks,
Mark

Mark Tuttle, tuttle at acm.org
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the klee-dev mailing list