警告:在简单的gem5模拟过程中忽略syscall mprotect...

问题描述

我为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个滴答,因此,除非您有充分的理由由于调用的副作用而相信,否则实现它通常不会有太大的区别。另请参阅:gem5 syscall emulation arm C hello world fails with "fatal: syscall gettid (#224) unimplemented"