summaryrefslogtreecommitdiffstats
path: root/courgette/disassembler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'courgette/disassembler.cc')
-rw-r--r--courgette/disassembler.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/courgette/disassembler.cc b/courgette/disassembler.cc
index 5514be9..103bbe0 100644
--- a/courgette/disassembler.cc
+++ b/courgette/disassembler.cc
@@ -13,6 +13,7 @@
#include "courgette/assembly_program.h"
#include "courgette/courgette.h"
+#include "courgette/disassembler_elf_32_x86.h"
#include "courgette/disassembler_win32_x86.h"
#include "courgette/encoded_program.h"
@@ -30,8 +31,14 @@ Disassembler* DetectDisassembler(const void* buffer, size_t length) {
disassembler = new DisassemblerWin32X86(buffer, length);
if (disassembler->ParseHeader())
return disassembler;
+ else
+ delete disassembler;
- delete disassembler;
+ disassembler = new DisassemblerElf32X86(buffer, length);
+ if (disassembler->ParseHeader())
+ return disassembler;
+ else
+ delete disassembler;
return NULL;
}