commit ef7d1fccdd5ebca036aed2c4074d237e22841450
parent b76041423d469eb31e5ba5c7b9828e27a67a2db7
Author: Kyle Milz <kyle@0x30.net>
Date: Sun, 7 Aug 2016 18:25:06 -0600
src: give main a header file
Diffstat:
3 files changed, 65 insertions(+), 60 deletions(-)
diff --git a/src/inst_action.h b/src/inst_action.h
@@ -44,21 +44,3 @@ private:
std::string m_pfx;
bool m_is_citruninst;
};
-
-class InstrumentActionFactory : public clang::tooling::FrontendActionFactory {
-public:
- InstrumentActionFactory(llvm::raw_fd_ostream *log, std::string const &pfx, bool citruninst) :
- m_log(log),
- m_pfx(pfx),
- m_is_citruninst(citruninst)
- {};
-
- clang::ASTFrontendAction *create() {
- return new InstrumentAction(m_log, m_pfx, m_is_citruninst);
- }
-
-private:
- llvm::raw_fd_ostream *m_log;
- std::string m_pfx;
- bool m_is_citruninst;
-};
diff --git a/src/inst_main.cc b/src/inst_main.cc
@@ -29,42 +29,30 @@
#include <libgen.h> // basename
#include <iostream>
#include <sstream> // stringstream
-#include <string>
#include <unistd.h> // execvp, fork, getpid, unlink
#include "lib/runtime.h" // citrun_major, citrun_minor
-#include "inst_action.h" // InstrumentAction
+#include "inst_main.h"
#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)
static llvm::cl::OptionCategory ToolingCategory("citrun-inst options");
-class CitrunInst {
-public:
- CitrunInst(int, char *argv[]);
-
- void clean_PATH();
- void process_cmdline();
- int instrument();
- int compile_modified();
-
-private:
- void exec_compiler();
- int fork_compiler();
- void restore_original_src();
- void save_if_srcfile(char *);
- int try_unmodified_compile();
-
- std::vector<char *> m_args;
- std::vector<std::string> m_source_files;
- std::map<std::string, std::string> m_temp_file_map;
- std::error_code m_ec;
- llvm::raw_fd_ostream m_log;
- pid_t m_pid;
- std::string m_pfx;
- bool m_is_citruninst;
-};
+int
+main(int argc, char *argv[])
+{
+ CitrunInst main(argc, argv);
+
+ main.clean_PATH();
+
+ main.process_cmdline();
+
+ if (main.instrument())
+ return 1;
+
+ return main.compile_modified();
+}
CitrunInst::CitrunInst(int argc, char *argv[]) :
m_args(argv, argv + argc),
@@ -392,18 +380,3 @@ CitrunInst::compile_modified()
return ret;
}
-
-int
-main(int argc, char *argv[])
-{
- CitrunInst main(argc, argv);
-
- main.clean_PATH();
-
- main.process_cmdline();
-
- if (main.instrument())
- return 1;
-
- return main.compile_modified();
-}
diff --git a/src/inst_main.h b/src/inst_main.h
@@ -0,0 +1,50 @@
+#include <string>
+
+#include "inst_action.h" // InstrumentAction
+
+class CitrunInst {
+public:
+ CitrunInst(int, char *argv[]);
+
+ void clean_PATH();
+ void process_cmdline();
+ int instrument();
+ int compile_modified();
+
+private:
+ void exec_compiler();
+ int fork_compiler();
+ void restore_original_src();
+ void save_if_srcfile(char *);
+ int try_unmodified_compile();
+
+ std::vector<char *> m_args;
+ std::vector<std::string> m_source_files;
+ std::map<std::string, std::string> m_temp_file_map;
+ std::error_code m_ec;
+ llvm::raw_fd_ostream m_log;
+ pid_t m_pid;
+ std::string m_pfx;
+ bool m_is_citruninst;
+};
+
+//
+// Needed because we pass custom stuff down into the ASTFrontendAction
+//
+class InstrumentActionFactory : public clang::tooling::FrontendActionFactory {
+public:
+ InstrumentActionFactory(llvm::raw_fd_ostream *log, std::string const &pfx, bool citruninst) :
+ m_log(log),
+ m_pfx(pfx),
+ m_is_citruninst(citruninst)
+ {};
+
+ clang::ASTFrontendAction *create() {
+ return new InstrumentAction(m_log, m_pfx, m_is_citruninst);
+ }
+
+private:
+ llvm::raw_fd_ostream *m_log;
+ std::string m_pfx;
+ bool m_is_citruninst;
+};