Skip to content

Commit

Permalink
catch master up with the release of 0.6.2 on the 0.6.x branch
Browse files Browse the repository at this point in the history
  • Loading branch information
cdisselkoen committed Oct 20, 2020
1 parent cceef37 commit a61ec40
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 54 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "haybale"
version = "0.6.1"
version = "0.7.0-pre"
authors = ["Craig Disselkoen <[email protected]>"]
edition = "2018"
description = "Symbolic execution of LLVM IR, written in Rust"
Expand Down
117 changes: 65 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ to the LLVM version you want:

```toml
[dependencies]
haybale = { version = "0.6.1", features = ["llvm-10"] }
haybale = { version = "0.6.2", features = ["llvm-11"] }
```

As of 0.6.1, the supported LLVM versions are `llvm-9` and `llvm-10`.
(The Git version you're looking at also supports `llvm-11`.)
Currently, the supported LLVM versions are `llvm-9`, `llvm-10`, and
`llvm-11`.

`haybale` depends (indirectly) on the LLVM and Boolector libraries, which
must both be available on your system.
Expand Down Expand Up @@ -270,13 +270,13 @@ or of course you can generate local documentation with `cargo doc --open`.

## Compatibility

Currently, the official crates.io releases of `haybale` (`0.6.x` series)
depend on Boolector 3.2.1 and either LLVM 9 or 10, depending on whether you
select the `llvm-9` or `llvm-10` feature.
As of this writing, choosing `llvm-9` vs `llvm-10` has essentially no effect
Currently, the official crates.io releases of `haybale` (`0.6.2` and later)
depend on Boolector 3.2.1 and either LLVM 9, 10, or 11, depending on whether you
select the `llvm-9`, `llvm-10`, or `llvm-11` feature.
As of this writing, choosing an LLVM version has essentially no effect
on `haybale`'s features or interface; the only difference is the ability to
analyze bitcode generated with LLVM 10. (And the LLVM 10 version can process
`AtomicRMW` instructions; see
analyze bitcode generated with newer LLVMs. (And the LLVM 10 and 11 versions
can process `AtomicRMW` instructions; see
[#12](https://github.com/PLSysSec/haybale/issues/12).)

LLVM 8 is supported on the `llvm-8` branch of this repo. This version is
Expand All @@ -295,6 +295,18 @@ solver (via the Rust [`boolector`] crate).

## Changelog

### Version 0.6.2 (Oct 20, 2020)

- Support for LLVM 11 via the `llvm-11` feature
- [`get_possible_return_values_of_func()`] now handles void functions properly
([#10](https://github.com/PLSysSec/haybale/issues/10))
- Support LLVM `atomicrmw` instructions (only for LLVM 10+)
([#12](https://github.com/PLSysSec/haybale/issues/12))
- Support LLVM `freeze` instructions (which only exist in LLVM 10+)
- Built-in support for a few more Rust standard-library functions related to
panic handling
- [`State`] has a new public method [`get_bv_by_irname()`]

### Version 0.6.1 (Sep 17, 2020)

- Both [`State`] and [`Project`] now have a method `size_in_bits()` which
Expand Down Expand Up @@ -577,47 +589,48 @@ Initial release!
[`llvm-sys`]: https://crates.io/crates/llvm-sys
[`boolector-sys`]: https://crates.io/crates/boolector-sys/
[KLEE]: https://klee.github.io/
[`Project`]: https://docs.rs/haybale/0.6.1/haybale/project/struct.Project.html
[`Project` documentation]: https://docs.rs/haybale/0.6.1/haybale/project/struct.Project.html
[`Project::get_func_by_name()`]: https://docs.rs/haybale/0.6.1/haybale/project/struct.Project.html#method.get_func_by_name
[`get_possible_return_values_of_func()`]: https://docs.rs/haybale/0.6.1/haybale/fn.get_possible_return_values_of_func.html
[`find_zero_of_func()`]: https://docs.rs/haybale/0.6.1/haybale/fn.find_zero_of_func.html
[`ExecutionManager`]: https://docs.rs/haybale/0.6.1/haybale/struct.ExecutionManager.html
[`ExecutionManager` documentation]: https://docs.rs/haybale/0.6.1/haybale/struct.ExecutionManager.html
[`symex_function()`]: https://docs.rs/haybale/0.6.1/haybale/fn.symex_function.html
[`Config`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html
[`Project`]: https://docs.rs/haybale/0.6.2/haybale/project/struct.Project.html
[`Project` documentation]: https://docs.rs/haybale/0.6.2/haybale/project/struct.Project.html
[`Project::get_func_by_name()`]: https://docs.rs/haybale/0.6.2/haybale/project/struct.Project.html#method.get_func_by_name
[`get_possible_return_values_of_func()`]: https://docs.rs/haybale/0.6.2/haybale/fn.get_possible_return_values_of_func.html
[`find_zero_of_func()`]: https://docs.rs/haybale/0.6.2/haybale/fn.find_zero_of_func.html
[`ExecutionManager`]: https://docs.rs/haybale/0.6.2/haybale/struct.ExecutionManager.html
[`ExecutionManager` documentation]: https://docs.rs/haybale/0.6.2/haybale/struct.ExecutionManager.html
[`symex_function()`]: https://docs.rs/haybale/0.6.2/haybale/fn.symex_function.html
[`Config`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html
[`BV`]: https://docs.rs/boolector/0.3.0/boolector/struct.BV.html
[`ReturnValue`]: https://docs.rs/haybale/0.6.1/haybale/enum.ReturnValue.html
[`Error`]: https://docs.rs/haybale/0.6.1/haybale/enum.Error.html
[`State`]: https://docs.rs/haybale/0.6.1/haybale/struct.State.html
[`Location`]: https://docs.rs/haybale/0.6.1/haybale/struct.Location.html
[`Project::get_inner_struct_type_from_named()`]: https://docs.rs/haybale/0.6.1/haybale/struct.Project.html#method.get_inner_struct_type_from_named
[`State::add_mem_watchpoint()`]: https://docs.rs/haybale/0.6.1/haybale/struct.State.html#method.add_mem_watchpoint
[`FunctionHooks::add_cpp_demangled()`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/struct.FunctionHooks.html#method.add_cpp_demangled
[`FunctionHooks::add_rust_demangled()`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/struct.FunctionHooks.html#method.add_rust_demangled
[`FunctionHooks::add_inline_asm_hook()`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/struct.FunctionHooks.html#method.add_inline_asm_hook
[`FunctionHooks::add_default_hook()`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/struct.FunctionHooks.html#method.add_default_hook
[`function_hooks`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/index.html
[`generic_stub_hook`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/fn.generic_stub_hook.html
[`abort_hook`]: https://docs.rs/haybale/0.6.1/haybale/function_hooks/fn.abort_hook.html
[`Config.initial_mem_watchpoints`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.initial_mem_watchpoints
[`Config.demangling`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.demangling
[`Config.print_source_info`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.print_source_info
[`Config.print_module_name`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.print_module_name
[`Config.trust_llvm_assumes`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.trust_llvm_assumes
[`Config.solver_query_timeout`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.solver_query_timeout
[`Config.squash_unsats`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.squash_unsats
[`Config.max_callstack_depth`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.max_callstack_depth
[`Config.max_memcpy_length`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.max_memcpy_length
[`Config.callbacks`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.callbacks
[`Config.null_pointer_checking`]: https://docs.rs/haybale/0.6.1/haybale/config/struct.Config.html#structfield.null_pointer_checking
[`backend::BV`]: https://docs.rs/haybale/0.6.1/haybale/backend/trait.BV.html
[`backend::Memory`]: https://docs.rs/haybale/0.6.1/haybale/backend/trait.Memory.html
[`new_uninitialized()`]: https://docs.rs/haybale/0.6.1/haybale/backend/trait.Memory.html#tymethod.new_uninitialized
[`new_zero_initialized()`]: https://docs.rs/haybale/0.6.1/haybale/backend/trait.Memory.html#tymethod.new_zero_initialized
[`State.full_error_message_with_context()`]: https://docs.rs/haybale/0.6.1/haybale/struct.State.html#method.full_error_message_with_context
[`memcpy_bv`]: https://docs.rs/haybale/0.6.1/haybale/hook_utils/fn.memcpy_bv.html
[`memset_bv`]: https://docs.rs/haybale/0.6.1/haybale/hook_utils/fn.memset_bv.html
[`layout::size_opaque_aware`]: https://docs.rs/haybale/0.6.1/haybale/struct.State.html#method.size_opaque_aware
[`pointer_size_bits()`]: https://docs.rs/haybale/0.6.1/haybale/struct.Project.html#method.pointer_size_bits
[`solver_utils::PossibleSolutions`]: https://docs.rs/haybale/0.6.1/haybale/solver_utils/enum.PossibleSolutions.html
[`ReturnValue`]: https://docs.rs/haybale/0.6.2/haybale/enum.ReturnValue.html
[`Error`]: https://docs.rs/haybale/0.6.2/haybale/enum.Error.html
[`State`]: https://docs.rs/haybale/0.6.2/haybale/struct.State.html
[`Location`]: https://docs.rs/haybale/0.6.2/haybale/struct.Location.html
[`Project::get_inner_struct_type_from_named()`]: https://docs.rs/haybale/0.6.2/haybale/struct.Project.html#method.get_inner_struct_type_from_named
[`State::add_mem_watchpoint()`]: https://docs.rs/haybale/0.6.2/haybale/struct.State.html#method.add_mem_watchpoint
[`FunctionHooks::add_cpp_demangled()`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/struct.FunctionHooks.html#method.add_cpp_demangled
[`FunctionHooks::add_rust_demangled()`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/struct.FunctionHooks.html#method.add_rust_demangled
[`FunctionHooks::add_inline_asm_hook()`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/struct.FunctionHooks.html#method.add_inline_asm_hook
[`FunctionHooks::add_default_hook()`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/struct.FunctionHooks.html#method.add_default_hook
[`function_hooks`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/index.html
[`generic_stub_hook`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/fn.generic_stub_hook.html
[`abort_hook`]: https://docs.rs/haybale/0.6.2/haybale/function_hooks/fn.abort_hook.html
[`Config.initial_mem_watchpoints`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.initial_mem_watchpoints
[`Config.demangling`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.demangling
[`Config.print_source_info`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.print_source_info
[`Config.print_module_name`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.print_module_name
[`Config.trust_llvm_assumes`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.trust_llvm_assumes
[`Config.solver_query_timeout`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.solver_query_timeout
[`Config.squash_unsats`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.squash_unsats
[`Config.max_callstack_depth`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.max_callstack_depth
[`Config.max_memcpy_length`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.max_memcpy_length
[`Config.callbacks`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.callbacks
[`Config.null_pointer_checking`]: https://docs.rs/haybale/0.6.2/haybale/config/struct.Config.html#structfield.null_pointer_checking
[`backend::BV`]: https://docs.rs/haybale/0.6.2/haybale/backend/trait.BV.html
[`backend::Memory`]: https://docs.rs/haybale/0.6.2/haybale/backend/trait.Memory.html
[`new_uninitialized()`]: https://docs.rs/haybale/0.6.2/haybale/backend/trait.Memory.html#tymethod.new_uninitialized
[`new_zero_initialized()`]: https://docs.rs/haybale/0.6.2/haybale/backend/trait.Memory.html#tymethod.new_zero_initialized
[`State.full_error_message_with_context()`]: https://docs.rs/haybale/0.6.2/haybale/struct.State.html#method.full_error_message_with_context
[`memcpy_bv`]: https://docs.rs/haybale/0.6.2/haybale/hook_utils/fn.memcpy_bv.html
[`memset_bv`]: https://docs.rs/haybale/0.6.2/haybale/hook_utils/fn.memset_bv.html
[`layout::size_opaque_aware`]: https://docs.rs/haybale/0.6.2/haybale/struct.State.html#method.size_opaque_aware
[`pointer_size_bits()`]: https://docs.rs/haybale/0.6.2/haybale/struct.Project.html#method.pointer_size_bits
[`solver_utils::PossibleSolutions`]: https://docs.rs/haybale/0.6.2/haybale/solver_utils/enum.PossibleSolutions.html
[`get_bv_by_irname()`]: https://docs.rs/haybale/0.6.2/haybale/struct.State.html#method.get_bv_by_irname
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
// it was especially necessary when the docs.rs docs weren't working for any
// llvm-sys consumers; now that we have docs.rs as the official docs, I'm not
// sure if this is necessary or helpful anymore
#![doc(html_root_url = "https://docs.rs/haybale/0.6.1")]
#![doc(html_root_url = "https://docs.rs/haybale/0.6.2")]

use llvm_ir::Type;
use std::collections::HashSet;
Expand Down

0 comments on commit a61ec40

Please sign in to comment.