summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
index 22c2bf15021..db81ca80830 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
@@ -112,12 +112,44 @@ LogChannelDWARF::EnablePluginLogging (Stream *strm, Args &command)
void
-LogChannelDWARF::Disable ()
+LogChannelDWARF::Delete ()
{
g_log_channel = NULL;
m_log_sp.reset();
}
+
+void
+LogChannelDWARF::Disable (Args &categories, Stream *feedback_strm)
+{
+ g_log_channel = this;
+ uint32_t flag_bits = m_log_sp->GetMask().Get();
+ const size_t argc = categories.GetArgumentCount();
+ for (size_t i = 0; i < argc; ++i)
+ {
+ const char *arg = categories.GetArgumentAtIndex(i);
+
+ if (::strcasecmp (arg, "all") == 0 ) flag_bits &= ~DWARF_LOG_ALL;
+ else if (::strcasecmp (arg, "info") == 0 ) flag_bits &= ~DWARF_LOG_DEBUG_INFO;
+ else if (::strcasecmp (arg, "line") == 0 ) flag_bits &= ~DWARF_LOG_DEBUG_LINE;
+ else if (::strcasecmp (arg, "pubnames") == 0 ) flag_bits &= ~DWARF_LOG_DEBUG_PUBNAMES;
+ else if (::strcasecmp (arg, "pubtypes") == 0 ) flag_bits &= ~DWARF_LOG_DEBUG_PUBTYPES;
+ else if (::strcasecmp (arg, "default") == 0 ) flag_bits &= ~DWARF_LOG_DEFAULT;
+ else
+ {
+ feedback_strm->Printf("error: unrecognized log category '%s'\n", arg);
+ ListCategories (feedback_strm);
+ }
+ }
+
+ if (flag_bits == 0)
+ Delete ();
+ else
+ m_log_sp->GetMask().Reset (flag_bits);
+
+ return;
+}
+
bool
LogChannelDWARF::Enable
(
@@ -127,7 +159,7 @@ LogChannelDWARF::Enable
const Args &categories // The categories to enable within this logging stream, if empty, enable default set
)
{
- Disable ();
+ Delete ();
m_log_sp.reset(new Log (log_stream_sp));
g_log_channel = this;
OpenPOWER on IntegriCloud