LLVMDisassembler<ELFT>::LLVMDisassembler(const std::string& filename,
InformationManager* manager,
ELFObjectFile<ELFT>* file)
- : Disassembler(filename, manager)
+ : Disassembler()
, logger(log4cxx::Logger::getLogger("LLVMDisassembler"))
, triple("unknown-unknown-unknown")
, manager(manager)
std::unique_ptr<MCObjectDisassembler> OD(
new MCObjectDisassembler(*o, *DisAsm, *MIA));
Mod.reset(OD->buildModule(false));
+
+ readSections();
}
template <typename ELFT>
void LLVMDisassembler<ELFT>::start() {
readSymbols();
- readSections();
disassemble();
readDynamicSymbols();
}
disassembleFunctionAt(_entryAddress, s.str());
}
- uint64_t text_entry;
- text_section.getAddress(text_entry);
- LOG4CXX_INFO(logger, "No Symbols found, starting at the beginning of the text segment");
- disassembleFunctionAt(text_entry);
+ if (!manager->hasFunctions()) {
+ uint64_t text_entry;
+ text_section.getAddress(text_entry);
+ LOG4CXX_INFO(logger, "No Symbols found, starting at the beginning of the text segment");
+ disassembleFunctionAt(text_entry);
+ }
}
template <typename ELFT>