v0.9.0
v0.9.0
This release adds support for generating BinExport2 representations from Lancelot workspaces. Going forward, BinExport2 may be the recommended way of interacting with Lancelot results. While we could provide our own API that approximates all the information already in BinExport2 (functions, basic blocks, instructions, control flow, etc.), it takes a lot of work to design and maintain, and isn't as portable. So, we'll experiment with using BinExport2 as the "output API".
new features
- export Workspace to a BinExport2 representation
- provide
DynamicConfiguration
for libraries that want to provide variable configurations to a workspace - add
function_hints
to config to specify known function addresses - pylancelot: build for more platforms, including PyPy on Linux
breaking changes
- remove pwa project (unused)
- remove jslancelot project (unused)
- remove smoke tool (use BinExport2 instead)
- pylancelot: replace local API with BinExport2 representation
- pylancelot: remove Python 3.8 support
other changes
- add cranelift, mold configuration for development
- add direnv+nix configuration for development
- add justfile
- pylancelot: pass logging messages to Python logging via pyo3-log
fixed bugs
- runtime_functions: handle chained unwind info
- cfg: don't code flow to regions not backed by image
- call targets: don't consider call $+5 to create a new function
- flows: don't code flow to NULL byte
- noret: handle noret thunks and consider msvcrt!_CxxThrowException as noret
Full Changelog: v0.8.10...v0.9.0