To add to my previous message re: "buried very far behind the functionality of
the MMU", I wouldn't say the old SE address translation went very far in terms
of basic fidelity, and I am wondering whether the new design is making things
better.
For example. Consider the following:
char *hello = "Hello";
main() {
hello[0] = 'A';
return hello[0];
}
This will compile to something like
.section rodata
hello:
.string "Hello"
On every machine I tried this (of various ISAs including ppc32, mips32, amd64
and riscv64), the segment gets loaded into a R/O page, resulting in segfault.
gem5's SE treats all memory as R/W, so the above program happily exits with
code 65.
For me, this has been a problem for a while (illegal page access is one of the
most critical elements of our guest workload), so I've been doing various
workarounds but have always looking towards one day implementing a trap
returning an actual "S05" to the controlling GDB. So I'd like to understand.
Is this latest change, in tune with allowing to mark those pages that are
marked r/o in the ELF as r/o for the proxy's translation? In which place in
the code should this marking be added?
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev