diff options
Diffstat (limited to 'bruiser')
| -rw-r--r-- | bruiser/bruiser.cpp | 494 | ||||
| -rw-r--r-- | bruiser/bruiser.h | 53 | ||||
| -rw-r--r-- | bruiser/lua-scripts/wasmtest.lua | 1 | 
3 files changed, 101 insertions, 447 deletions
| diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 54b632e..ae6db23 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -618,13 +618,11 @@ class CompilationDatabaseProcessor {  };  /**********************************************************************************************************************/  /*the implementation of the bruiser logger.*/ -bruiser::BruiserReport::BruiserReport () -{ +bruiser::BruiserReport::BruiserReport () {    BruiserLog.open("bruiser.log");  } -bruiser::BruiserReport::~BruiserReport() -{ +bruiser::BruiserReport::~BruiserReport() {    BruiserLog.close();  } @@ -636,8 +634,7 @@ bruiser::BruiserReport::~BruiserReport()   * @return Returns true if the write was successful, false otherwise.   */  template <typename T> -bool bruiser::BruiserReport::PrintToLog(T __arg) -{ +bool bruiser::BruiserReport::PrintToLog(T __arg) {    BruiserLog << __arg << "\n";    return !BruiserLog.bad();  } @@ -646,184 +643,42 @@ bruiser::TypeInfo::TypeInfo(const clang::ast_type_traits::DynTypedNode* __dtn) :  bruiser::TypeInfo::~TypeInfo() {}; -const clang::Type* bruiser::TypeInfo::getTypeInfo(clang::ASTContext* __astc) -{ +const clang::Type* bruiser::TypeInfo::getTypeInfo(clang::ASTContext* __astc) {    const clang::Expr* EXP = DTN->get<clang::Expr>(); -    const clang::Type* TP = EXP->getType().getTypePtr(); -    return __astc->getCanonicalType(TP);  }  /**********************************************************************************************************************/ -class AbstractMatcherHandler : public virtual MatchFinder::MatchCallback -{ -  public: -    AbstractMatcherHandler (Rewriter &Rewrite) : R(Rewrite) {} - -  public: -    virtual void run(const MatchFinder::MatchResult &MR) -    { - -    } - -  private: -    Rewriter &R [[maybe_unused]]; -}; -/**********************************************************************************************************************/ -class MatcherHandlerLVL0 : public AbstractMatcherHandler -{ -  public: -    explicit MatcherHandlerLVL0 (Rewriter &Rewrite) : AbstractMatcherHandler(Rewrite) {} - -    virtual ~MatcherHandlerLVL0() {} - -    virtual void run(const MatchFinder::MatchResult &MR) override -    { - -    } - -  private: -}; -/**********************************************************************************************************************/ -class NameFinder -{ -  public: -    NameFinder () {} - -    class runDeclRefExprMatcher -    { -      public: -        runDeclRefExprMatcher (Rewriter &__rwrt) : LVL0Proto(__rwrt), __rwrt(__rwrt) {} - -        virtual void runMatcher(const StringRef __sr, ASTContext &__ctx) -        { -          Matcher.addMatcher(declRefExpr(to(namedDecl(hasName(__sr.str())))).bind("declrefexpbyname"), &LVL0Proto); -          Matcher.matchAST(__ctx); -        } - -      private: -        MatchFinder Matcher; -        MatcherHandlerLVL0 LVL0Proto; -        Rewriter __rwrt; -        StringRef __sr; -    }; - -    class runNamedDeclMatcher -    { -      public: -        runNamedDeclMatcher (Rewriter &__rwrt) : LVL0Proto(__rwrt), __rwrt(__rwrt) {} - -        virtual void runMatcher(const StringRef __sr, ASTContext &__ctx) -        { -          Matcher.addMatcher(declRefExpr(to(namedDecl(hasName(__sr.str())))).bind("nameddeclbyname"), &LVL0Proto); -          Matcher.matchAST(__ctx); -        } - -      private: -        MatchFinder Matcher; -        MatcherHandlerLVL0 LVL0Proto; -        Rewriter __rwrt; -        StringRef __sr; -    }; - -  private: -}; -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -class IfBreaker : public MatchFinder::MatchCallback -{ -  public: -    IfBreaker (Rewriter &Rewrite) : Rewrite(Rewrite) {} - -    virtual void run(const MatchFinder::MatchResult &MR) -    { -      if (MR.Nodes.getNodeAs<clang::UnaryOperator>("uno") != nullptr) -      { -        const clang::UnaryOperator* UO = MR.Nodes.getNodeAs<clang::UnaryOperator>("uno"); - -        SourceLocation SL = UO->getLocStart(); -        CheckSLValidity(SL); -        SL = Devi::SourceLocationHasMacro(SL, Rewrite); - -        const Expr* EXP = UO->getSubExpr(); -        const ast_type_traits::DynTypedNode DynNode = ast_type_traits::DynTypedNode::create<clang::Expr>(*EXP); -        bruiser::TypeInfo TIProto(&DynNode); - -        const clang::Type* CTP [[maybe_unused]] = TIProto.getTypeInfo(MR.Context); - -        NameFinder::runDeclRefExprMatcher DRENameMatcher(Rewrite); - -        DRENameMatcher.runMatcher(StringRef(), *MR.Context); -      } - -      if (MR.Nodes.getNodeAs<clang::BinaryOperator>("dous") != nullptr) -      { -        const clang::BinaryOperator* BO = MR.Nodes.getNodeAs<clang::BinaryOperator>("dous"); - -        SourceLocation SL = BO->getLocStart(); -        CheckSLValidity(SL); -        SL = Devi::SourceLocationHasMacro(SL, Rewrite); - -        const Expr* LHS = BO->getLHS(); -        const Expr* RHS = BO->getRHS(); - -        QualType LQT = LHS->getType(); -        QualType RQT = RHS->getType(); - -        const clang::Type* LTP = LQT.getTypePtr(); -        const clang::Type* RTP = RQT.getTypePtr(); - -        const clang::Type* CLTP [[maybe_unused]] = MR.Context->getCanonicalType(LTP); -        const clang::Type* CRTP [[maybe_unused]] = MR.Context->getCanonicalType(RTP); -      } -    } - -  private: -    Rewriter &Rewrite; -    MatchFinder Matcher; -};  /**********************************************************************************************************************/  /**   * @brief Hijacks the main main and replaces it with bruiser's main.   */ -class MainWrapper : public MatchFinder::MatchCallback -{ +class MainWrapper : public MatchFinder::MatchCallback {  public:    MainWrapper (Rewriter &Rewrite) : Rewrite(Rewrite) {} -  virtual void run(const MatchFinder::MatchResult &MR) -  { -    if (MR.Nodes.getNodeAs<clang::FunctionDecl>("mainwrapper") != nullptr) -    { +  virtual void run(const MatchFinder::MatchResult &MR) { +    if (MR.Nodes.getNodeAs<clang::FunctionDecl>("mainwrapper") != nullptr) {        const FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mainwrapper");        SourceLocation SL = FD->getLocStart();        CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite); -        SourceLocation SLE = FD->getLocEnd();        CheckSLValidity(SLE);        SLE = Devi::SourceLocationHasMacro(SLE, Rewrite); -      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) -      { +      if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) {          return void();        }        SourceRange SR(SL, SLE); -        std::string MainSig = Rewrite.getRewrittenText(SR); -        size_t mainbegin = MainSig.find("main"); -        StringRef __sr("sub_main"); -        Rewrite.ReplaceText(SL.getLocWithOffset(mainbegin), 4U, __sr); -        /*@DEVI-obviously the best way to do this is to use the main signature already used, instead of going with a general predefined one. the current form is a temp.*/        Rewrite.InsertTextAfter(SLE.getLocWithOffset(1U), StringRef("\n\nint main(int argc, const char **argv)\n{\n\treturn sub_main(argc, argv);\n}\n")); -        //BruiseRep.PrintToLog("hijacked main main.");      }    } @@ -832,36 +687,29 @@ public:    Rewriter &Rewrite;  };  /**********************************************************************************************************************/ -class LiveListFuncs : public MatchFinder::MatchCallback -{ +class LiveListFuncs : public MatchFinder::MatchCallback {    public:      LiveListFuncs (Rewriter &R) : R(R) {} -    virtual void run(const MatchFinder::MatchResult &MR) -    { -      if (MR.Nodes.getNodeAs<clang::FunctionDecl>("livelistfuncs") != nullptr) -      { +    virtual void run(const MatchFinder::MatchResult &MR) { +      if (MR.Nodes.getNodeAs<clang::FunctionDecl>("livelistfuncs") != nullptr) {          const clang::FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("livelistfuncs");          SourceLocation SL = FD->getLocStart();          CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, R); -        if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) -        { +        if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) {            return void();          } -        if (FD->hasBody()) -        { +        if (FD->hasBody()) {            Stmt* Body = FD->getBody();            SourceLocation SLBody = Body->getLocStart();            SourceLocation SLShebang = FD->getLocStart();            PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(clang::SourceRange(SLShebang, SLBody.getLocWithOffset(-1))).c_str());            PushToLua.push_back(R.getRewrittenText(clang::SourceRange(SLShebang, SLBody.getLocWithOffset(-1)))); -        } -        else -        { +        } else {            SourceLocation SL = FD->getLocStart();            SourceLocation SLE = FD->getLocEnd();            PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(clang::SourceRange(SL, SLE)).c_str()); @@ -874,23 +722,19 @@ class LiveListFuncs : public MatchFinder::MatchCallback      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListVars : public MatchFinder::MatchCallback -{ +class LiveListVars : public MatchFinder::MatchCallback {    public:      LiveListVars (Rewriter &R) : R(R) {} -    virtual void run(const MatchFinder::MatchResult &MR) -    { -      if (MR.Nodes.getNodeAs<clang::VarDecl>("livelistvars") != nullptr) -      { +    virtual void run(const MatchFinder::MatchResult &MR) { +      if (MR.Nodes.getNodeAs<clang::VarDecl>("livelistvars") != nullptr) {          const clang::VarDecl* VD = MR.Nodes.getNodeAs<clang::VarDecl>("livelistvars");          SourceLocation SL = VD->getLocStart();          CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, R); -        if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) -        { +        if (!Devi::IsTheMatchInMainFile(MainFileOnly, MR, SL) || Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) {            return void();          } @@ -903,15 +747,12 @@ class LiveListVars : public MatchFinder::MatchCallback      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListRecords : public MatchFinder::MatchCallback -{ +class LiveListRecords : public MatchFinder::MatchCallback {    public:      LiveListRecords (Rewriter &R) : R(R) {} -    virtual void run(const MatchFinder::MatchResult &MR) -    { -      if (MR.Nodes.getNodeAs<clang::RecordDecl>("livelistvars") != nullptr) -      { +    virtual void run(const MatchFinder::MatchResult &MR) { +      if (MR.Nodes.getNodeAs<clang::RecordDecl>("livelistvars") != nullptr) {          const clang::RecordDecl* RD = MR.Nodes.getNodeAs<clang::RecordDecl>("livelistvars");          PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(SourceRange(RD->getLocStart(), RD->getLocEnd())).c_str()); @@ -924,76 +765,27 @@ class LiveListRecords : public MatchFinder::MatchCallback  };  /**********************************************************************************************************************/  /**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/  class BruiserASTConsumer : public ASTConsumer { -  public: -  BruiserASTConsumer(Rewriter &R) : HIfBreaker(R), HMainWrapper(R) -  {} - -  void HandleTranslationUnit(ASTContext &Context) override -  { -    Matcher.addMatcher(ifStmt(hasDescendant(expr(anyOf(unaryOperator().bind("uno"), binaryOperator().bind("dous"))))), &HIfBreaker); +  BruiserASTConsumer(Rewriter &R) : HMainWrapper(R) {} +  void HandleTranslationUnit(ASTContext &Context) override {      Matcher.addMatcher(functionDecl(hasName("main")).bind("mainwrapper"), &HMainWrapper); - -      Matcher.matchAST(Context);    }  private: -  IfBreaker HIfBreaker;    MainWrapper HMainWrapper;    MatchFinder Matcher;    Rewriter R;  };  /**********************************************************************************************************************/ -class LiveConsumerFactory -{ +class LiveListVarsConsumer : public ASTConsumer {    public: -    LiveConsumerFactory() {} +    LiveListVarsConsumer(Rewriter &R) : HLLVars(R) {} -    template<typename T> -      void operator()(T __consumer) -      { - -      } - -}; -/**********************************************************************************************************************/ -class LiveConsumer : public ASTConsumer -{ -  public: -    LiveConsumer(Rewriter &R) : HLLVars(R), HLLFuncs(R), HLLRecords(R) -    {} - -    void HandleTranslationUnit(ASTContext &ctx) override -    { -      Matcher.matchAST(ctx); -    } - -  private: -    MatchFinder Matcher; -    LiveListVars HLLVars; -    LiveListFuncs HLLFuncs; -    LiveListRecords HLLRecords; -    Rewriter R; -}; -/**********************************************************************************************************************/ -class LiveListVarsConsumer : public ASTConsumer -{ -  public: -    LiveListVarsConsumer(Rewriter &R) : HLLVars(R) -    {} - -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(varDecl().bind("livelistvars"), &HLLVars); -        Matcher.matchAST(ctx);      } @@ -1003,16 +795,12 @@ class LiveListVarsConsumer : public ASTConsumer      MatchFinder Matcher;  };  /**********************************************************************************************************************/ -class LiveListFuncsConsumer : public ASTConsumer -{ +class LiveListFuncsConsumer : public ASTConsumer {    public: -    LiveListFuncsConsumer(Rewriter &R) : HLLFuncs(R) -    {} +    LiveListFuncsConsumer(Rewriter &R) : HLLFuncs(R) {} -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(functionDecl().bind("livelistfuncs"), &HLLFuncs); -        Matcher.matchAST(ctx);      } @@ -1022,16 +810,12 @@ class LiveListFuncsConsumer : public ASTConsumer      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListClassConsumer : public ASTConsumer -{ +class LiveListClassConsumer : public ASTConsumer {    public: -    LiveListClassConsumer(Rewriter &R) : HLLRecords(R) -    {} +    LiveListClassConsumer(Rewriter &R) : HLLRecords(R) {} -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(recordDecl(isClass()).bind("livelistclass"), &HLLRecords); -        Matcher.matchAST(ctx);      } @@ -1041,16 +825,12 @@ class LiveListClassConsumer : public ASTConsumer      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListStructConsumer : public ASTConsumer -{ +class LiveListStructConsumer : public ASTConsumer {    public: -    LiveListStructConsumer(Rewriter &R) : HLLRecords(R) -    {} +    LiveListStructConsumer(Rewriter &R) : HLLRecords(R) {} -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(recordDecl(isStruct()).bind("liveliststruct"), &HLLRecords); -        Matcher.matchAST(ctx);      } @@ -1060,16 +840,12 @@ class LiveListStructConsumer : public ASTConsumer      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListUnionConsumer : public ASTConsumer -{ +class LiveListUnionConsumer : public ASTConsumer {    public: -    LiveListUnionConsumer(Rewriter &R) : HLLRecords(R) -    {} +    LiveListUnionConsumer(Rewriter &R) : HLLRecords(R) {} -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(recordDecl(isUnion()).bind("livelistclass"), &HLLRecords); -        Matcher.matchAST(ctx);      } @@ -1079,16 +855,12 @@ class LiveListUnionConsumer : public ASTConsumer      Rewriter R;  };  /**********************************************************************************************************************/ -class LiveListArrayConsumer : public ASTConsumer -{ +class LiveListArrayConsumer : public ASTConsumer {    public: -    LiveListArrayConsumer(Rewriter &R) : HLLVars(R) -    {} +    LiveListArrayConsumer(Rewriter &R) : HLLVars(R) {} -    void HandleTranslationUnit(ASTContext &ctx) override -    { +    void HandleTranslationUnit(ASTContext &ctx) override {        Matcher.addMatcher(varDecl(hasType(arrayType())).bind("livelistvars"), &HLLVars); -        Matcher.matchAST(ctx);      } @@ -1099,28 +871,22 @@ class LiveListArrayConsumer : public ASTConsumer  };  /**********************************************************************************************************************/  /**********************************************************************************************************************/ -/**********************************************************************************************************************/ -/**********************************************************************************************************************/ -class BlankDiagConsumer : public clang::DiagnosticConsumer -{ +class BlankDiagConsumer : public clang::DiagnosticConsumer {    public:      BlankDiagConsumer() = default;      virtual ~BlankDiagConsumer() {}      virtual void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override {}  };  /**********************************************************************************************************************/ -class BruiserFrontendAction : public ASTFrontendAction -{ +class BruiserFrontendAction : public ASTFrontendAction {  public:    BruiserFrontendAction() {} -  virtual ~BruiserFrontendAction() -  { +  virtual ~BruiserFrontendAction() {      delete BDCProto;      delete tee;    } -  void EndSourceFileAction() override -  { +  void EndSourceFileAction() override {      std::error_code EC;      std::string OutputFilename = "./libtooling-tee";      TheRewriter.getEditBuffer(TheRewriter.getSourceMgr().getMainFileID()).write(llvm::outs()); @@ -1128,8 +894,7 @@ public:      TheRewriter.getEditBuffer(TheRewriter.getSourceMgr().getMainFileID()).write(*tee);    } -  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -  { +  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {      DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();      DE.setClient(BDCProto, false);      TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1142,19 +907,16 @@ private:    raw_ostream *tee = &llvm::outs();  };  /**********************************************************************************************************************/ -class LiveActionListVars : public ASTFrontendAction -{ +class LiveActionListVars : public ASTFrontendAction {    public:      LiveActionListVars() = default; -    virtual ~LiveActionListVars() -    { +    virtual ~LiveActionListVars() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1166,19 +928,16 @@ class LiveActionListVars : public ASTFrontendAction      BlankDiagConsumer* BDCProto = new BlankDiagConsumer();  };  /**********************************************************************************************************************/ -class LiveActionListFuncs : public ASTFrontendAction -{ +class LiveActionListFuncs : public ASTFrontendAction {    public:      LiveActionListFuncs() {} -    ~LiveActionListFuncs() -    { +    ~LiveActionListFuncs() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1190,19 +949,16 @@ class LiveActionListFuncs : public ASTFrontendAction      BlankDiagConsumer* BDCProto = new BlankDiagConsumer;  };  /**********************************************************************************************************************/ -class LiveActionListStructs : public ASTFrontendAction -{ +class LiveActionListStructs : public ASTFrontendAction {    public:      LiveActionListStructs() {} -    ~LiveActionListStructs() -    { +    ~LiveActionListStructs() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1214,19 +970,16 @@ class LiveActionListStructs : public ASTFrontendAction      BlankDiagConsumer* BDCProto = new BlankDiagConsumer;  };  /**********************************************************************************************************************/ -class LiveActionListClasses : public ASTFrontendAction -{ +class LiveActionListClasses : public ASTFrontendAction {    public:      LiveActionListClasses() {} -    ~LiveActionListClasses() -    { +    ~LiveActionListClasses() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1238,19 +991,16 @@ class LiveActionListClasses : public ASTFrontendAction      BlankDiagConsumer* BDCProto = new BlankDiagConsumer;  };  /**********************************************************************************************************************/ -class LiveActionListUnions : public ASTFrontendAction -{ +class LiveActionListUnions : public ASTFrontendAction {    public:      LiveActionListUnions() {} -    ~LiveActionListUnions() -    { +    ~LiveActionListUnions() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1262,19 +1012,16 @@ class LiveActionListUnions : public ASTFrontendAction      BlankDiagConsumer* BDCProto = new BlankDiagConsumer;  };  /**********************************************************************************************************************/ -class LiveActionListArrays : public ASTFrontendAction -{ +class LiveActionListArrays : public ASTFrontendAction {    public:      LiveActionListArrays() {} -    ~LiveActionListArrays() -    { +    ~LiveActionListArrays() {        delete BDCProto;      }      void EndSourceFileAction() override {} -    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override -    { +    std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, StringRef file) override {        DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics();        DE.setClient(BDCProto, false);        TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); @@ -1288,39 +1035,31 @@ class LiveActionListArrays : public ASTFrontendAction  /**********************************************************************************************************************/  /**********************************************************************************************************************/  /*lua wrappers*/ -class LuaWrapper -{ +class LuaWrapper {    public:      //LuaWrapper(std::unique_ptr<Executioner> _e, std::unique_ptr<XGlobals> _x) : executioner(std::move(_e)), xglobals(std::move(_x)) {}      LuaWrapper() {}      /*print out the history*/ -    int BruiserLuaHistory(lua_State* __ls) -    { +    int BruiserLuaHistory(lua_State* __ls) {        std::ifstream historyfile;        historyfile.open(SHELL_HISTORY_FILE);        std::string tempstring;        unsigned int tempint = 0; -      while(std::getline(historyfile, tempstring)) -      { +      while(std::getline(historyfile, tempstring)) {          printf(BLUE"%d ", tempint);          printf(CYAN"%s", tempstring.c_str());          printf(NORMAL"\n"); -          tempint++;        } -        return tempint;      }      /*print the help menu*/ -    int BruiserLuaHelp(lua_State* __ls) -    { +    int BruiserLuaHelp(lua_State* __ls) {        unsigned int argcount = 0U; - -      for (auto &iter : bruiser::CMDHelp) -      { +      for (auto &iter : bruiser::CMDHelp) {          printf(GREEN"name: ");          printf(CYAN"%s ", iter.name.c_str());          printf(GREEN"proto: "); @@ -1341,19 +1080,16 @@ class LuaWrapper      /*print out bruiser version*/ -    int BruiserLuaVersion(lua_State* __ls) -    { +    int BruiserLuaVersion(lua_State* __ls) {          PRINT_WITH_COLOR_LB(GREEN, "bruiser experimental version something.");          PRINT_WITH_COLOR_LB(GREEN, "project mutator");          PRINT_WITH_COLOR_LB(GREEN, "GPL v3.0");          PRINT_WITH_COLOR_LB(GREEN, "bloodstalker 2017"); -          return 1;      }      /*clear the screen*/ -    int BruiserLuaClear(lua_State* __ls) -    { +    int BruiserLuaClear(lua_State* __ls) {        linenoiseClearScreen();        return 0;      } @@ -1985,42 +1721,34 @@ class LuaWrapper      }      /*read the m0 report*/ -    int BruiserLuaM0(lua_State* __ls) -    { -        bruiser::ReadM0 M0Rep; -        tinyxml2::XMLError XMLErr; - -        XMLErr = M0Rep.LoadXMLDoc(); -        if (XMLErr != XML_SUCCESS) -        { -          std::cout << RED << "could not load m0 xml report.\n" << NORMAL; -          std::cout << RED << "tinyxml2 returned " << XMLErr << NORMAL; -          return XMLErr; -        } +    int BruiserLuaM0(lua_State* __ls) { +      bruiser::ReadM0 M0Rep; +      tinyxml2::XMLError XMLErr; -        XMLErr = M0Rep.ReadFirstElement(); -        if (XMLErr != XML_SUCCESS) -        { -          std::cerr << RED << "could not read first element of m0 xml report.\n" << NORMAL; -          return XMLErr; -        } +      XMLErr = M0Rep.LoadXMLDoc(); +      if (XMLErr != XML_SUCCESS) { +        std::cout << RED << "could not load m0 xml report.\n" << NORMAL; +        std::cout << RED << "tinyxml2 returned " << XMLErr << NORMAL; +        return XMLErr; +      } -        bruiser::SearchM0(M0Rep.getRootPointer()); +      XMLErr = M0Rep.ReadFirstElement(); +      if (XMLErr != XML_SUCCESS) { +        std::cerr << RED << "could not read first element of m0 xml report.\n" << NORMAL; +        return XMLErr; +      } -        return 1; +      bruiser::SearchM0(M0Rep.getRootPointer()); +      return 1;      } -    int BruiserLuaReadXMLReport(lua_State* __ls) -    { +    int BruiserLuaReadXMLReport(lua_State* __ls) {        int numargs = lua_gettop(__ls);        std::string xml_address; -      if (numargs == 1) -      { +      if (numargs == 1) {          xml_address = lua_tostring(__ls, 1); -      } -      else -      { +      } else {          xml_address = bruiser::M0REP;        } @@ -2028,8 +1756,7 @@ class LuaWrapper        tinyxml2::XMLError error;        error = MutagenRep.LoadXMLDoc(); -      if (error != XML_SUCCESS) -      { +      if (error != XML_SUCCESS) {          PRINT_WITH_COLOR_LB(RED, "could not load report.");          PRINT_WITH_COLOR(RED, "tinyxml2 returned ");          std::cout << RED << error << NORMAL; @@ -2038,59 +1765,49 @@ class LuaWrapper        }        error = MutagenRep.ReadFirstElement(); -      if (error != XML_SUCCESS) -      { +      if (error != XML_SUCCESS) {          PRINT_WITH_COLOR_LB(RED, "could not read first element of xml report.");          lua_pushnumber(__ls, (double)error);          return 1;        }        bruiser::SearchM0(MutagenRep.getRootPointer()); -        return 1;      }      /*quit*/ -    int BruiserLuaQuit(lua_State* __ls) -    { +    int BruiserLuaQuit(lua_State* __ls) {        dostring(__ls, "os.exit()", "test");        return 0;      }      /*quit*/ -    int BruiserLuaExit(lua_State* __ls) -    { +    int BruiserLuaExit(lua_State* __ls) {        dostring(__ls, "os.exit()", "test");        return 0;      } -    int BruiserLuaRunMake(lua_State* __ls) -    { +    int BruiserLuaRunMake(lua_State* __ls) {        unsigned int args = 0U; -      if ((args = lua_gettop(__ls)) != 1U) -      { +      if ((args = lua_gettop(__ls)) != 1U) {          PRINT_WITH_COLOR_LB(RED, "function was not called by one argument. Run help().");          lua_pushnumber(__ls, 1);          return 1;        }        std::string makearg = lua_tostring(__ls , 1); - -      if (ShellGlobalInstance.MAKEPATH == "") -      { +      if (ShellGlobalInstance.MAKEPATH == "") {          PRINT_WITH_COLOR_LB(RED, "MAKEPATH is not set. set it using setmakepath or type help.");          lua_pushnumber(__ls, 1);          return 1;        }        pid_t pid = fork(); -        if (pid < 0) {          PRINT_WITH_COLOR_LB(RED, "could not fork...");          lua_pushnumber(__ls, EXIT_FAILURE);        } -        if (pid == 0) {          std::cout << BLUE << "MAKEPATH: " << ShellGlobalInstance.MAKEPATH << NORMAL << "\n";          std::cout << BLUE << "Running: " << "make -C " << ShellGlobalInstance.MAKEPATH << " " << makearg << NORMAL << "\n"; @@ -2098,7 +1815,6 @@ class LuaWrapper          lua_pushnumber(__ls, retval);          exit(EXIT_SUCCESS);        } -        if (pid > 0) {          int status;          pid_t returned; @@ -2111,14 +1827,12 @@ class LuaWrapper      int BruiserLuaChangeHistorySize(lua_State* __ls) {        unsigned int args = 0U; -        if ((args = lua_gettop(__ls)) != 1U) {          PRINT_WITH_COLOR_LB(RED, "function was not called by one argument. Run help().");          return 0;        }        unsigned int historysize = lua_tonumber(__ls, 1); -        linenoiseHistorySetMaxLen(historysize);        ShellGlobalInstance.HISTORY_SIZE = historysize; @@ -2143,9 +1857,7 @@ class LuaWrapper          if (iter.rfind(filename) == iter.size() - filename.size()) {            ShellCacheInstance.LastFileUsed = iter;            ShellCacheInstance.LastFileUsedShort = filename; -            targetfile.open(iter); -            if(targetfile.rdstate() != std::ios_base::goodbit) {              PRINT_WITH_COLOR_LB(RED, "could not open the file.");            } @@ -2176,7 +1888,6 @@ class LuaWrapper        }        pid_t pid = fork(); -        if (pid < 0) {          /*bruiser could not spawn a child*/          PRINT_WITH_COLOR_LB(RED, "could not fork a child process(m0)."); @@ -2291,7 +2002,6 @@ class LuaWrapper        }        ShellGlobalInstance.BINPATH = lua_tostring(__ls, 1); -        return 0;      } @@ -2388,8 +2098,7 @@ class LuaWrapper        return 0;      } -    int BruiserLuaPWD(lua_State* __ls) -    { +    int BruiserLuaPWD(lua_State* __ls) {        pid_t pid = fork();        if (pid < 0) { @@ -2426,13 +2135,11 @@ class BruiserCFE {          std::ifstream libtooling_tee("../test/bruisertest/libtooling-tee");          std::string luaoutstr;          std::string dummy; -          while(std::getline(libtooling_tee, dummy)) {            luaoutstr = luaoutstr + dummy + "\n";          }          lua_pushstring(__ls, luaoutstr.c_str()); -          return 1;      } @@ -2473,8 +2180,7 @@ class BruiserCFE {      std::unique_ptr<ClangTool> CT;  };  /**********************************************************************************************************************/ -class RunLoop -{ +class RunLoop {    public:      RunLoop(lua_State* __ls, LuaEngine __le) : ls(__ls), le(__le) {} @@ -2558,7 +2264,7 @@ std::pair<ClangTool*, CompilationDatabaseProcessor*> clang_cli_args(int argc, co  }  /**********************************************************************************************************************/  /*Main*/ -int main(int argc, const char **argv) { +int main(int argc, const char** argv) {    int argc_n = 0;    std::vector<std::string> argv_n;    std::vector<const char*> vc; diff --git a/bruiser/bruiser.h b/bruiser/bruiser.h index ff47919..1e54d34 100644 --- a/bruiser/bruiser.h +++ b/bruiser/bruiser.h @@ -301,59 +301,6 @@ class Daemonize  };  /**********************************************************************************************************************/  /*structs to hold load.py's return values*/ -/*@DEVI-at some point in the future i might revert to using libbfd or libelf.*/ - -/*elf*/ -#define ELF_EI_MAGIC =      0x000000000000ffff; -#define ELF_EI_CLASS =      0x00000000000f0000; -#define ELF_EI_DATA =       0x0000000000f00000; -#define ELF_EI_VERSION =    0x000000000f000000; -#define ELF_EI_OSABI =      0x00000000f0000000; -#define ELF_EI_ABIVERSION = 0x0000000f00000000; -#define ELF_EI_PAD =        0xfffffff000000000; - -// @DEVI-FIXME-using uint128 here -// fails to build on stock ubuntu 16.04 -# if 0 -struct ELFHDR_64 { -  public: -    ELFHDR_64() = default; -    ELFHDR_64(__uint128_t _ident, uint16_t _type, uint16_t _machine, -        uint32_t _version, uint64_t _entry, uint64_t _phoff,  uint64_t _shoff,  -        uint32_t _flags, uint16_t _ehsize, uint16_t _phentsize,  -        uint16_t _phnum, uint16_t _shentsize, uint16_t _shnum, uint16_t _shstrndx) { -      e_ident = _ident; e_type = _type; e_machine = _machine; e_version = _version;  -      e_entry = _entry; e_phoff = _phoff; e_shoff = _shoff; e_flags = _flags; -      e_ehsize = _ehsize; e_phentsize = _phentsize; e_phnum = _phnum; -      e_shentsize = _shentsize; e_shnum = _shnum; e_shstrndx = _shstrndx; -    } -    __uint128_t e_ident; uint16_t e_type; uint16_t e_machine; uint32_t e_version;  -    uint64_t e_entry; uint64_t e_phoff; uint64_t e_shoff; uint32_t e_flags;  -    uint16_t e_ehsize; uint16_t e_phentsize; uint16_t e_phnum; uint16_t e_shentsize;  -    uint16_t e_shnum; uint16_t e_shstrndx; -}; - -// @DEVI-FIXME-using uint128 here -struct ELFHDR_32 { -  public: -    ELFHDR_32() = default; -    ELFHDR_32(__uint128_t _ident, uint16_t _type, uint16_t _machine, uint32_t _version,  -        uint32_t _entry, uint32_t _phoff, uint32_t _shoff, uint32_t _flags,  -        uint16_t _ehsize, uint16_t _phentsize, uint16_t _phnum, uint16_t _shentsize,  -        uint16_t _shnum, uint16_t _shstrndx) { -      e_ident = _ident; e_type = _type; e_machine = _machine; e_version = _version;  -      e_entry = _entry; e_phoff = _phoff; e_shoff = _shoff; e_flags = _flags; -      e_ehsize = _ehsize; e_phentsize = _phentsize; e_phnum = _phnum; -      e_shentsize = _shentsize; e_shnum = _shnum; e_shstrndx = _shstrndx; -    } - -    __uint128_t e_ident; uint16_t e_type; uint16_t e_machine; uint32_t e_version; -    uint32_t e_entry; uint32_t e_phoff; uint32_t e_shoff; uint32_t e_flags; -    uint16_t e_ehsize; uint16_t e_phentsize; uint16_t e_phnum; uint16_t e_shentsize; -    uint16_t e_shnum; uint16_t e_shstrndx; -}; -#endif -/*program header*/  struct PHDR_64 {    public:      PHDR_64() = default; diff --git a/bruiser/lua-scripts/wasmtest.lua b/bruiser/lua-scripts/wasmtest.lua index 8942ad2..15aa395 100644 --- a/bruiser/lua-scripts/wasmtest.lua +++ b/bruiser/lua-scripts/wasmtest.lua @@ -198,6 +198,7 @@ function demo4()          io.write(v:index().."\t")          io.write(tostring(v:offset()).."\t")          io.write(v:size().."\n") +        --FIXME          --io.write(v:data().."\n")        end      end | 
