util: Add a unit test for the "addr" call type in the m5 util.
authorGabe Black <gabe.black@gmail.com>
Fri, 23 Oct 2020 03:00:44 +0000 (20:00 -0700)
committerGabe Black <gabe.black@gmail.com>
Tue, 3 Nov 2020 01:59:30 +0000 (01:59 +0000)
commit958be915082e9bd5ccfde2a2f0cf2be2aa024b41
treeb37c3b7ab7d2a46748944119df798cb30790fa6b
parent831cda0965d87635930e46ac024c2bd8c3f5593a
util: Add a unit test for the "addr" call type in the m5 util.

This verifies that the slightly more complex --addr command line option
behaves as expected.

Also, like the inst and semi call type unit tests, it will either
attempt to successfully perform a call to the "sum" m5 op if it's told
it's running under gem5, or it will attempt to catch itself failing to
run that command by using mprotect to block its access to the mmap-ed
region and then looks at the siginfo_t to make sure the attempted access
was to the right place, etc.

It also will attempt to verify the details of the mmap if possible by
looking up information about its own mmap-ings in /proc. If the file it
would expect to find the mappings in doesn't exist, it prints a warning
and gives up. If it does, it looks through it to find the line
corresponding to the m5 ops, and then checks some details of the mapping
like its size and its offset in the target file. The offset would
correspond to the physical address if using the real /dev/mem.

Change-Id: Icc14cd9ac02eae93c56f1f2aa78fd67d8540a2f2
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27751
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
util/m5/src/call_type/addr.test.cc