如何将环境变量传递给gem5 syscall仿真模拟?

时间:2020-06-08 07:53:44

标签: gem5

例如,我有一个测试C程序,可以打印所有环境变量:

#include <stdio.h>
#include <stdlib.h>

extern char **environ;

int main(void) {
    char **env = environ;
    while (*env) {
        printf("%s\n", *env);
        env++;
    }
    return EXIT_SUCCESS;
}

(gyazo) Example gif

但是当我在se.py syscall仿真中运行它时,它不会打印任何内容,因此我猜测gem5默认情况下在syscall仿真中设置了一个空环境,而不是继承主机的环境。

在gem5 872cb227fdc0b4d60acc7840889d567a6936b6e1上进行了测试。

1 个答案:

答案 0 :(得分:0)

通过快速se.py --help | grep -i env,我们看到:

  -e ENV, --env=ENV     Initialize workload environment from text file.

,因此以下各项将按预期工作:

printf 'a=b\nc=d\n' > env.sh
se.py -e env.sh

,测试程序将打印:

a=b
c=d

尝试使用Bash的<()表示法无效,但是gem5确实需要将其放置在常规文件中,尝试失败:

IOError: [Errno 2] No such file or directory: '/dev/fd/63'
相关问题