After https://gem5.atlassian.net/browse/GEM5-337:
- gem5 baremetal can run without any disk images, just like QEMU
- gem5 X86 can run with a single disk image and no horrendous dummy vmlinux
and second disk image
This notably allow dynamic linking to work! Move entire README to it.
Also:
- explain what Dhrystone does and run it on gem5 to get DMIPS
- create getprops
- ./test-executables don't test files that start with "tmp."
The option was hard to understand, and this would cause ambiguity
if we ever support something else with the same option, e.g. rootfs
or userland executables.
Was completely broken due to confusion between --gem5-readfile and a common
variable with the same name which referred to the file path... OMG.
Conclusion: no one has ever used this tutorial!
Improve ./gem5.sh documentation.
Also fix ./gem5-bench-dhrystone.
It is a dilemma to do this or not, since all other test execs are
not in /bin, but I'll go with "this is not just a random test program" for
now. Let's see.
Checkpointing: correctly sort fs.py checkpoints numerically, was only
working previously due to coincidence.
Selection with --mode userland (default because has x86_64) or --mode baremetal.
This is the first userland tool where this choice is done on the command line,
which led to a refactor of supported_archs and is_baremetal and is_userland
into a single self.env['mode'].
Previously had wonky line pointer in asm_main. New interface simpler and more portable.
Add tests for ASSERT_EQ_ and family in arm and aarch64, previously on x86_64.
ASSERT_EQ_ and family in ARM can now either take =123, =addr or var, before this
the = was added on macros so var was not possible.
Define the main function directly in assembly, the C driver was useless.
--quit-after-boot: fix for gem5, update path to gem5.sh
Improve the printing of results and errors:
- remove newlines from IDs at the end for ./test-boot
- remove newlines from progress for __call__ commands and don't print executed commands at all,
otherwise there are too many lines per test and it is hard to tell what is going on
- print backtraces for any exception in the threads (bugs while developing this code)
Tests across different archs and emulators are still not running in parallel,
which is a huge loss. TODO.
thread_pool: introduce with API. This was motivate by test-boot, I've had enough
of doing separate error handling for each loop type! Greatly dries up the code, awesome.
common: make --all-emulators work properly with native hopefully for the last time,
./test-baremetal was still failing.
gem5: don't pass --command-line for baremetal. Maybe later we can use it to actually
pass command line arguments to main()? To be seen.