diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2005-10-01 16:02:47 -0400 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2005-10-01 16:02:47 -0400 |
commit | 93e60de65647f3324e59b291c35ef2cf3a0fb9a0 (patch) | |
tree | 6c4f77185a157d91487c9ca46c4e77ace17a7b5a | |
parent | 30ad202a31c99198b5ecf3c30dbd6e594a464dbf (diff) | |
download | gem5-93e60de65647f3324e59b291c35ef2cf3a0fb9a0.tar.xz |
Add executable parameter to LiveProcess. This allows the argv[0] value to
stay fixed even if the path to the binary changes, so the simulation results
are independent of that path.
--HG--
extra : convert_revision : d1109cd284466c14eddc97289908a51e771fc5db
-rw-r--r-- | python/m5/objects/Process.py | 1 | ||||
-rw-r--r-- | sim/process.cc | 8 | ||||
-rw-r--r-- | sim/process.hh | 1 |
3 files changed, 8 insertions, 2 deletions
diff --git a/python/m5/objects/Process.py b/python/m5/objects/Process.py index 17a66c6d9..b4ccc1bec 100644 --- a/python/m5/objects/Process.py +++ b/python/m5/objects/Process.py @@ -6,6 +6,7 @@ class Process(SimObject): class LiveProcess(Process): type = 'LiveProcess' + executable = Param.String('', "executable (overrides cmd[0] if set)") cmd = VectorParam.String("command line (executable plus arguments)") env = VectorParam.String('', "environment settings") input = Param.String('cin', "filename for stdin") diff --git a/sim/process.cc b/sim/process.cc index ee5d347a1..b04582233 100644 --- a/sim/process.cc +++ b/sim/process.cc @@ -342,12 +342,13 @@ LiveProcess::LiveProcess(const string &nm, ObjectFile *objFile, LiveProcess * LiveProcess::create(const string &nm, int stdin_fd, int stdout_fd, int stderr_fd, + string executable, vector<string> &argv, vector<string> &envp) { LiveProcess *process = NULL; - ObjectFile *objFile = createObjectFile(argv[0]); + ObjectFile *objFile = createObjectFile(executable); if (objFile == NULL) { - fatal("Can't load object file %s", argv[0]); + fatal("Can't load object file %s", executable); } // check object type & set up syscall emulation pointer @@ -384,6 +385,7 @@ LiveProcess::create(const string &nm, BEGIN_DECLARE_SIM_OBJECT_PARAMS(LiveProcess) VectorParam<string> cmd; + Param<string> executable; Param<string> input; Param<string> output; VectorParam<string> env; @@ -394,6 +396,7 @@ END_DECLARE_SIM_OBJECT_PARAMS(LiveProcess) BEGIN_INIT_SIM_OBJECT_PARAMS(LiveProcess) INIT_PARAM(cmd, "command line (executable plus arguments)"), + INIT_PARAM(executable, "executable (overrides cmd[0] if set)"), INIT_PARAM(input, "filename for stdin (dflt: use sim stdin)"), INIT_PARAM(output, "filename for stdout/stderr (dflt: use sim stdout)"), INIT_PARAM(env, "environment settings") @@ -425,6 +428,7 @@ CREATE_SIM_OBJECT(LiveProcess) return LiveProcess::create(getInstanceName(), stdin_fd, stdout_fd, stderr_fd, + (string)executable == "" ? cmd[0] : executable, cmd, env); } diff --git a/sim/process.hh b/sim/process.hh index ef54ced78..28c16a444 100644 --- a/sim/process.hh +++ b/sim/process.hh @@ -194,6 +194,7 @@ class LiveProcess : public Process // open and look at the object file. static LiveProcess *create(const std::string &nm, int stdin_fd, int stdout_fd, int stderr_fd, + std::string executable, std::vector<std::string> &argv, std::vector<std::string> &envp); }; |