Guest User

Untitled

a guest
Apr 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. bool runOnFunction(Function &F) override {
  2. Module *M = F.getParent();
  3. LLVMContext &context = M->getContext();
  4. Function *print_inst = cast<Function>(M->getOrInsertFunction("printOutInstrInfo", Type::getVoidTy(context), Type::getInt8PtrTy(context)));
  5. Function *print_func = cast<Function>(M->getOrInsertFunction("printOutFuncInfo", Type::getVoidTy(context), Type::getInt8PtrTy(context)));
  6. Function *print_bb = cast<Function>(M->getOrInsertFunction("printOutBBInfo", Type::getVoidTy(context), Type::getInt8PtrTy(context)));
  7.  
  8. for(Function::iterator B = F.begin(), BE = F.end(); B!=BE; ++B) {
  9. if (F.getName() == "BZ2_hbMakeCodeLengths"){
  10. IRBuilder<> Builder(&*B);
  11. Builder.SetInsertPoint(B->getTerminator());
  12. Builder.CreateCall(print_func, Builder.CreateGlobalStringPtr(F.getName()));
  13. //Builder.CreateCall(print_bb, Builder.CreateGlobalStringPtr(B->printAsOperand()));
  14. for(BasicBlock::iterator I = B->begin(), IE = B->end(); I != IE; ++I) {
  15. Builder.SetInsertPoint(&*I);
  16. Builder.CreateCall(print_inst, Builder.CreateGlobalStringPtr(I->getOpcodeName()));
  17. }
  18. }
  19.  
  20. }
  21.  
  22. return false;
  23. }
  24.  
  25. terminate called after throwing an instance of 'std::bad_alloc'
  26. what(): std::bad_alloc
  27. opt(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x2a)[0x1dd4ffa]
  28. opt(_ZN4llvm3sys17RunSignalHandlersEv+0x3e)[0x1dd30ce]
  29. opt[0x1dd321c]
  30. /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f1bb8b84390]
  31. /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f1bb7d39428]
  32. /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f1bb7d3b02a]
  33. /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x16d) [0x7f1bb867c84d]
  34. /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d6b6)[0x7f1bb867a6b6]
  35. /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d701)[0x7f1bb867a701]
  36. /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8d919)[0x7f1bb867a919]
  37. /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8debc)[0x7f1bb867aebc]
  38. opt[0x1803d48]
  39. opt[0x1804612] opt(_ZN4llvm12ConstantExpr16getGetElementPtrEPNS_4TypeEPNS_8ConstantENS_8ArrayRefIPNS_5ValueEEEbNS_8OptionalIjEES2_+0x306)[0x18055d6]
  40. build/skeleton/libSkeletonPass.so(_ZN4llvm12ConstantExpr24getInBoundsGetElementPtrEPNS_4TypeEPNS_8ConstantENS_8ArrayRefIPNS_5ValueEEE+0x67)[0x7f1bb7afb056]
  41. build/skeleton/libSkeletonPass.so(_ZNK4llvm14ConstantFolder27CreateInBoundsGetElementPtrEPNS_4TypeEPNS_8ConstantENS_8ArrayRefIPNS_5ValueEEE+0x40)[0x7f1bb7afb0e2]
  42. build/skeleton/libSkeletonPass.so(_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEE17CreateInBoundsGEPEPNS_4TypeEPNS_5ValueENS_8ArrayRefIS7_EERKNS_5TwineE+0xcc)[0x7f1bb7afce50]
  43. build/skeleton/libSkeletonPass.so(_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEE21CreateGlobalStringPtrENS_9StringRefERKNS_5TwineEj+0xd3)[0x7f1bb7afc685]
  44. build/skeleton/libSkeletonPass.so(+0xe11c)[0x7f1bb7afa11c]
  45. opt(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x28a)[0x188c3ea]
  46. opt(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x33)[0x188c493]
  47. opt(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x304)[0x188bfa4]
  48. opt(main+0x202d)[0x73addd]
  49. /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f1bb7d24830]
  50. opt(_start+0x29)[0x7cfd99]
  51. Stack dump:
  52. 0. Program arguments: opt -load build/skeleton/libSkeletonPass.so -cdi -o 401_inst.bc
  53. 1. Running pass 'Function Pass Manager' on module '<stdin>'.
  54. 2. Running pass 'Count Dynamic Instructions' on function '@BZ2_hbMakeCodeLengths'
  55. Aborted (core dumped)
Add Comment
Please, Sign In to add comment