如何将环境变量传递给 gem5 系统调用仿真模拟?



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

#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main(void) {
char **env = environ;
while (*env) {
printf("%sn", *env);
env++;
}
return EXIT_SUCCESS;
}

GitHub 上游

但是当我在 se.py 系统调用仿真中运行它时,它不会打印任何内容,所以我猜测 gem5 默认在系统调用仿真中设置了一个空环境,而不是继承主机的环境。

在 gem5 872cb227fdc0b4d60acc7840889d567a6936b6e1 上测试。

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

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

因此,以下内容按预期工作:

printf 'a=bnc=dn' > env.sh
se.py -e env.sh

并且测试程序打印:

a=b
c=d

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

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

最新更新