124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- LogChannelDWARF.cpp ------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "LogChannelDWARF.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1284cdc15005983e5244d665fa779e33c2b6fac95fJim Ingham#include "lldb/Interpreter/Args.h" 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/PluginManager.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/StreamFile.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "SymbolFileDWARF.h" 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// when the one and only logging channel is abled, then this will be non NULL. 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerstatic LogChannelDWARF* g_log_channel = NULL; 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::LogChannelDWARF () : 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner LogChannel () 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::~LogChannelDWARF () 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::Initialize() 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PluginManager::RegisterPlugin (GetPluginNameStatic(), 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetPluginDescriptionStatic(), 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner LogChannelDWARF::CreateInstance); 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::Terminate() 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PluginManager::UnregisterPlugin (LogChannelDWARF::CreateInstance); 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannel* 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::CreateInstance () 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return new LogChannelDWARF (); 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 540e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Claytonlldb_private::ConstString 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetPluginNameStatic() 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 575e342f50b42b265d8568e1c926328858e74b2c0aGreg Clayton return SymbolFileDWARF::GetPluginNameStatic(); 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char * 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetPluginDescriptionStatic() 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return "DWARF log channel for debugging plug-in issues."; 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 660e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Claytonlldb_private::ConstString 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetPluginName() 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return GetPluginNameStatic(); 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetPluginVersion() 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 1; 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 80926060e198137f8a64face70455324a8cd4362a5Caroline TiceLogChannelDWARF::Delete () 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner g_log_channel = NULL; 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 85926060e198137f8a64face70455324a8cd4362a5Caroline Tice 86926060e198137f8a64face70455324a8cd4362a5Caroline Ticevoid 876c530f2201be4788dedf3d5970399220fbd50b11Jim InghamLogChannelDWARF::Disable (const char **categories, Stream *feedback_strm) 88926060e198137f8a64face70455324a8cd4362a5Caroline Tice{ 89952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (m_log_ap.get() == NULL) 904370585560d02cebe03fe47792fb6b24d6a2b627Greg Clayton return; 914370585560d02cebe03fe47792fb6b24d6a2b627Greg Clayton 92952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton uint32_t flag_bits = m_log_ap->GetMask().Get(); 936c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham for (size_t i = 0; categories[i] != NULL; ++i) 94926060e198137f8a64face70455324a8cd4362a5Caroline Tice { 956c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham const char *arg = categories[i]; 96926060e198137f8a64face70455324a8cd4362a5Caroline Tice 9786b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton if (::strcasecmp (arg, "all") == 0) flag_bits &= ~DWARF_LOG_ALL; 9886b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "info") == 0) flag_bits &= ~DWARF_LOG_DEBUG_INFO; 9986b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "line") == 0) flag_bits &= ~DWARF_LOG_DEBUG_LINE; 10086b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "pubnames") == 0) flag_bits &= ~DWARF_LOG_DEBUG_PUBNAMES; 10186b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "pubtypes") == 0) flag_bits &= ~DWARF_LOG_DEBUG_PUBTYPES; 10286b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "aranges") == 0) flag_bits &= ~DWARF_LOG_DEBUG_ARANGES; 10386b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "lookups") == 0) flag_bits &= ~DWARF_LOG_LOOKUPS; 104fafffe000eb4a3902ecefc82446d11e6838167c6Sean Callanan else if (::strcasecmp (arg, "map") == 0) flag_bits &= ~DWARF_LOG_DEBUG_MAP; 10586b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "default") == 0) flag_bits &= ~DWARF_LOG_DEFAULT; 10686b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strncasecmp(arg, "comp", 4) == 0) flag_bits &= ~DWARF_LOG_TYPE_COMPLETION; 107926060e198137f8a64face70455324a8cd4362a5Caroline Tice else 108926060e198137f8a64face70455324a8cd4362a5Caroline Tice { 109926060e198137f8a64face70455324a8cd4362a5Caroline Tice feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); 110926060e198137f8a64face70455324a8cd4362a5Caroline Tice ListCategories (feedback_strm); 111926060e198137f8a64face70455324a8cd4362a5Caroline Tice } 112926060e198137f8a64face70455324a8cd4362a5Caroline Tice } 113926060e198137f8a64face70455324a8cd4362a5Caroline Tice 114926060e198137f8a64face70455324a8cd4362a5Caroline Tice if (flag_bits == 0) 115926060e198137f8a64face70455324a8cd4362a5Caroline Tice Delete (); 116926060e198137f8a64face70455324a8cd4362a5Caroline Tice else 117952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton m_log_ap->GetMask().Reset (flag_bits); 118926060e198137f8a64face70455324a8cd4362a5Caroline Tice 119926060e198137f8a64face70455324a8cd4362a5Caroline Tice return; 120926060e198137f8a64face70455324a8cd4362a5Caroline Tice} 121926060e198137f8a64face70455324a8cd4362a5Caroline Tice 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::Enable 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner( 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StreamSP &log_stream_sp, 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t log_options, 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Stream *feedback_strm, // Feedback stream for argument errors etc 1286c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham const char **categories // The categories to enable within this logging stream, if empty, enable default set 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner) 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 131926060e198137f8a64face70455324a8cd4362a5Caroline Tice Delete (); 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 133952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (m_log_ap) 134952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton m_log_ap->SetStream(log_stream_sp); 135952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton else 136952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton m_log_ap.reset(new Log (log_stream_sp)); 137952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner g_log_channel = this; 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t flag_bits = 0; 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool got_unknown_category = false; 1416c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham for (size_t i = 0; categories[i] != NULL; ++i) 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 1436c530f2201be4788dedf3d5970399220fbd50b11Jim Ingham const char *arg = categories[i]; 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14586b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton if (::strcasecmp (arg, "all") == 0) flag_bits |= DWARF_LOG_ALL; 14686b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "info") == 0) flag_bits |= DWARF_LOG_DEBUG_INFO; 14786b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "line") == 0) flag_bits |= DWARF_LOG_DEBUG_LINE; 14886b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "pubnames") == 0) flag_bits |= DWARF_LOG_DEBUG_PUBNAMES; 14986b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "pubtypes") == 0) flag_bits |= DWARF_LOG_DEBUG_PUBTYPES; 15086b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "aranges") == 0) flag_bits |= DWARF_LOG_DEBUG_ARANGES; 15186b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "lookups") == 0) flag_bits |= DWARF_LOG_LOOKUPS; 152fafffe000eb4a3902ecefc82446d11e6838167c6Sean Callanan else if (::strcasecmp (arg, "map") == 0) flag_bits |= DWARF_LOG_DEBUG_MAP; 15386b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strcasecmp (arg, "default") == 0) flag_bits |= DWARF_LOG_DEFAULT; 15486b391bd742589c2b243e7c4beb5fa522ee0c481Greg Clayton else if (::strncasecmp(arg, "comp", 4) == 0) flag_bits |= DWARF_LOG_TYPE_COMPLETION; 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner feedback_strm->Printf("error: unrecognized log category '%s'\n", arg); 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (got_unknown_category == false) 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner got_unknown_category = true; 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ListCategories (feedback_strm); 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (flag_bits == 0) 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner flag_bits = DWARF_LOG_DEFAULT; 167952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton m_log_ap->GetMask().Reset(flag_bits); 168952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton m_log_ap->GetOptions().Reset(log_options); 169952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return m_log_ap.get() != NULL; 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::ListCategories (Stream *strm) 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 175dad26a854b57808fb6a6c0ae82a17f06f595d9cdGreg Clayton strm->Printf ("Logging categories for '%s':\n" 176dad26a854b57808fb6a6c0ae82a17f06f595d9cdGreg Clayton " all - turn on all available logging categories\n" 177dad26a854b57808fb6a6c0ae82a17f06f595d9cdGreg Clayton " info - log the parsing if .debug_info\n" 178dad26a854b57808fb6a6c0ae82a17f06f595d9cdGreg Clayton " line - log the parsing if .debug_line\n" 179dad26a854b57808fb6a6c0ae82a17f06f595d9cdGreg Clayton " pubnames - log the parsing if .debug_pubnames\n" 180c7bbd271fba425130f82dfa028d68c92282e4fdcGreg Clayton " pubtypes - log the parsing if .debug_pubtypes\n" 181464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton " lookups - log any lookups that happen by name, regex, or address\n" 182464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton " completion - log struct/unions/class type completions\n" 183464a5063bc59755cb6ec063d0b2491097302d2abGreg Clayton " map - log insertions of object files into DWARF debug maps\n", 1840e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton SymbolFileDWARF::GetPluginNameStatic().GetCString()); 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 187952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg ClaytonLog * 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetLog () 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (g_log_channel) 191952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return g_log_channel->m_log_ap.get(); 192c7bbd271fba425130f82dfa028d68c92282e4fdcGreg Clayton 193952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return NULL; 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 196952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg ClaytonLog * 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::GetLogIfAll (uint32_t mask) 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 199952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (g_log_channel && g_log_channel->m_log_ap.get()) 200f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton { 201952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (g_log_channel->m_log_ap->GetMask().AllSet(mask)) 202952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return g_log_channel->m_log_ap.get(); 203f3d0b0c8081691128626eb496fdfcbf8ae54c1deGreg Clayton } 204952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return NULL; 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 207952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg ClaytonLog * 208c80dca73893e5b24f4d16c092da75532715b405eGreg ClaytonLogChannelDWARF::GetLogIfAny (uint32_t mask) 209c80dca73893e5b24f4d16c092da75532715b405eGreg Clayton{ 210952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (g_log_channel && g_log_channel->m_log_ap.get()) 211c80dca73893e5b24f4d16c092da75532715b405eGreg Clayton { 212952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (g_log_channel->m_log_ap->GetMask().AnySet(mask)) 213952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return g_log_channel->m_log_ap.get(); 214c80dca73893e5b24f4d16c092da75532715b405eGreg Clayton } 215952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton return NULL; 216c80dca73893e5b24f4d16c092da75532715b405eGreg Clayton} 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 21924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerLogChannelDWARF::LogIf (uint32_t mask, const char *format, ...) 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (g_log_channel) 22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 223952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log = g_log_channel->m_log_ap.get(); 224952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton if (log && log->GetMask().AnySet(mask)) 225952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton { 226952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton va_list args; 227952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton va_start (args, format); 228952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton log->VAPrintf (format, args); 229952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton va_end (args); 230952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton } 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 233