Index: courgette/disassembler_win32_x86.cc |
diff --git a/courgette/disassembler.cc b/courgette/disassembler_win32_x86.cc |
similarity index 84% |
copy from courgette/disassembler.cc |
copy to courgette/disassembler_win32_x86.cc |
index e3dd71af2d6a53ded9c2c92b1862b9716cf74516..fb12c226cc0c1da0554b589014f0f6ee0ba3e718 100644 |
--- a/courgette/disassembler.cc |
+++ b/courgette/disassembler_win32_x86.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "courgette/disassembler.h" |
+#include "courgette/disassembler_win32_x86.h" |
#include <algorithm> |
#include <string> |
@@ -22,46 +22,10 @@ |
namespace courgette { |
-class DisassemblerWin32X86 : public Disassembler { |
- public: |
- explicit DisassemblerWin32X86(PEInfo* pe_info) |
- : pe_info_(pe_info), |
- incomplete_disassembly_(false) { |
- } |
- |
- virtual bool Disassemble(AssemblyProgram* target); |
- |
- virtual void Destroy() { delete this; } |
- |
- protected: |
- PEInfo& pe_info() { return *pe_info_; } |
- |
- CheckBool ParseFile(AssemblyProgram* target) WARN_UNUSED_RESULT; |
- bool ParseAbs32Relocs(); |
- void ParseRel32RelocsFromSections(); |
- void ParseRel32RelocsFromSection(const Section* section); |
- |
- CheckBool ParseNonSectionFileRegion(uint32 start_file_offset, |
- uint32 end_file_offset, AssemblyProgram* program) WARN_UNUSED_RESULT; |
- CheckBool ParseFileRegion(const Section* section, |
- uint32 start_file_offset, uint32 end_file_offset, |
- AssemblyProgram* program) WARN_UNUSED_RESULT; |
- |
-#if COURGETTE_HISTOGRAM_TARGETS |
- void HistogramTargets(const char* kind, const std::map<RVA, int>& map); |
-#endif |
- |
- PEInfo* pe_info_; |
- bool incomplete_disassembly_; // 'true' if can leave out 'uninteresting' bits |
- |
- std::vector<RVA> abs32_locations_; |
- std::vector<RVA> rel32_locations_; |
- |
-#if COURGETTE_HISTOGRAM_TARGETS |
- std::map<RVA, int> abs32_target_rvas_; |
- std::map<RVA, int> rel32_target_rvas_; |
-#endif |
-}; |
+DisassemblerWin32X86::DisassemblerWin32X86(PEInfo* pe_info) |
+ : pe_info_(pe_info), |
+ incomplete_disassembly_(false) { |
+} |
bool DisassemblerWin32X86::Disassemble(AssemblyProgram* target) { |
if (!pe_info().ok()) |
@@ -410,42 +374,4 @@ void DisassemblerWin32X86::HistogramTargets(const char* kind, |
} |
#endif // COURGETTE_HISTOGRAM_TARGETS |
-Disassembler* Disassembler::MakeDisassemberWin32X86(PEInfo* pe_info) { |
- return new DisassemblerWin32X86(pe_info); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
-Status ParseWin32X86PE(const void* buffer, size_t length, |
- AssemblyProgram** output) { |
- *output = NULL; |
- |
- PEInfo* pe_info = new PEInfo(); |
- pe_info->Init(buffer, length); |
- |
- if (!pe_info->ParseHeader()) { |
- delete pe_info; |
- return C_INPUT_NOT_RECOGNIZED; |
- } |
- |
- Disassembler* disassembler = Disassembler::MakeDisassemberWin32X86(pe_info); |
- AssemblyProgram* program = new AssemblyProgram(); |
- |
- if (!disassembler->Disassemble(program)) { |
- delete program; |
- disassembler->Destroy(); |
- delete pe_info; |
- return C_DISASSEMBLY_FAILED; |
- } |
- |
- disassembler->Destroy(); |
- delete pe_info; |
- *output = program; |
- return C_OK; |
-} |
- |
-void DeleteAssemblyProgram(AssemblyProgram* program) { |
- delete program; |
-} |
- |
} // namespace courgette |