diff options
author | fche <fche> | 2006-01-24 17:58:02 +0000 |
---|---|---|
committer | fche <fche> | 2006-01-24 17:58:02 +0000 |
commit | cbfbbf6996cbe3b9fe57ac2014aa7262bb6890d6 (patch) | |
tree | 89b507411bd828b12142f0962be3eb4a33c3a45d /buildrun.cxx | |
parent | 46746514a6943520ff73b6f77d35477e2abb30ba (diff) | |
download | systemtap-steved-cbfbbf6996cbe3b9fe57ac2014aa7262bb6890d6.tar.gz systemtap-steved-cbfbbf6996cbe3b9fe57ac2014aa7262bb6890d6.tar.xz systemtap-steved-cbfbbf6996cbe3b9fe57ac2014aa7262bb6890d6.zip |
2006-01-24 Frank Ch. Eigler <fche@elastic.org>
PR 2060 etc.
* tapsets.cxx (visit_target_symbol): Tolerate failed resolution by
letting target_symbol instance pass through to optimizer and
type checker.
* elaborate.cxx (semantic_pass_optimize): New family of functions and
associated visitor classes.
(visit_for_loop): Tolerate absent init/incr clauses.
(semantic_pass): Invoke unless unoptimized (-u) option given.
* main.cxx, session.h: Add support for flag.
* staptree.cxx (visit_for_loop): Tolerate absent init/incr clauses.
(traversing_visitor::visit_arrayindex): Visit the index expressions.
(functioncall_traversing_visitor): New class.
(varuse_tracking_visitor): New class.
* staptree.h: Corresponding changes.
* parse.cxx (parse_for_loop): Represent absent init/incr expressions
with null statement pointer instead of optimized-out dummy numbers.
* stap.1.in: Document optimization.
* testsuite/{semko,transko}/*.stp: Added "-u" or other code to many
tests to check bad code without optimizer elision.
* testsuite/semok/optimize.stp: New test.
* elaborate.cxx (unresolved, invalid, mismatch): Standardize error
message wording.
* stapfuncs.5.in: Tweak print/printf docs.
* tapset/logging.stp: Remove redundant "print" auxiliary function,
since it's a translator built-in.
* testsuite/transok/five.stp: Extend test.
* translate.cxx (emit_symbol_data): Put symbol table into a separate
temporary header file, to make "-p3" output easier on the eyes.
* buildrun.cxx (compile_pass): Eliminate test-mode support throughout.
* main.cxx, session.h, translate.cxx: Ditto.
* main.cxx (main): For last-pass=2 runs, print post-optimization ASTs.
Diffstat (limited to 'buildrun.cxx')
-rw-r--r-- | buildrun.cxx | 141 |
1 files changed, 48 insertions, 93 deletions
diff --git a/buildrun.cxx b/buildrun.cxx index d678e874..744ff988 100644 --- a/buildrun.cxx +++ b/buildrun.cxx @@ -69,69 +69,34 @@ compile_pass (systemtap_session& s) // XXX // o << "CFLAGS += -ftime-report" << endl; - if (s.test_mode) - { - string module_dir = string("/lib/modules/") - + s.kernel_release + "/build"; - - o << "CFLAGS += -I \"" << module_dir << "/include\"" << endl; - o << "CFLAGS += -I \"" << s.runtime_path << "/user\"" << endl; - o << "CFLAGS += -I \"" << s.runtime_path << "\"" << endl; - o << "CFLAGS += -I \"" << module_dir << "/include/asm/mach-default\"" << endl; - o << s.module_name << ": " << s.translated_source << endl; - o << "\t$(CC) $(CFLAGS) -o " << s.module_name - << " " << s.translated_source << endl; - } - else - { - // Assumes linux 2.6 kbuild - o << "CFLAGS += -Wno-unused -Werror" << endl; - o << "CFLAGS += -I \"" << s.runtime_path << "\"" << endl; - o << "CFLAGS += -I \"" << s.runtime_path << "/relayfs\"" << endl; - o << "obj-m := " << s.module_name << ".o" << endl; - } + // Assumes linux 2.6 kbuild + o << "CFLAGS += -Wno-unused -Werror" << endl; + o << "CFLAGS += -I \"" << s.runtime_path << "\"" << endl; + o << "CFLAGS += -I \"" << s.runtime_path << "/relayfs\"" << endl; + o << "obj-m := " << s.module_name << ".o" << endl; o.close (); // Run make - if (s.test_mode) - { - string make_cmd = string("make -C \"") + s.tmpdir + "\""; - - if (s.verbose) - make_cmd += " V=1"; - else - make_cmd += " -s >/dev/null 2>&1"; - - if (s.verbose) clog << "Running " << make_cmd << endl; - rc = system (make_cmd.c_str()); - - if (s.verbose) clog << "Pass 4: compiled into \"" - << s.module_name - << "\"" << endl; - } + string module_dir = string("/lib/modules/") + + s.kernel_release + "/build"; + string make_cmd = string("make") + + string (" -C \"") + module_dir + string("\""); + make_cmd += string(" M=\"") + s.tmpdir + string("\" modules"); + + if (s.verbose) + make_cmd += " V=1"; else - { - string module_dir = string("/lib/modules/") - + s.kernel_release + "/build"; - string make_cmd = string("make") - + string (" -C \"") + module_dir + string("\""); - make_cmd += string(" M=\"") + s.tmpdir + string("\" modules"); - - if (s.verbose) - make_cmd += " V=1"; - else - make_cmd += " -s >/dev/null 2>&1"; - - if (s.verbose) clog << "Running " << make_cmd << endl; - rc = system (make_cmd.c_str()); - - - if (s.verbose) clog << "Pass 4: compiled into \"" - << s.module_name << ".ko" - << "\"" << endl; - } - + make_cmd += " -s >/dev/null 2>&1"; + + if (s.verbose) clog << "Running " << make_cmd << endl; + rc = system (make_cmd.c_str()); + + + if (s.verbose) clog << "Pass 4: compiled into \"" + << s.module_name << ".ko" + << "\"" << endl; + return rc; } @@ -141,41 +106,31 @@ run_pass (systemtap_session& s) { int rc = 0; - if (s.test_mode) - { - string run_cmd = s.tmpdir + "/" + s.module_name; - - if (s.verbose) clog << "Running " << run_cmd << endl; - rc = system (run_cmd.c_str ()); - } - else // real run - { - // for now, just spawn stpd - string stpd_cmd = string("sudo ") - + string(PKGLIBDIR) + "/stpd " - + (s.bulk_mode ? "" : "-r ") - + (s.verbose ? "" : "-q ") - + (s.output_file.empty() ? "" : "-o " + s.output_file + " "); - - stpd_cmd += "-d " + stringify(getpid()) + " "; - - if (s.cmd != "") - stpd_cmd += "-c \"" + s.cmd + "\" "; - - if (s.target_pid) - stpd_cmd += "-t " + stringify(s.target_pid) + " "; - - if (s.buffer_size) - stpd_cmd += "-b " + stringify(s.buffer_size) + " "; - - stpd_cmd += s.tmpdir + "/" + s.module_name + ".ko"; - - if (s.verbose) clog << "Running " << stpd_cmd << endl; - - signal (SIGHUP, SIG_IGN); - signal (SIGINT, SIG_IGN); - rc = system (stpd_cmd.c_str ()); - } + // for now, just spawn stpd + string stpd_cmd = string("sudo ") + + string(PKGLIBDIR) + "/stpd " + + (s.bulk_mode ? "" : "-r ") + + (s.verbose ? "" : "-q ") + + (s.output_file.empty() ? "" : "-o " + s.output_file + " "); + + stpd_cmd += "-d " + stringify(getpid()) + " "; + + if (s.cmd != "") + stpd_cmd += "-c \"" + s.cmd + "\" "; + + if (s.target_pid) + stpd_cmd += "-t " + stringify(s.target_pid) + " "; + + if (s.buffer_size) + stpd_cmd += "-b " + stringify(s.buffer_size) + " "; + + stpd_cmd += s.tmpdir + "/" + s.module_name + ".ko"; + + if (s.verbose) clog << "Running " << stpd_cmd << endl; + + signal (SIGHUP, SIG_IGN); + signal (SIGINT, SIG_IGN); + rc = system (stpd_cmd.c_str ()); return rc; } |