Giter VIP home page Giter VIP logo

klee.github.io's Introduction

KLEE Official Website

The KLEE website, built using Web Starter Kit and Jekyll.

Quickstart

Dependencies

  • Ruby ≥ 2.0.0. You can use RVM or rbenv to install it. (A Ruby DevKit is required to build dependencies with native extensions.)

  • Node.js

  • Bundler. You can use gem install bundle to install it.

  • Python

Installation

Clone this repository and install all dependencies using:

$ bundle

Then, you can preview the site by running (at localhost:4000 by default):

$ bundle exec jekyll serve -w

To build the site, you can use:

$ bundle exec jekyll build

Contributing

Contributions, both to content and design are welcome and encouraged. To contribute, please submit a pull request.

Contributing to the Publication List

Please open a pull request for missing publications that build upon or use KLEE. All list entries are ordered by publication date and follow the layout below:

1. [KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs](http://www.doc.ic.ac.uk/~cristic/papers/klee-osdi-08.pdf)⎵⎵
⎵⎵Cristian Cadar, Daniel Dunbar, Dawson Engler⎵⎵
⎵⎵USENIX Symposium on Operating Systems Design and Implementation (OSDI 2008)⎵⎵
⎵⎵December 8-10, 2008, San Diego, CA, USA⎵⎵
⎵⎵**Klee is available [here](https://klee.github.io/).**

Note that the template language requires that two spaces (shown as ) are added to every but the last line to insert line-breaks.

Adding Release Documentation

The repository has old versions of the documentation in releases/docs/. To generate documentation for a new release, do the following:

  1. Open _config.yml and
  • Change is_release to true
  • Add the doxygen and releases folders to exclude
  • Set current_version to the new KLEE version
  1. Run the following command, where <VERSION> is the KLEE version (e.g., "v2.3"):
$ jekyll build -d releases/docs/<VERSION> --baseurl /releases/docs/<VERSION>
  1. Clear the changes made to _config.yml, except for the current_version
  2. Add releases/docs/<VERSION> to the repository
  3. Add an entry for the release in releases/index.md
  4. Commit the changes

License

Creative Commons Attribution 3.0 Unported (CC BY 3.0)

klee.github.io's People

Contributors

251 avatar adrianherrera avatar andreamattavelli avatar arrowd avatar ccadar avatar davidtr1037 avatar delcypher avatar dependabot[bot] avatar domainexpert avatar jbuening avatar joostvanpinxten avatar kren1 avatar lysxia avatar lzaoral avatar manouchehri avatar martinnowack avatar mchalupa avatar mcsinyx avatar mechtaev avatar novicelive avatar numinit avatar omeranson avatar pengwinsurf avatar petrhosek avatar ret2libc avatar sreeshmaheshwar avatar szeyiuchau avatar teemperor avatar xybu avatar zhyfeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

klee.github.io's Issues

Dead link to Google's libgtest

I built KLEE this morning from scratch and when following the process found that one of the links is dead.

http://klee.github.io/build-llvm34/ — "Build instructions with LLVM 3.4".

05 (Optional) Build libgtest:

$ curl -OL https://googletest.googlecode.com/files/gtest-1.7.0.zip

This URL no longer works.
I believe the correct URL (and please note the new file name) is https://github.com/google/googletest/archive/release-1.7.0.zip

Different versions / releases including the latest 1.8.0 (with which I did not attempt to build KLEE) can be found here: https://github.com/google/googletest/releases

All the rest of the process worked perfectly.

Thanks!

Slugs broken?

I was taking a look what the slug page attribute was doing. It looks kind of broken.

The file _includes/nav/main.html gives hints at what the intention was, e.g.

<nav class="navdrawer-container promote-layer" role="navigation">
  <h4>Navigation</h3>
  <ul>
    <li{% if page.slug == "getting-started" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/getting-started">Getting Started</a>
    </li>
    <li{% if page.slug == "documentation" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/docs">Documentation</a>
    </li>
    <li{% if page.slug == "tutorials" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/tutorials">Tutorials</a>
    </li>
    <li{% if page.slug == "publications" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/publications">Publications</a>
    </li>
    <li{% if page.slug == "projects" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/projects">Projects</a>
    </li>
    <li{% if page.slug == "getting-involved" %} class="active"{% endif %}>
      <a href="{{ site.baseurl }}/getting-involved">Getting Involved</a>
    </li>
  </ul>
</nav>

There seem to be two problems with this

  • We have incorrect named slugs for several pages (e.g. docs/coreutils-experiments.md)
  • The active class isn't used properly in the CSS. The file css/main.scss has
.navdrawer-container ul li a:active {
  background-color: rgba(255, 255, 255, 0.4);
}

but to work (at least for chromium 46.0.2490.80) the CSS needs to be

.navdrawer-container ul li a.active {
  background-color: rgba(255, 255, 255, 0.4);
}

@ccadar @petrhosek Thoughts?

Outdated branches?

@delcypher , you created branches fix_build_ruby2.3.1 and klee_cmake_instructions, which look outdated to me. Are they still needed? If not, let's delete them.

Developer's Guide page is inaccurate.

In the "Miscellaneous" section, "Writing messages to standard error" subsection, the guide suggests to look at lib/Core/Common.h file, which does not exist in the codebase. Also, in the same section, in "Adding a command line option to a tool" subsection, the guide suggests to look at lib/core/Executor.cpp, which should probably be lib/Core/Executor.cpp

Error while loading shared libraries: libstp.so.2.1

When I attempt to test a build on Ubuntu 14.04, I get the error

"/Release+Asserts/bin/klee: error while loading shared libraries: libstp.so.2.1: cannot open shared object file: No such file or directory"

This occurs even after running "sudo make install".

By adding "export LD_LIBRARY_PATH=.../stp-2.1.0/build/lib", however, I can run "make check" without any problems. Am I doing something wrong, or should this be a part of the build?

In addition, the current build instructions use "--with-stp=.../stp/install". When using the newer version of stp, however, now this option isn't even necessary as long as "sudo make install" is run inside stp/build and the LD_LIBRARY_PATH is set.

Documentation for `-sym-stdout`

There is detailed documentation for -sym-files and -sym-stdin. However, for -sym-stdout, it only says that it will make stdout symbolic. However, it's unclear to me of what the implication of making stdout symbolic is.

Thanks

Website doesn't easily answer: "What can KLEE do for me?"

Problem: It is difficult for readers who don't know what a "dynamic symbolic execution engine" is to figure out what KLEE can do, what it is useful for, and whether or not they would benefit from using it.

Explanation The current header on http://klee.github.io/ reads:

KLEE is a dynamic symbolic execution engine built on top of the LLVM compiler infrastructure, and available under the UIUC open source license. For more information on what KLEE is and what it can do, see the OSDI 2008 paper.

At this point a reader (probably) knows KLEE is a programmer's tool. If they doen't know what a "Dynamic Symbolic Execution Engine" they have been encouraged to read a block of unstyled text which has a few helpful snippets buried in it:

We present a new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs.

We also used KLEE as a bug finding tool, applying it to 452 applications (over 430K total lines of code), where it found 56 serious bugs

This tells the reader that KLEE is a programmer's tool that generates tests to find bugs in code. From here, they can click through to a 16-page academic paper, which explains how KLEE works and describes a few case studies where it was used to find bugs in C code. This document is obviously not written for non-academic programmers, and does not readily answer "What can KLEE do for me?"

Going back to http://klee.github.io/, there are several other prevalent and possibly-helpful-sounding links:

  • Getting Started and Documentation describe how to install, run, and use KLEE, but assume the reader already know they want to do these things.
  • Tutorials, the first of which says that KLEE will "exercise all paths through the code" in a simple C program, and that the program runs "as expected". Most of the tutorials are hosted on other websites and written by other people.
  • Projects, a list of ongoing improvements to KLEE. This page does helpfully list some things KLEE doesn't currently work with.
  • Getting Involved is for people who want to become KLEE developers, not KLEE users.
  • Run small examples in your browser. All three examples are in C. The first example finds no bugs. The second example prints (at the bottom of 6578 warnings!) two memory error on line XXs with no further explanation about what kind of errors these are.

Proposed Solution Compose a description of what KLEE does and is useful for, and either include it on http://klee.github.io/, or on a page which is prominently linked there.

incorrect markdown in developer's guide

When looking at the Developer's Guide I came across an issue that seems to stem from some incorrect markdown:

Screen Shot 2019-11-24 at 15 33 57

As visible in the attachment:

  • there's a stray </tt> in the text
  • the final word is not rendered as a link because the bracketing is back to front

Please let me know if it's unclear what I'm referring to here.

Revise tutorial 1 and 2 documentation

Hi KLEE,

I was struggling a little with the introductory documentation (tutorials 1 and 2) because I was expecting clang to generate an .o object file. The tutorial asks to run clang and then to run klee.o

@andreamattavelli helped me to realize that the .bc files (a format with which I was confused) were really the ones to run klee on.

The tutorial mentions clang and then suggests:
klee get_sign.o

This might leave someone confused and looking for an object file.

Thanks!

Klee build instructions for x64 should include installation of tcmalloc

Following the current build instructions on 64 bit linux results in a klee that terminates all states when memory use exceeds 2G. Since the default memory threshold is 2000 MB, that leaves a very narrow 48K window to avoid the error. The solution (as documented elsewhere here) is to use tcmalloc. Mentioning that in the build instructions would have saved me several days of troubleshooting :)

Restructure documentation/tutorials

I looked at the "intro box" issue but couldn't come up with a sufficient solution. We should think about re-structuring the page. I'd suggest to merge tutorials and documentation and use different sections on a single page (development, installation, usage, ...).

Add KLEE 2020 banner

Hi @251 would it be possible to create a banner advertising the upcoming workshop, similar to the one you did for KLEE 2018?

Build STP command is not correct

To build STP it is necessary to build Minisat, however the following command is not correct:

$ cmake -DSTATICCOMPILE=ON -DCMAKE_INSTALL_PREFIX=/usr/ ../

In fact, -DSTATICCOMPILE=ON is valid only in CryptoMinisat. We should think if we want to move to CryptoMinisat or remove the extra argument.

Update LLVM 2.9 documentation to install newer version of STP

The current documentation suggests to install STP 2.1.0 for compiling KLEE on LLVM 2.9. For LLVM 3.4, instead, the documentation suggests to use the STP version from the master branch on git (currently 2.1.2).
Is there any reason for this? That is, is there any known bug for KLEE on LLVM 2.9 and STP 2.1.2?
I'm asking this because I've observed that STP 2.1.2 has better performances.

Ordered list in Publications

Hi @petrhosek , I noticed you hard coded the numbers in /publications, which were automatically generated in HTML. What's the best way to replicate

    ...
here? Thanks.

Update documentation to assume LLVM 3.4

Our documentation including tutorials, etc. assumes LLVM 2.9 is used. Since now LLVM 3.4 is the recommended version, we should update the documentation accordingly.

LLVM 3.4 Repository?

In build-llvm3.4md, http://llvm.org/apt/ is suggested as a source for LLVM 3.4.

http://llvm.org/apt/ does not contain any releases older than LLVM 3.8 for Xenial.

For new distributions (such as Ubuntu 16.04.1 LTS), which LLVM repository should we use?

dave@pc5:/mnt/bitcoder$ sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/llvm.list"
Hit:1 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.8 InRelease
Ign:2 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7 InRelease
Ign:3 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4 InRelease
Ign:4 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7 Release
Ign:5 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4 Release
Ign:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Ign:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
Hit:12 https://apt.dockerproject.org/repo ubuntu-xenial InRelease
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Ign:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Ign:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Ign:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Ign:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Ign:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Ign:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Ign:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Ign:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Err:6 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Sources
  404  Not Found
Ign:7 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main amd64 Packages
Ign:8 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main all Packages
Ign:9 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en_US
Ign:10 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7/main Translation-en
Err:11 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Sources
  404  Not Found
Ign:13 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main amd64 Packages
Ign:14 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main all Packages
Ign:15 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en_US
Ign:16 http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4/main Translation-en
Reading package lists... Done
W: The repository 'http://apt.llvm.org/xenial llvm-toolchain-xenial-3.7 Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'http://apt.llvm.org/xenial llvm-toolchain-xenial-3.4 Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch http://apt.llvm.org/xenial/dists/llvm-toolchain-xenial-3.7/main/source/Sources  404  Not Found
E: Failed to fetch http://apt.llvm.org/xenial/dists/llvm-toolchain-xenial-3.4/main/source/Sources  404  Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.