12602e4dca021d89b045e96bd495559c0a7ad999
Comparing arrays with memcmp is fairly easy to do and will correctly identify when a value is incorrect, but gtest doesn't know what comparison actually happened and can't print any diagnostic information to help the person running the test determine what went wrong. Unfortunately, gtest is also slightly too smart and also not smart enough to make it easy to compare the contents of sub-arrays with each other. The thing you're checking the value of *must* be an array with a well defined size (not a pointer), and the size *must* exactly match the number of elements it expects to find. One fairly clean way to get around this problem would be to use the new std::span type introduced in c++20 which lets you refer to a sub-section of another container in place, adjusting indexing, sizing, etc as needed. Unfortunately since we only require up to c++-14 currently we can't use that type. Instead, we can create vectors which hold copies of the required data. This is suboptimal since it means we're copying around data which doesn't really need to be copied, but it means that the templates in gtest will get a type they can handle, and the sizes will match like it expects them to. Since the number of checks/copies is still small, the overhead should be trivial in practice. A helper function, subArr, has been added to help keep things fairly clutter free. Change-Id: I9f88c583a6a742346b177dba7cae791824b65942 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/38895 Maintainer: Gabe Black <gabe.black@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
This is the gem5 simulator. The main website can be found at http://www.gem5.org A good starting point is http://www.gem5.org/about, and for more information about building the simulator and getting started please see http://www.gem5.org/documentation and http://www.gem5.org/documentation/learning_gem5/introduction. To build gem5, you will need the following software: g++ or clang, Python (gem5 links in the Python interpreter), SCons, SWIG, zlib, m4, and lastly protobuf if you want trace capture and playback support. Please see http://www.gem5.org/documentation/general_docs/building for more details concerning the minimum versions of the aforementioned tools. Once you have all dependencies resolved, type 'scons build/<ARCH>/gem5.opt' where ARCH is one of ARM, NULL, MIPS, POWER, SPARC, or X86. This will build an optimized version of the gem5 binary (gem5.opt) for the the specified architecture. See http://www.gem5.org/documentation/general_docs/building for more details and options. The basic source release includes these subdirectories: - configs: example simulation configuration scripts - ext: less-common external packages needed to build gem5 - src: source code of the gem5 simulator - system: source for some optional system software for simulated systems - tests: regression tests - util: useful utility programs and files To run full-system simulations, you will need compiled system firmware (console and PALcode for Alpha), kernel binaries and one or more disk images. If you have questions, please send mail to gem5-users@gem5.org Enjoy using gem5 and please share your modifications and extensions.
Description