You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vmdevirt/src/main.cpp

34 lines
1.0 KiB

#include <Windows.h>
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Pass.h"
#include "llvm/Support/raw_ostream.h"
using namespace llvm;
int main( int argc, char **argv )
{
// test for now...
LLVMContext llvm_ctx;
Module llvm_module( "VMProtect 2 Static Devirtualizer", llvm_ctx );
IRBuilder<> ir_builder( llvm_ctx );
FunctionType *FT = FunctionType::get( Type::getVoidTy( llvm_ctx ), false );
Function *F = Function::Create( FT, Function::ExternalLinkage, "test_func", llvm_module );
F->setCallingConv( CallingConv::C );
auto basic_block = BasicBlock::Create( llvm_ctx, "test", F );
ir_builder.SetInsertPoint( basic_block );
ir_builder.CreateRetVoid();
basic_block->print( outs() );
}