diff options
| author | Peter LaFosse <peter@vector35.com> | 2018-05-11 13:37:48 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2018-05-11 13:37:48 -0400 |
| commit | a7524ae957f62fded3991152a360c553c99639b6 (patch) | |
| tree | 1a6370a9ac9430286929d5dd13e5c387a31599d8 /binaryview.cpp | |
| parent | 40930128dc95f6cb8a9f2c1a4ce098fd15ae02ef (diff) | |
Simplify relocation handlers
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 77 |
1 files changed, 11 insertions, 66 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index 055608a4..6c4418b8 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -449,7 +449,6 @@ BinaryView::BinaryView(const std::string& typeName, FileMetadata* file, BinaryVi view.getAddressSize = GetAddressSizeCallback; view.save = SaveCallback; view.defineRelocation = DefineRelocationCallback; - view.defineSectionRelocation = DefineSectionRelocationCallback; m_file = file; AddRefForRegistration(); m_object = BNCreateCustomBinaryView(typeName.c_str(), m_file->GetObject(), @@ -612,27 +611,13 @@ bool BinaryView::SaveCallback(void* ctxt, BNFileAccessor* file) } -void BinaryView::DefineRelocationCallback(void* ctxt, BNArchitecture* arch, BNRelocationInfo* info, BNSymbol* sym, - uint64_t symOffset, BNSegment* seg, uint64_t segOffset) +void BinaryView::DefineRelocationCallback(void* ctxt, BNArchitecture* arch, BNRelocationInfo* info, uint64_t target, + uint64_t reloc) { BinaryView* view = (BinaryView*)ctxt; BNRelocationInfo curInfo = *info; - Ref<Symbol> curSym = new Symbol(BNNewSymbolReference(sym)); - Ref<Segment> curSeg = new Segment(BNNewSegmentReference(seg)); Architecture* curArch = new CoreArchitecture(arch); - return view->PerformDefineRelocation(curArch, curInfo, curSym, symOffset, curSeg, segOffset); -} - - -void BinaryView::DefineSectionRelocationCallback(void* ctxt, BNArchitecture* arch, BNRelocationInfo* info, BNSection* sec, - uint64_t secOffset, BNSegment* seg, uint64_t segOffset) -{ - BinaryView* view = (BinaryView*)ctxt; - BNRelocationInfo curInfo = *info; - Ref<Section> curSec = new Section(BNNewSectionReference(sec)); - Ref<Segment> curSeg = new Segment(BNNewSegmentReference(seg)); - Architecture* curArch = new CoreArchitecture(arch); - return view->PerformDefineRelocation(curArch, curInfo, curSec, secOffset, curSeg, segOffset); + return view->PerformDefineRelocation(curArch, curInfo, target, reloc); } @@ -709,17 +694,9 @@ bool BinaryView::PerformSave(FileAccessor* file) } -void BinaryView::PerformDefineRelocation(Architecture* arch, BNRelocationInfo& info, const Ref<Symbol> sym, - uint64_t symOffset, const Ref<Segment> seg, uint64_t segOffset) -{ - DefineRelocation(arch, info, sym, symOffset, seg, segOffset); -} - - -void BinaryView::PerformDefineRelocation(Architecture* arch, BNRelocationInfo& info, const Ref<Section> sec, - uint64_t secOffset, const Ref<Segment> seg, uint64_t segOffset) +void BinaryView::PerformDefineRelocation(Architecture* arch, BNRelocationInfo& info, uint64_t target, uint64_t reloc) { - DefineRelocation(arch, info, sec, secOffset, seg, segOffset); + DefineRelocation(arch, info, target, reloc); } @@ -902,17 +879,9 @@ bool BinaryView::Save(const string& path) } -void BinaryView::DefineRelocation(Architecture* arch, BNRelocationInfo& info, const Ref<Symbol> sym, - uint64_t symOffset, const Ref<Segment> seg, uint64_t segOffset) -{ - BNDefineRelocation(m_object, arch->GetObject(), &info, sym->GetObject(), symOffset, seg->GetObject(), segOffset); -} - - -void BinaryView::DefineRelocation(Architecture* arch, BNRelocationInfo& info, const Ref<Section> sec, - uint64_t secOffset, const Ref<Segment> seg, uint64_t segOffset) +void BinaryView::DefineRelocation(Architecture* arch, BNRelocationInfo& info, uint64_t target, uint64_t reloc) { - BNDefineSectionRelocation(m_object, arch->GetObject(), &info, sec->GetObject(), secOffset, seg->GetObject(), segOffset); + BNDefineRelocation(m_object, arch->GetObject(), &info, target, reloc); } @@ -2160,39 +2129,15 @@ Architecture* Relocation::GetArchitecture() const } -Ref<Symbol> Relocation::GetSymbol() -{ - return new Symbol(BNNewSymbolReference(BNRelocationGetSymbol(m_object))); -} - - -uint64_t Relocation::GetSymbolOffset() const -{ - return BNRelocationGetSymbolOffset(m_object); -} - - -uint64_t Relocation::GetTargetAddress() const -{ - return BNRelocationGetTargetAddress(m_object); -} - - -Ref<Segment> Relocation::GetSegment() -{ - return new Segment(BNNewSegmentReference(BNRelocationGetSegment(m_object))); -} - - -uint64_t Relocation::GetSegmentOffset() const +uint64_t Relocation::GetTarget() const { - return BNRelocationGetSegmentOffset(m_object); + return BNRelocationGetTarget(m_object); } -uint64_t Relocation::GetDestAddress() const +uint64_t Relocation::GetReloc() const { - return BNRelocationGetDestAddress(m_object); + return BNRelocationGetReloc(m_object); } |
