From 01df791b1356097232996e125a202759fc27ed7f Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 27 Jun 2017 23:48:15 +0430 Subject: trying to see how many cool things i can do with orcs... --- bruiser/ORCmutation.cpp | 0 bruiser/ORCmutation.h | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 bruiser/ORCmutation.cpp create mode 100644 bruiser/ORCmutation.h (limited to 'bruiser') diff --git a/bruiser/ORCmutation.cpp b/bruiser/ORCmutation.cpp new file mode 100644 index 0000000..e69de29 diff --git a/bruiser/ORCmutation.h b/bruiser/ORCmutation.h new file mode 100644 index 0000000..8cc29ae --- /dev/null +++ b/bruiser/ORCmutation.h @@ -0,0 +1,73 @@ + +/***************************************************Project Mutator****************************************************/ +//-*-c++-*- +/*first line intentionally left blank.*/ +/*a second way of running the mutants. experimental.*/ +/*Copyright (C) 2017 Farzad Sadeghi + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/ +/*code structure inspired by Eli Bendersky's tutorial on Rewriters.*/ +/**********************************************************************************************************************/ +/*inclusion guard*/ +#ifndef ORC_MUTATION_H +#define ORC_MUTATION_H +/**********************************************************************************************************************/ +/*included modules*/ +/*project headers*/ +/*standard library headers*/ +#include +/*clang headers*/ +/*llvm headers*/ +#include "llvm/ExecutionEngine/SectionMemoryManager.h" +#include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/ExecutionEngine/RTDyldMemoryManager.h" +#include "llvm/ExecutionEngine/Orc/CompileUtils.h" +#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h" +#include "llvm/ExecutionEngine/Orc/IRTransformLayer.h" +#include "llvm/ExecutionEngine/Orc/LambdaResolver.h" +#include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h" +#include "llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h" +#include "llvm/IR/Mangler.h" +#include "llvm/Support/DynamicLibrary.h" +/**********************************************************************************************************************/ +/*using*/ +using namespace llvm; +/**********************************************************************************************************************/ +/*globals*/ +/**********************************************************************************************************************/ +class MutatorJIT +{ + private: + std::unique_ptr TM; + const DataLayout DL; + std::unique_ptr CompileCallbackManager; + orc::RTDyldObjectLinkingLayer<> ObjectLinkingLayer; + orc::IRCompileLayer CompileLayer; + + typedef std::function(std::unique_ptr)> OptimizeFunction; + + orc::IRTransformLayer OptimizeLayer; + orc::CompileOnDemandLayer CODL; + + public: + typedef decltype(CODL)::ModuleSetHandleT ModuleHandle; +}; +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ +#endif +/*last line intentionally left blank*/ + -- cgit v1.2.3