base,python: Fix to allow multiple --debug-ignore values.
authorIsaac Sánchez Barrera <isaac.sanchez@bsc.es>
Wed, 20 Mar 2019 13:32:22 +0000 (14:32 +0100)
committerIsaac Sánchez Barrera <isaac.sanchez@bsc.es>
Tue, 26 Mar 2019 07:25:11 +0000 (07:25 +0000)
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 <isaac.sanchez@bsc.es>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17488
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/base/match.cc
src/base/match.hh
src/base/trace.hh
src/python/pybind11/debug.cc

index dc621b482fab63929917e0cedd9a5ad098683e05..03f425f2e504ba982a9b8a49f42b50729e7b7172 100644 (file)
@@ -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)
 {
index 6e1f03b80425426d1e3cb96b06591b20b707772f..3ef4c819214e656d2d219ce04b6bedb8428f9a27 100644 (file)
@@ -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<std::string> &expression);
     bool match(const std::string &name) const
index ddf936ecd72e89e8e81c599f22d1f365fe2865f3..ee8737243e5cf5b0cf1e90ba649e30389b30a922 100644 (file)
@@ -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() { }
 };
 
index 8fcd0cdbccb15607d4670a44c4ab4dac720afed4..de8b10316357d807fc706ef58b4ca295b862cd0a 100644 (file)
@@ -75,7 +75,7 @@ ignore(const char *expr)
 {
     ObjectMatch ignore(expr);
 
-    Trace::getDebugLogger()->setIgnore(ignore);
+    Trace::getDebugLogger()->addIgnore(ignore);
 }
 
 void