From: Daniel R. Carvalho Date: Wed, 20 Feb 2019 10:05:29 +0000 (+0100) Subject: sim: Add size to array unserialization error message X-Git-Tag: v19.0.0.0~1062 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4ec5b85a31ded2afdf784555a7c736e61c8b594a;p=gem5.git sim: Add size to array unserialization error message Add both acquired and expected size information to array unserialization error message. Change-Id: Ic0a493c5a7860066eb992e9e91e7a4746b197579 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16542 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh index a45d1bbcd..3d9f93e2f 100644 --- a/src/sim/serialize.hh +++ b/src/sim/serialize.hh @@ -474,7 +474,15 @@ arrayParamOut(CheckpointOut &os, const std::string &name, os << "\n"; } - +/** + * Extract values stored in the checkpoint, and assign them to the provided + * array container. + * + * @param cp The checkpoint to be parsed. + * @param name Name of the container. + * @param param The array container. + * @param size The expected number of entries to be extracted. + */ template void arrayParamIn(CheckpointIn &cp, const std::string &name, @@ -496,9 +504,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name, // Need this if we were doing a vector // value.resize(tokens.size()); - if (tokens.size() != size) { - fatal("Array size mismatch on %s:%s'\n", section, name); - } + fatal_if(tokens.size() != size, + "Array size mismatch on %s:%s (Got %u, expected %u)'\n", + section, name, tokens.size(), size); for (std::vector::size_type i = 0; i < tokens.size(); i++) { // need to parse into local variable to handle vector,