From 5ccef726c0954116f8f4b5d6347e0acdbb0b6ce3 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Tue, 27 Jan 2026 11:26:57 -0500 Subject: Perform function lifting and inlining in arch plugins This change allows architecture plugins to override the LiftFunction callback to iterate a function's basic block list and lift entire functions at once. This is required for architectures such as TMS320 C6x, which have non-traditional "delay slots" in that branches, loads, and other instructions take multiple cycles to complete, and branch instructions can reside within the delay slots of other branches. --- basicblock.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'basicblock.cpp') diff --git a/basicblock.cpp b/basicblock.cpp index a548c708..8025a9fc 100644 --- a/basicblock.cpp +++ b/basicblock.cpp @@ -454,6 +454,12 @@ void BasicBlock::SetUndeterminedOutgoingEdges(bool value) } +bool BasicBlock::HasInstructionData() const +{ + return BNBasicBlockHasInstructionData(m_object); +} + + const uint8_t* BasicBlock::GetInstructionData(uint64_t addr, size_t* len) const { return BNBasicBlockGetInstructionData(m_object, addr, len); -- cgit v1.3.1