]> git.siccegge.de Git - frida/frida.git/blobdiff - src/disassembler/llvm/LLVMDisassembler.cxx
Add extra space in Logging output for Disassembler
[frida/frida.git] / src / disassembler / llvm / LLVMDisassembler.cxx
index 773a5189a27a33d35085da9f698864970b3ac9ec..f3a99cc273c6376c0a54f6a2c46262ff0be31c1f 100644 (file)
@@ -48,12 +48,12 @@ template <typename ELFT>
 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)
 {
-       LOG4CXX_DEBUG(logger, "Handling file" << filename);
+       LOG4CXX_DEBUG(logger, "Handling file " << filename);
 
        if (!file) {
                auto result = createBinary(filename);
@@ -151,12 +151,13 @@ LLVMDisassembler<ELFT>::LLVMDisassembler(const std::string& filename,
        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();
 }
@@ -335,10 +336,12 @@ void LLVMDisassembler<ELFT>::disassemble() {
                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>