|
|
|
@ -484,17 +484,17 @@ bool TryInspectAddress(CFGRebuildState& state) {
|
|
|
|
|
}
|
|
|
|
|
case BlockCollision::Inside: {
|
|
|
|
|
// This case is the tricky one:
|
|
|
|
|
// We need to Split the block in 2 sepparate blocks
|
|
|
|
|
// We need to split the block into 2 separate blocks
|
|
|
|
|
const u32 end = state.block_info[block_index].end;
|
|
|
|
|
BlockInfo& new_block = CreateBlockInfo(state, address, end);
|
|
|
|
|
BlockInfo& current_block = state.block_info[block_index];
|
|
|
|
|
current_block.end = address - 1;
|
|
|
|
|
new_block.branch = current_block.branch;
|
|
|
|
|
new_block.branch = std::move(current_block.branch);
|
|
|
|
|
BlockBranchInfo forward_branch = MakeBranchInfo<SingleBranch>();
|
|
|
|
|
const auto branch = std::get_if<SingleBranch>(forward_branch.get());
|
|
|
|
|
branch->address = address;
|
|
|
|
|
branch->ignore = true;
|
|
|
|
|
current_block.branch = forward_branch;
|
|
|
|
|
current_block.branch = std::move(forward_branch);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|