Skip to content

Commit

Permalink
Invalid func fix pt2 (#409)
Browse files Browse the repository at this point in the history
* return decl instead of nullptr

* return error/null instead of decl
  • Loading branch information
Ninja3047 authored Feb 29, 2024
1 parent b47f275 commit 52f9638
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions lib/Lifters/FunctionLifter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -409,13 +409,6 @@ llvm::Function *FunctionLifter::LiftFunction(const FunctionDecl &decl) {
return nullptr;
}

// Function has no valid instructions.
auto &cfg = decl.cfg;
if (cfg.find(decl.entry_uid) == cfg.end()) {
LOG(ERROR) << "Function missing entry block " << std::hex << decl.address;
return nullptr;
}

// This is our higher-level function, i.e. it presents itself more like
// a function compiled from C/C++, rather than being a three-argument Remill
// function. In this function, we will stack-allocate a `State` structure,
Expand All @@ -440,6 +433,14 @@ llvm::Function *FunctionLifter::LiftFunction(const FunctionDecl &decl) {
return native_func;
}

// Function has no valid instructions.
auto &cfg = decl.cfg;
if (cfg.find(decl.entry_uid) == cfg.end()) {
LOG(ERROR) << "Function missing entry block " << std::hex << decl.address;
return nullptr;
}


// Every lifted function starts as a clone of __remill_basic_block. That
// prototype has multiple arguments (memory pointer, state pointer, program
// counter). This extracts the state pointer.
Expand Down

0 comments on commit 52f9638

Please sign in to comment.