警告:在简单的 gem5 模拟过程中忽略系统调用 mprotect(...)

warn: ignoring syscall mprotect(...) during simple gem5 simulation

我为 X86 构建了 gem5,并且是 运行 简单的配置和二进制文件。更具体地说,我正在使用以下配置文件 gem5/configs/learning_gem5/part1/two_level.py 当我使用 gem5/tests/test-progs/hello/bin/x86/linux/hello 等官方提供的二进制文件时,它会在没有任何警告的情况下给出 Hello World 输出。如下

Beginning simulation!
info: Entering event queue @ 0.  Starting simulation...
Hello world!
Exiting @ tick 57562000 because exiting with last active thread context

然而,当我编写和编译简单的 hello world 示例时,模拟的输出仍然有效,但它给出了一些警告并且需要更多的时间。作为,

Beginning simulation!
info: Entering event queue @ 0.  Starting simulation...
warn: ignoring syscall access(...)
info: Increasing stack size by one page.
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
warn: ignoring syscall mprotect(...)
Hello - Custom
Exiting @ tick 883281000 because exiting with last active thread context

这是什么原因?有没有办法解决这些警告,以便我的自定义编码二进制文件花费更少的时间(或滴答)?

系统调用未实现,但 gem5 开发人员决定通常不需要程序正常 运行,因此标记为忽略而不是崩溃。系统调用在 SE 模式下始终为 1 个滴答,因此实现它通常不会产生太大影响,除非您有充分的理由相信由于调用的 side-effects 而不是这样。另见: