From: Nathan Binkert Date: Wed, 4 May 2011 14:08:08 +0000 (-0400) Subject: debug: fix help output X-Git-Tag: stable_2012_02_02~355 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0dffd35741fafc4d51102c7276b61306bfa73d87;p=gem5.git debug: fix help output --- diff --git a/src/base/debug.cc b/src/base/debug.cc index be301da07..71675aada 100644 --- a/src/base/debug.cc +++ b/src/base/debug.cc @@ -101,14 +101,14 @@ void CompoundFlag::enable() { SimpleFlag::enable(); - for_each(flags.begin(), flags.end(), mem_fun(&Flag::enable)); + for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::enable)); } void CompoundFlag::disable() { SimpleFlag::disable(); - for_each(flags.begin(), flags.end(), mem_fun(&Flag::disable)); + for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::disable)); } struct AllFlags : public Flag diff --git a/src/base/debug.hh b/src/base/debug.hh index ced6b4f48..d43117e71 100644 --- a/src/base/debug.hh +++ b/src/base/debug.hh @@ -44,6 +44,7 @@ class Flag protected: const char *_name; const char *_desc; + std::vector _kids; public: Flag(const char *name, const char *desc); @@ -51,6 +52,7 @@ class Flag std::string name() const { return _name; } std::string desc() const { return _desc; } + std::vector kids() { return _kids; } virtual void enable() = 0; virtual void disable() = 0; @@ -77,7 +79,12 @@ class SimpleFlag : public Flag class CompoundFlag : public SimpleFlag { protected: - std::vector flags; + void + addFlag(Flag &f) + { + if (&f != NULL) + _kids.push_back(&f); + } public: CompoundFlag(const char *name, const char *desc, @@ -99,13 +106,6 @@ class CompoundFlag : public SimpleFlag addFlag(f15); addFlag(f16); addFlag(f17); addFlag(f18); addFlag(f19); } - void - addFlag(Flag &f) - { - if (&f != NULL) - flags.push_back(&f); - } - void enable(); void disable(); }; diff --git a/src/python/m5/debug.py b/src/python/m5/debug.py index 8231126a0..508bf2842 100644 --- a/src/python/m5/debug.py +++ b/src/python/m5/debug.py @@ -26,24 +26,36 @@ # # Authors: Nathan Binkert +from UserDict import DictMixin + import internal +from internal.debug import SimpleFlag, CompoundFlag from internal.debug import schedBreakCycle, setRemoteGDBPort +from m5.util import printList def help(): print "Base Flags:" - for flag in flags.basic: - print " %s: %s" % (flag, flags.descriptions[flag]) + for name in sorted(flags): + if name == 'All': + continue + flag = flags[name] + children = [c for c in flag.kids() ] + if not children: + print " %s: %s" % (name, flag.desc()) print print "Compound Flags:" - for flag in flags.compound: - if flag == 'All': + for name in sorted(flags): + if name == 'All': continue - print " %s: %s" % (flag, flags.descriptions[flag]) - util.printList(flags.compoundMap[flag], indent=8) - print + flag = flags[name] + children = [c for c in flag.kids() ] + if children: + print " %s: %s" % (name, flag.desc()) + printList([ c.name() for c in children ], indent=8) + print -class AllFlags(object): +class AllFlags(DictMixin): def __init__(self): self._version = -1 self._dict = {}