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
This commit is contained in:
parent
30ad202a31
commit
93e60de656
3 changed files with 8 additions and 2 deletions
|
@ -6,6 +6,7 @@ class Process(SimObject):
|
||||||
|
|
||||||
class LiveProcess(Process):
|
class LiveProcess(Process):
|
||||||
type = 'LiveProcess'
|
type = 'LiveProcess'
|
||||||
|
executable = Param.String('', "executable (overrides cmd[0] if set)")
|
||||||
cmd = VectorParam.String("command line (executable plus arguments)")
|
cmd = VectorParam.String("command line (executable plus arguments)")
|
||||||
env = VectorParam.String('', "environment settings")
|
env = VectorParam.String('', "environment settings")
|
||||||
input = Param.String('cin', "filename for stdin")
|
input = Param.String('cin', "filename for stdin")
|
||||||
|
|
|
@ -342,12 +342,13 @@ LiveProcess::LiveProcess(const string &nm, ObjectFile *objFile,
|
||||||
LiveProcess *
|
LiveProcess *
|
||||||
LiveProcess::create(const string &nm,
|
LiveProcess::create(const string &nm,
|
||||||
int stdin_fd, int stdout_fd, int stderr_fd,
|
int stdin_fd, int stdout_fd, int stderr_fd,
|
||||||
|
string executable,
|
||||||
vector<string> &argv, vector<string> &envp)
|
vector<string> &argv, vector<string> &envp)
|
||||||
{
|
{
|
||||||
LiveProcess *process = NULL;
|
LiveProcess *process = NULL;
|
||||||
ObjectFile *objFile = createObjectFile(argv[0]);
|
ObjectFile *objFile = createObjectFile(executable);
|
||||||
if (objFile == NULL) {
|
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
|
// check object type & set up syscall emulation pointer
|
||||||
|
@ -384,6 +385,7 @@ LiveProcess::create(const string &nm,
|
||||||
BEGIN_DECLARE_SIM_OBJECT_PARAMS(LiveProcess)
|
BEGIN_DECLARE_SIM_OBJECT_PARAMS(LiveProcess)
|
||||||
|
|
||||||
VectorParam<string> cmd;
|
VectorParam<string> cmd;
|
||||||
|
Param<string> executable;
|
||||||
Param<string> input;
|
Param<string> input;
|
||||||
Param<string> output;
|
Param<string> output;
|
||||||
VectorParam<string> env;
|
VectorParam<string> env;
|
||||||
|
@ -394,6 +396,7 @@ END_DECLARE_SIM_OBJECT_PARAMS(LiveProcess)
|
||||||
BEGIN_INIT_SIM_OBJECT_PARAMS(LiveProcess)
|
BEGIN_INIT_SIM_OBJECT_PARAMS(LiveProcess)
|
||||||
|
|
||||||
INIT_PARAM(cmd, "command line (executable plus arguments)"),
|
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(input, "filename for stdin (dflt: use sim stdin)"),
|
||||||
INIT_PARAM(output, "filename for stdout/stderr (dflt: use sim stdout)"),
|
INIT_PARAM(output, "filename for stdout/stderr (dflt: use sim stdout)"),
|
||||||
INIT_PARAM(env, "environment settings")
|
INIT_PARAM(env, "environment settings")
|
||||||
|
@ -425,6 +428,7 @@ CREATE_SIM_OBJECT(LiveProcess)
|
||||||
|
|
||||||
return LiveProcess::create(getInstanceName(),
|
return LiveProcess::create(getInstanceName(),
|
||||||
stdin_fd, stdout_fd, stderr_fd,
|
stdin_fd, stdout_fd, stderr_fd,
|
||||||
|
(string)executable == "" ? cmd[0] : executable,
|
||||||
cmd, env);
|
cmd, env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -194,6 +194,7 @@ class LiveProcess : public Process
|
||||||
// open and look at the object file.
|
// open and look at the object file.
|
||||||
static LiveProcess *create(const std::string &nm,
|
static LiveProcess *create(const std::string &nm,
|
||||||
int stdin_fd, int stdout_fd, int stderr_fd,
|
int stdin_fd, int stdout_fd, int stderr_fd,
|
||||||
|
std::string executable,
|
||||||
std::vector<std::string> &argv,
|
std::vector<std::string> &argv,
|
||||||
std::vector<std::string> &envp);
|
std::vector<std::string> &envp);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue