]> git.siccegge.de Git - frida/frida.git/blob - src/disassembler/Target.cxx
Separate out several parts of llvm-using code ; Add logger
[frida/frida.git] / src / disassembler / Target.cxx
1 #include "Target.hxx"
2 #include "include.hxx"
3
4 #include <string>
5
6 Target:: Target(const llvm::OwningPtr<llvm::object::Binary>& binary)
7 : _logger(log4cxx::Logger::getLogger("disassembler.Target"))
8 , triple("unknown-unknown-unknown")
9 {
10 std::string error;
11 llvm::object::ObjectFile * o = llvm::dyn_cast<llvm::object::ObjectFile>(binary.get());
12
13 triple.setArch(llvm::Triple::ArchType(o->getArch()));
14 std::string tripleName(triple.getTriple());
15 LOG4CXX_INFO(_logger, "Detected triple " << tripleName);
16
17 target = llvm::TargetRegistry::lookupTarget("", triple, error);
18 if (!target) {
19 LOG4CXX_ERROR(_logger, "Couldn't create Target: " << error);
20 return;
21 }
22 LOG4CXX_INFO(_logger, "Target: " << target->getName());
23
24 STI.reset(target->createMCSubtargetInfo(tripleName, "", ""));
25 if (!STI) {
26 LOG4CXX_ERROR(_logger, "No subtarget for target " << tripleName);
27 return;
28 }
29 }