From: Matt Mullins Date: Sun, 25 May 2014 23:23:12 +0000 (-0700) Subject: Initialize LLVM target and disassembler. X-Git-Url: http://git.mmlx.us/?a=commitdiff_plain;h=0228a6911c2c8894ed9b15b5250d4ade6d03fd01;p=fuckit_dot_so.git Initialize LLVM target and disassembler. --- diff --git a/fuckit.cpp b/fuckit.cpp index 9cf52a2..5042857 100644 --- a/fuckit.cpp +++ b/fuckit.cpp @@ -3,8 +3,12 @@ #include #include +#include #include +static const llvm::Target* target; +static const llvm::MCDisassembler* disassembler; + static void handle_sigsegv(int signal, siginfo_t *info, void *_context) { (void)(signal); // it's unused, stfu gcc @@ -24,6 +28,23 @@ static void setup_signals() llvm::InitializeAllTargetMCs(); llvm::InitializeAllDisassemblers(); + std::string dontcare; + target = llvm::TargetRegistry::lookupTarget( + LLVM_HOST_TRIPLE, + dontcare); + if (!target) { + fprintf(stderr, "Cannot find target\n"); + } + + llvm::MCSubtargetInfo* sti = target->createMCSubtargetInfo("", "", ""); + if (!sti) { + fprintf(stderr, "Couldn't create subtarget info\n"); + } + disassembler = target->createMCDisassembler(*sti); + if (!disassembler) { + fprintf(stderr, "Couldn't create disassembler\n"); + } + fprintf(stderr, "Set up signals\n"); sigset_t mask; sigemptyset(&mask);