From 05fded85315e1977895450456f77d740770d2a9c Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Wed, 14 May 2014 11:13:45 +0200 Subject: [PATCH] Forward port to llvm-3.5 (cip) --- src/Binary.cxx | 30 +++++++++++++++--------------- src/Binary.hxx | 2 +- src/disassembler/Disassembler.cxx | 14 ++++---------- src/disassembler/Disassembler.hxx | 3 +-- src/disassembler/Target.cxx | 4 ++-- src/disassembler/Target.hxx | 2 +- 6 files changed, 24 insertions(+), 31 deletions(-) diff --git a/src/Binary.cxx b/src/Binary.cxx index 1d64b84..f4e00a3 100644 --- a/src/Binary.cxx +++ b/src/Binary.cxx @@ -56,8 +56,8 @@ namespace { std::map readSections(const ObjectFile& o) { error_code ec; std::map result; - section_iterator i(o.begin_sections()), e(o.end_sections()); - for (; i != e; i.increment(ec)) { + section_iterator i(o.section_begin()), e(o.section_end()); + for (; i != e; ++i) { StringRef name; if (error(i->getName(name))) break; @@ -69,8 +69,8 @@ namespace { std::map readSymbols(const ObjectFile& o) { error_code ec; std::map result; - symbol_iterator si(o.begin_symbols()), se(o.end_symbols()); - for (; si != se; si.increment(ec)) { + symbol_iterator si(o.symbol_begin()), se(o.symbol_end()); + for (; si != se; ++si) { StringRef name; if (error(si->getName(name))) break; @@ -88,13 +88,13 @@ namespace qtlldb { ::Disassembler d(filename); std::string error; - createBinary(filename, binary); - if (Archive *a = dyn_cast(binary.get())) { + binary = createBinary(filename).get(); + if (Archive *a = dyn_cast(binary)) { std::cerr << "Got an archive!" << std::endl; return; } - o = dyn_cast(binary.get()); + o = dyn_cast(binary); triple.setArch(Triple::ArchType(o->getArch())); std::string tripleName(triple.getTriple()); @@ -195,7 +195,7 @@ namespace qtlldb { if (symbols.end() != symbols.find(function)) { SymbolRef ref; - section_iterator sec(o->begin_sections()); + section_iterator sec(o->section_begin()); ref = symbols.at(function); if (error(ref.getSection(sec))) return; @@ -268,9 +268,9 @@ namespace qtlldb { void Binary::disassemble_functions() { error_code ec; - for (section_iterator i = o->begin_sections(), - e = o->end_sections(); - i != e; i.increment(ec)) { + for (section_iterator i = o->section_begin(), + e = o->section_end(); + i != e; ++i) { if (error(ec)) break; bool text; if (error(i->isText(text))) break; @@ -281,9 +281,9 @@ namespace qtlldb { // Make a list of all the symbols in this section. std::vector > Symbols; - for (symbol_iterator si = o->begin_symbols(), - se = o->end_symbols(); - si != se; si.increment(ec)) { + for (symbol_iterator si = o->symbol_begin(), + se = o->symbol_end(); + si != se; ++si) { bool contains; if (!error(i->containsSymbol(*si, contains)) && contains) { uint64_t Address; @@ -364,7 +364,7 @@ namespace qtlldb { outs() << '\n' << Symbols[si].second << ":\n"; #ifndef NDEBUG - raw_ostream &DebugOut = DebugFlag ? dbgs() : nulls(); + raw_ostream &DebugOut = nulls(); //DebugFlag ? dbgs() : nulls(); #else raw_ostream &DebugOut = nulls(); #endif diff --git a/src/Binary.hxx b/src/Binary.hxx index 180d8ee..873ac06 100644 --- a/src/Binary.hxx +++ b/src/Binary.hxx @@ -31,7 +31,7 @@ namespace qtlldb { const llvm::Target * target; llvm::object::ObjectFile * o; - OwningPtr binary; + llvm::object::Binary* binary; OwningPtr MRI; OwningPtr AsmInfo; OwningPtr Mod; diff --git a/src/disassembler/Disassembler.cxx b/src/disassembler/Disassembler.cxx index babac82..7422df5 100644 --- a/src/disassembler/Disassembler.cxx +++ b/src/disassembler/Disassembler.cxx @@ -1,17 +1,11 @@ #include "Disassembler.hxx" -namespace { - llvm::OwningPtr& - constructor_helper(const std::string& filename, - llvm::OwningPtr& binary) { - createBinary(filename, binary); - return binary; - } -} - +using namespace llvm; +using namespace llvm::object; Disassembler::Disassembler(const std::string& filename) - : _target(constructor_helper(filename, _binary)) + : _binary(createBinary(filename).get()) + , _target(_binary) { } diff --git a/src/disassembler/Disassembler.hxx b/src/disassembler/Disassembler.hxx index 5ccd9ff..13c36b6 100644 --- a/src/disassembler/Disassembler.hxx +++ b/src/disassembler/Disassembler.hxx @@ -8,8 +8,7 @@ class Disassembler { public: Disassembler(const std::string& filename); private: - llvm::OwningPtr _binary; - + llvm::object::Binary* _binary; Target _target; }; diff --git a/src/disassembler/Target.cxx b/src/disassembler/Target.cxx index 56042d5..bb96b0d 100644 --- a/src/disassembler/Target.cxx +++ b/src/disassembler/Target.cxx @@ -3,12 +3,12 @@ #include -Target:: Target(const llvm::OwningPtr& binary) +Target::Target(llvm::object::Binary* binary) : _logger(log4cxx::Logger::getLogger("disassembler.Target")) , triple("unknown-unknown-unknown") { std::string error; - llvm::object::ObjectFile * o = llvm::dyn_cast(binary.get()); + llvm::object::ObjectFile * o = llvm::dyn_cast(binary); triple.setArch(llvm::Triple::ArchType(o->getArch())); std::string tripleName(triple.getTriple()); diff --git a/src/disassembler/Target.hxx b/src/disassembler/Target.hxx index db3a4be..8710ba0 100644 --- a/src/disassembler/Target.hxx +++ b/src/disassembler/Target.hxx @@ -7,7 +7,7 @@ class Target { public: - Target(const llvm::OwningPtr& binary); + Target(llvm::object::Binary* binary); const llvm::Target& getTarget() const { return *target; -- 2.39.5