diff options
Diffstat (limited to 'disassembler_elf.cc')
-rw-r--r-- | disassembler_elf.cc | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/disassembler_elf.cc b/disassembler_elf.cc index ef050a4..474f43e 100644 --- a/disassembler_elf.cc +++ b/disassembler_elf.cc @@ -371,13 +371,12 @@ void DisassemblerElfIntel<Traits>::ParseExecSection( ConstBufferView region(image_.begin() + section.sh_offset, section.sh_size); Abs32GapFinder gap_finder(image_, region, abs32_locations_, 4); - std::unique_ptr<Rel32FinderIntel> finder = - std::make_unique<typename Traits::Rel32FinderUse>(image_); + typename Traits::Rel32FinderUse finder; for (auto gap = gap_finder.GetNext(); gap.has_value(); gap = gap_finder.GetNext()) { - finder->Reset(gap.value()); - for (auto rel32 = finder->GetNext(); rel32.has_value(); - rel32 = finder->GetNext()) { + finder.SetRegion(gap.value()); + for (auto rel32 = finder.GetNext(); rel32.has_value(); + rel32 = finder.GetNext()) { offset_t rel32_offset = base::checked_cast<offset_t>(rel32->location - image_.begin()); rva_t rel32_rva = rva_t(rel32_offset + from_offset_to_rva); @@ -385,7 +384,7 @@ void DisassemblerElfIntel<Traits>::ParseExecSection( if (target_rva_checker.IsValid(target_rva) && (rel32->can_point_outside_section || (start_rva <= target_rva && target_rva < end_rva))) { - finder->Accept(); + finder.Accept(); rel32_locations_.push_back(rel32_offset); } } |