aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorduneroadrunner <duneroadrunner@gmail.com>2017-06-10 00:04:19 +0000
committerduneroadrunner <duneroadrunner@gmail.com>2017-06-10 00:04:19 +0000
commit7b6690ade38bbec1a550e5468904c0772c66ea41 (patch)
tree2dfb402f1bcf3d1a6a3b8b42fbcb24f77546ec73
parentadded insertion of "#include" directives (diff)
parentnow includes luajit (diff)
downloadmutator-7b6690ade38bbec1a550e5468904c0772c66ea41.tar.gz
mutator-7b6690ade38bbec1a550e5468904c0772c66ea41.zip
Merge branch 'master' of https://github.com/bloodstalker/mutator
-rw-r--r--.gitmodules3
m---------bruiser/LuaJIT0
-rw-r--r--bruiser/bruiser.cpp245
3 files changed, 5 insertions, 243 deletions
diff --git a/.gitmodules b/.gitmodules
index c5242ab..b4dd2d7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "bruiser/linenoise"]
path = bruiser/linenoise
url = https://github.com/antirez/linenoise
+[submodule "bruiser/LuaJIT"]
+ path = bruiser/LuaJIT
+ url = https://github.com/LuaJIT/LuaJIT
diff --git a/bruiser/LuaJIT b/bruiser/LuaJIT
new file mode 160000
+Subproject 630ff3196a06353c6a7ccd1e9ac3958f4a8ca13
diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp
index 12cbea0..d9c0f66 100644
--- a/bruiser/bruiser.cpp
+++ b/bruiser/bruiser.cpp
@@ -924,6 +924,7 @@ class LuaWrapper
#define LIST_GENERATOR(__x1) \
int List##__x1(lua_State* __ls)\
{\
+ assert(PushToLua.size() == 0);\
unsigned int InArgCnt = 0U;\
InArgCnt = lua_gettop(__ls);\
unsigned int returncount=0U;\
@@ -979,20 +980,6 @@ int LuaDispatch(lua_State* __ls)
/*Main*/
int main(int argc, const char **argv)
{
- int RunResult;
- bruiser::ShellHistory shHistory;
-
- std::regex listcommand("^list\\s");
- std::regex listfuncs("^list\\sfuncs$");
- std::regex listvars("^list\\svars$");
- std::regex listarrays("^list\\sarrays$");
- std::regex listrecords("^list\\srecords$");
- std::regex listclasses("^list\\sclasses$");
- std::regex liststructs("^list\\sstructs$$");
- std::regex listunions("^list\\sunions$$");
- std::regex dumplist("^list\\sdump\\s");
- std::smatch smresult;
-
/*gets the compilation database and options for the clang instances that we would later run*/
CommonOptionsParser op(argc, argv, BruiserCategory);
ClangTool Tool(op.getCompilations(), op.getSourcePathList());
@@ -1034,238 +1021,10 @@ int main(int argc, const char **argv)
linenoiseHistoryAdd(command);
linenoiseHistorySave(SHELL_HISTORY_FILE);
LE.RunChunk(command);
+ linenoiseFree(command);
}
/*end of bruiser main*/
-
- while((command = linenoise("bruiser>>")) != NULL)
- {
- linenoiseHistoryAdd(command);
- linenoiseHistorySave(SHELL_HISTORY_FILE);
-
- std::string dummy_string(command);
-
- shHistory.History.push_back(command);
-
- if (std::regex_search(dummy_string, smresult, listcommand))
- {
- if (std::regex_search(dummy_string, smresult, listfuncs))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListFuncs>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, listvars))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListVars>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, listarrays))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListArrays>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, listclasses))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListClasses>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, liststructs))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListStructs>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, listunions))
- {
- RunResult = Tool.run(newFrontendActionFactory<LiveActionListUnions>().get());
- continue;
- }
-
- if (std::regex_search(dummy_string, smresult, listrecords))
- {
- NOT_IMPLEMENTED;
- continue;
- }
- }
-
- if (std::strcmp(command, "exit") == 0 || std::strcmp(command, "quit") == 0)
- {
- return 0;
- }
-
- if (std::strcmp(command, "m0") == 0)
- {
- BruiseRep.PrintToLog("bruiser exited with:");
- BruiseRep.PrintToLog(RunResult);
-
- 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;
- }
-
- XMLErr = M0Rep.ReadFirstElement();
- if (XMLErr != XML_SUCCESS)
- {
- std::cerr << RED << "could not read first element of m0 xml report.\n" << NORMAL;
- return XMLErr;
- }
-
- bruiser::SearchM0(M0Rep.getRootPointer());
- continue;
- }
-
- if (std::strcmp(command, "hijack main") == 0)
- {
-
- RunResult = Tool.run(newFrontendActionFactory<BruiserFrontendAction>().get());
- //std::cout << CYAN <<"hijacking main returned " << RunResult << "\n" << NORMAL;
- printf(CYAN"hijacking main returned %d", RunResult);
- printf(NORMAL"\n");
- continue;
- }
-
- if (std::strcmp(command, "list") == 0)
- {
-
- }
-
- if (std::strcmp(command, "clear") == 0)
- {
- linenoiseClearScreen();
- //std::cout << CLEAR;
- continue;
- }
-
- if (std::strcmp(command, "shell") == 0)
- {
- system("bash -i");
- continue;
- }
-
- if (std::strcmp(command, "help") == 0)
- {
-
- for (auto &iter : bruiser::CMDHelp)
- {
- printf(GREEN"%s:%s:%s",iter.name.c_str(),iter.proto.c_str(),iter.descr.c_str());
- printf(NORMAL"\n");
- }
-
- std::cout << NORMAL;
-
- continue;
- }
-
- if (std::strcmp(command, "history") == 0)
- {
- std::ifstream historyfile;
- historyfile.open(SHELL_HISTORY_FILE);
-
- std::string tempstring;
- unsigned int tempint = 0;
- while(std::getline(historyfile, tempstring))
- {
- printf(GREEN"%d - %s", tempint, tempstring.c_str());
- printf(NORMAL"\n");
-
- tempint++;
- }
-
- continue;
- }
-
- if (std::strcmp(command, "version") == 0)
- {
- PRINT_WITH_COLOR_LB(GREEN, "bruiser experimental version something.");
- PRINT_WITH_COLOR_LB(GREEN, "project mutator");
- PRINT_WITH_COLOR_LB(GREEN, "GPL v2.0");
- PRINT_WITH_COLOR_LB(GREEN, "bloodstalker 2017");
- continue;
- }
-
- if (std::strcmp(command, "runlua") == 0)
- {
- LuaEngine LE;
- LE.LoadEverylib();
- LE.Test();
- //LE.Cleanup();
- continue;
- }
-
-#if 1
- if (std::strcmp(command, "runluachain1") == 0)
- {
- LuaEngine LE;
- LE.LoadEverylib();
- LE.Test2();
- //LE.Cleanup();
- continue;
- }
-
- if (std::strcmp(command, "runluachain2") == 0)
- {
- LuaEngine LE;
- LE.LoadEverylib();
- LE.Test3();
- //LE.Cleanup();
- continue;
- }
-#endif
-
- if (command[0] == '!')
- {
- /*FIXME*/
- std::string cut_string;
- unsigned int command_number;
- cut_string = dummy_string.substr(1, dummy_string.length());
- command_number = std::stoi(cut_string, 0, 10);
-
- if (command_number > SHELL_HISTORY_SIZE - 1)
- {
- PRINT_WITH_COLOR_LB(RED, "the command number provided is bigger than SHELL_HISTORY_SIZE");
- }
- else
- {
- std::ifstream historyfile;
- historyfile.open(SHELL_HISTORY_FILE);
- std::string tempstring;
- unsigned int tempint = 0;
-
- while(std::getline(historyfile, tempstring))
- {
- if (tempint == command_number)
- {
- PRINT_WITH_COLOR_LB(NORMAL, tempstring.c_str());
- break;
- }
-
- tempint++;
- }
- }
-
- continue;
- }
-
- if (command != NULL)
- {
- printf(BLUE"unknown command. run help" NORMAL "\n");
- //PRINT_WITH_COLOR_LB(BLUE, "unknown command. run help");
- //std::cout << RED << "unknown command. run help.\n" << NORMAL;
- }
-
- linenoiseFree(command);
- } // end of while
-
return 0;
} //end of cli block