Upgrade to release 1.0.0:
- Add Android JNI Analyzer
- The DWARF import plugin now supports comments
- Add support for generating DWARF from firmware or binaries
without a precise format or architecture
- Add support for accessing the bit size of bit-field declarations
- Add support for accessing Enum entries:
lief.dwarf.types.Enum.entries()
- Add support for reading from or assigning a register to a function
parameter
- Add support for reading from or assigning a description
(DW_AT_description) to a lief.dwarf.Function, lief.dwarf.Variable,
or lief.dwarf.LexicalBlock:
lief.dwarf.Function.description()
lief.dwarf.Variable.description()
lief.dwarf.LexicalBlock.description()
- Enable the creation of nested lief.dwarf.editor.Function.LexicalBlock
- Add support for generating a C/C++ definition for a whole
lief.dwarf.CompilationUnit ( lief.dwarf.CompilationUnit.to_decl()).
The output of the following to_decl() functions can now be
configured through the new lief.DeclOpt structure:
lief.dwarf.Function.to_decl()
lief.dwarf.Variable.to_decl()
lief.dwarf.Type.to_decl()
lief.dwarf.CompilationUnit.to_decl()
- Improve support and the API for LF_ENUM: lief.pdb.types.Enum
- Improve support and the API for LF_PROCEDURE: lief.pdb.types.Function
- Improve support and the API for LF_ARRAY: lief.pdb.types.Array
- Improve support and the API for simple types: lief.pdb.types.Simple
- Improve support and the API for LF_ONEMETHOD: lief.pdb.types.Method
- Add support for generating a C/C++ definition for a lief.pdb.Function
( lief.pdb.Function.to_decl()) and a lief.pdb.CompilationUnit
( lief.pdb.CompilationUnit.to_decl()), configurable with the new
lief.DeclOpt structure.
- Add support for DT_AUXILIARY tag: lief.ELF.DynamicEntryAuxiliary
- Add support for DT_FILTER tag: lief.ELF.DynamicEntryFilter
- Add lief.ELF.parse_from_dump() to parse an ELF binary from a
memory dump
- Add lief.COFF.Section.coff_string for accessing the full section
name when this name does not fit in 8 bytes.
- Add support for writing big-endian Mach-O binaries
- Introduce an API for selecting a specific Mach-O binary by
architecture from a FAT binary
- Add lief.MachO.FatBinary.create() to create a FAT binary from a
list of lief.MachO.Binary objects targeting different architectures
- Add support for lief.MachO.ThreadLocalVariables
- Fix an extra byte being written after the thread state of an
LC_UNIXTHREAD/LC_THREAD command, which shifted the following load
commands by one byte
- Add support for editing the runtime tables of the
LC_FUNCTION_VARIANTS command and committing the changes on write:
lief.MachO.FunctionVariants
- Add a structured parser, editing API and writer for the
LC_FUNCTION_VARIANT_FIXUPS command:
lief.MachO.FunctionVariantFixups
- Add support for the LC_LAZY_LOAD_DYLIB_INFO command:
lief.MachO.LazyLoadDylibInfo
- Add lief.MachO.parse_from_dump() to parse a Mach-O binary from a
memory dump
- Add setters for lief.PE.ImportEntry.iat_value and
lief.PE.ImportEntry.ilt_value
- Add lief.PE.Binary.offset_to_rva() to convert a raw offset into a RVA
- Add lief.PE.parse_from_dump() to parse a PE binary from a memory dump
- Update lief.Binary.offset_to_virtual_address() for PE binaries
to return an absolute virtual address instead of a RVA
- Add support for adding an lief.PE.Import at a specific position:
lief.PE.Binary.add_import()
- Improve support for EFI binaries, such as bzImage
- Add support for Objective-C categories: lief.ObjC.Category,
accessible through lief.ObjC.Metadata.categories
- Add support for iterating over the operands of MIPS, PowerPC,
eBPF and RISC-V instructions (Register, Immediate, Memory and
PCRelative):
lief.assembly.mips.Instruction.operands()
lief.assembly.powerpc.Instruction.operands()
lief.assembly.ebpf.Instruction.operands()
lief.assembly.riscv.Instruction.operands()
- The Rust FFI no longer relies on autocxx and bindgen. It is now
built on top of plain cxx, which simplifies the bindings and
reduces the iteration time
- The Rust bindings directory has been renamed from api/rust/cargo/
to api/rust/crates/
- Add support for the aarch64-linux-android and x86_64-linux-android
targets
- Add LIEF_LIFETIMEBOUND annotations wrapping [[clang::lifetimebound]]
to leverage Clang's lifetime analysis. This helps detect dangling
references at compile time for methods that return references or
iterators tied to an object's lifetime
This work was sponsored by GOVCERT.LU.
License-Update: Update years
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>