citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit 4333ea0b966442c213a1e3fbd4dead03dc5c916b
parent db29d4a0a248c29cdb05a31e1cbe15157d73d1aa
Author: Kyle Milz <kyle@windows.krwm.net>
Date:   Sun,  1 Jan 2017 21:34:18 -0800

src: add new function compile_instrumented

Diffstat:
Msrc/inst_frontend.cc | 19++++++++++++++++---
Msrc/inst_frontend.h | 8+++++---
Msrc/inst_main.cc | 7+------
3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/inst_frontend.cc b/src/inst_frontend.cc @@ -363,6 +363,22 @@ InstFrontend::restore_original_src() } } +void +InstFrontend::compile_instrumented() +{ + int ret; + + ret = fork_compiler(); + m_log << "Rewritten source compile " << (ret ? "failed" : "successful") + << std::endl; + + restore_original_src(); + + if (ret) + // Rewritten compile failed. Run again without modified src. + exec_compiler(); +} + // // Execute the compiler by calling execvp(3) on the m_args vector. // @@ -409,9 +425,6 @@ InstFrontend::fork_compiler() if (WIFEXITED(status)) exit = WEXITSTATUS(status); - m_log << "Rewritten source compile " << (exit ? "failed" : "successful") - << std::endl; - // Return the exit code of the native compiler. return exit; } diff --git a/src/inst_frontend.h b/src/inst_frontend.h @@ -10,14 +10,16 @@ public: void process_cmdline(); void instrument(); - int fork_compiler(); - void exec_compiler(); - void restore_original_src(); + void compile_instrumented(); private: + void log_identity(); void clean_PATH(); void save_if_srcfile(char *); void if_link_add_runtime(bool, bool); + int fork_compiler(); + void exec_compiler(); + void restore_original_src(); std::vector<char *> m_args; InstrumentLogger m_log; diff --git a/src/inst_main.cc b/src/inst_main.cc @@ -55,12 +55,7 @@ main(int argc, char *argv[]) main.process_cmdline(); main.instrument(); + main.compile_instrumented(); - ret = main.fork_compiler(); - main.restore_original_src(); - - if (ret) - // Rewritten compile failed. Run again without modified src. - main.exec_compiler(); return 0; }