From ca4c0a168ae3a48fe97f0c132fefbf606d925bb8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isaac=20S=C3=A1nchez=20Barrera?= Date: Wed, 20 Mar 2019 14:32:22 +0100 Subject: [PATCH] base,python: Fix to allow multiple --debug-ignore values. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When adding multiple SimObjects to --debug-ignore, either separating the values with a colon or adding multiple --debug-ignore flags, the previous code only ignored the last SimObject in the list. This changeset adds and uses new `ObjectMatch::add` and `Logger::addIgnore` methods to make the functionality of the flag consistent with its description. Change-Id: Ib6967a48611ea59a211f81af2a970c4de429b1be Signed-off-by: Isaac Sánchez Barrera Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17488 Reviewed-by: Jason Lowe-Power Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/base/match.cc | 6 ++++++ src/base/match.hh | 1 + src/base/trace.hh | 3 +++ src/python/pybind11/debug.cc | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/base/match.cc b/src/base/match.cc index dc621b482..03f425f2e 100644 --- a/src/base/match.cc +++ b/src/base/match.cc @@ -43,6 +43,12 @@ ObjectMatch::ObjectMatch(const string &expr) setExpression(expr); } +void +ObjectMatch::add(const ObjectMatch &other) +{ + tokens.insert(tokens.end(), other.tokens.begin(), other.tokens.end()); +} + void ObjectMatch::setExpression(const string &expr) { diff --git a/src/base/match.hh b/src/base/match.hh index 6e1f03b80..3ef4c8192 100644 --- a/src/base/match.hh +++ b/src/base/match.hh @@ -47,6 +47,7 @@ class ObjectMatch public: ObjectMatch(); ObjectMatch(const std::string &expression); + void add(const ObjectMatch &other); void setExpression(const std::string &expression); void setExpression(const std::vector &expression); bool match(const std::string &name) const diff --git a/src/base/trace.hh b/src/base/trace.hh index ddf936ecd..ee8737243 100644 --- a/src/base/trace.hh +++ b/src/base/trace.hh @@ -86,6 +86,9 @@ class Logger /** Set objects to ignore */ void setIgnore(ObjectMatch &ignore_) { ignore = ignore_; } + /** Add objects to ignore */ + void addIgnore(const ObjectMatch &ignore_) { ignore.add(ignore_); } + virtual ~Logger() { } }; diff --git a/src/python/pybind11/debug.cc b/src/python/pybind11/debug.cc index 8fcd0cdbc..de8b10316 100644 --- a/src/python/pybind11/debug.cc +++ b/src/python/pybind11/debug.cc @@ -75,7 +75,7 @@ ignore(const char *expr) { ObjectMatch ignore(expr); - Trace::getDebugLogger()->setIgnore(ignore); + Trace::getDebugLogger()->addIgnore(ignore); } void -- 2.30.2