From 40c665dd7bfae30be83678c06fda268eed1c8293 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Wed, 27 Oct 2004 22:37:52 -0400 Subject: [PATCH] Major documentation update for 570 F04. sim/main.cc: Get rid of default.ini processing... it's kind of a pain and nobody uses it. util/tracediff: Add comments on usage. --HG-- extra : convert_revision : b811288b2945585d60685684ea88c99d1913fbf3 --- sim/main.cc | 73 +++++++------------------------------------------- util/tracediff | 18 +++++++++++-- 2 files changed, 26 insertions(+), 65 deletions(-) diff --git a/sim/main.cc b/sim/main.cc index 76507bbd8..46738a4c7 100644 --- a/sim/main.cc +++ b/sim/main.cc @@ -111,12 +111,15 @@ static void showBriefHelp(ostream &out) { out << "Usage: " << myProgName - << " [-hnu] [-Dname[=def]] [-Uname] [-I[dir]] " - << "[--
:=] [ ...]" << endl - << " -h: print long help (including parameter listing)" << endl - << " -n: don't load default.ini" << endl - << " -u: don't quit on unreferenced parameters" << endl - << " -D,-U,-I: passed to cpp for preprocessing .ini files" << endl; + << " [-hnu] [-Dname[=def]] [-Uname] [-I[dir]] " + << " [ ...]\n" + << "[] [ ...]\n" + << " -h: print long help (including parameter listing)\n" + << " -u: don't quit on unreferenced parameters\n" + << " -D,-U,-I: passed to cpp for preprocessing .ini files\n" + << " : config file name (.ini or .py) or\n" + << " single param (--
:=)" + << endl; } /// Show verbose help message. Includes parameter listing from @@ -212,27 +215,6 @@ echoCommandLine(int argc, char **argv, ostream &out) /// static IniFile simConfigDB; -/// Check for a default.ini file and load it if necessary. -static void -handleDefaultIni(bool &loadIt, vector &cppArgs) -{ - struct stat sb; - - if (loadIt) { - if (stat("default.ini", &sb) == 0) { - if (!simConfigDB.loadCPP("default.ini", cppArgs)) { - cout << "Error processing file default.ini" << endl; - exit(1); - } - } - - // set this whether it actually was found or not, so we don't - // bother to check again next time - loadIt = false; - } -} - - /// M5 entry point. int main(int argc, char **argv) @@ -254,21 +236,13 @@ main(int argc, char **argv) vector cppArgs; - // Should we use default.ini if it exists? By default, yes. (Use - // -n to override.) - bool loadDefaultIni = true; - // Should we quit if there are unreferenced parameters? By // default, yes... it's a good way of catching typos in // section/parameter names (which otherwise go by silently). Use // -u to override. bool quitOnUnreferenced = true; - // Parse command-line options. The tricky part here is figuring - // out whether to look for & load default.ini, and if needed, - // doing so at the right time w.r.t. processing the other - // parameters. - // + // Parse command-line options. // Since most of the complex options are handled through the // config database, we don't mess with getopts, and just parse // manually. @@ -286,17 +260,6 @@ main(int argc, char **argv) showLongHelp(cerr); exit(1); - case 'n': - // -n: don't load default.ini - if (!loadDefaultIni) { - cerr << "Warning: -n option needs to precede any " - << "explicit configuration file name " << endl - << " or command-line configuration parameter." - << endl; - } - loadDefaultIni = false; - break; - case 'u': // -u: don't quit on unreferenced parameters quitOnUnreferenced = false; @@ -317,11 +280,6 @@ main(int argc, char **argv) case '-': // command-line configuration parameter: // '--
:=' - - // Load default.ini if necessary -- see comment in - // else clause below. - handleDefaultIni(loadDefaultIni, cppArgs); - if (!simConfigDB.add(arg_str + 2)) { // parse error ccprintf(cerr, @@ -350,13 +308,6 @@ main(int argc, char **argv) (ext_loc != string::npos) ? filename.substr(ext_loc) : ""; if (ext == ".ini") { - // If we haven't loaded default.ini yet, and we want to, - // now is the time. Can't do it sooner because we need to - // look for '-n', can't do it later since we want - // default.ini loaded first (so that any other settings - // override it). - handleDefaultIni(loadDefaultIni, cppArgs); - if (!simConfigDB.loadCPP(filename, cppArgs)) { cprintf("Error processing file %s\n", filename); exit(1); @@ -375,10 +326,6 @@ main(int argc, char **argv) } } - // Final check for default.ini, in case no config files or - // command-line config parameters were given. - handleDefaultIni(loadDefaultIni, cppArgs); - // The configuration database is now complete; start processing it. // Parse and check all non-config-hierarchy parameters. diff --git a/util/tracediff b/util/tracediff index ed35d5dd7..a95ce8b82 100755 --- a/util/tracediff +++ b/util/tracediff @@ -27,10 +27,20 @@ # # Authors: Steve Reinhardt -# Script to simplify using rundiff on trace outputs from two invocations of m5. +# Script to simplify using rundiff on trace outputs from two +# invocations of m5. +# +# Note that you need to enable some trace flags in the args in order +# to do anything useful! +# +# If you want to pass different arguments to the two instances of m5, +# you can embed them in the simulator arguments like this: +# +# % tracediff "m5.opt --foo:bar=1" "m5.opt --foo:bar=2" [common args] +# if (@ARGV < 2) { - die "Usage: tracediff sim1 sim2 [args...]\n"; + die "Usage: tracediff sim1 sim2 [--trace:flags=X args...]\n"; } # First two args are the two simulator binaries to compare @@ -41,6 +51,10 @@ $sim2 = shift; # be given to both invocations $simargs = '"' . join('" "', @ARGV) . '"'; +# Redirect config output to cout so that gets diffed too (in case +# that's the source of the problem). +$simargs += " --Universe:config_output_file=cout"; + $cmd1 = "$sim1 $simargs --stats:text_file=tracediff-$$-1.stats 2>&1 |"; $cmd2 = "$sim2 $simargs --stats:text_file=tracediff-$$-2.stats 2>&1 |";