diff options
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/include/lldb/Core/Log.h | 135 | ||||
-rw-r--r-- | lldb/include/lldb/Core/NullLog.h | 58 | ||||
-rw-r--r-- | lldb/source/Core/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lldb/source/Core/Log.cpp | 208 | ||||
-rw-r--r-- | lldb/source/Core/NullLog.cpp | 74 |
5 files changed, 279 insertions, 197 deletions
diff --git a/lldb/include/lldb/Core/Log.h b/lldb/include/lldb/Core/Log.h index e63633ba44e..73feb9579c4 100644 --- a/lldb/include/lldb/Core/Log.h +++ b/lldb/include/lldb/Core/Log.h @@ -26,17 +26,6 @@ #include "lldb/Core/PluginInterface.h" //---------------------------------------------------------------------- -// Logging types -//---------------------------------------------------------------------- -#define LLDB_LOG_FLAG_STDOUT (1u << 0) -#define LLDB_LOG_FLAG_STDERR (1u << 1) -#define LLDB_LOG_FLAG_FATAL (1u << 2) -#define LLDB_LOG_FLAG_ERROR (1u << 3) -#define LLDB_LOG_FLAG_WARNING (1u << 4) -#define LLDB_LOG_FLAG_DEBUG (1u << 5) -#define LLDB_LOG_FLAG_VERBOSE (1u << 6) - -//---------------------------------------------------------------------- // Logging Options //---------------------------------------------------------------------- #define LLDB_LOG_OPTION_THREADSAFE (1u << 0) @@ -61,12 +50,10 @@ public: //------------------------------------------------------------------ // Callback definitions for abstracted plug-in log access. //------------------------------------------------------------------ - typedef void (*DisableCallback) (const char **categories, Stream *feedback_strm); - typedef Log * (*EnableCallback) (lldb::StreamSP &log_stream_sp, - uint32_t log_options, - const char **categories, - Stream *feedback_strm); - typedef void (*ListCategoriesCallback) (Stream *strm); + typedef void (*DisableCallback)(const char **categories, Stream *feedback_strm); + typedef Log *(*EnableCallback)(lldb::StreamSP &log_stream_sp, uint32_t log_options, const char **categories, + Stream *feedback_strm); + typedef void (*ListCategoriesCallback)(Stream *strm); struct Callbacks { @@ -79,86 +66,78 @@ public: // Static accessors for logging channels //------------------------------------------------------------------ static void - RegisterLogChannel (const ConstString &channel, - const Log::Callbacks &log_callbacks); + RegisterLogChannel(const ConstString &channel, const Log::Callbacks &log_callbacks); static bool - UnregisterLogChannel (const ConstString &channel); + UnregisterLogChannel(const ConstString &channel); static bool - GetLogChannelCallbacks (const ConstString &channel, - Log::Callbacks &log_callbacks); - + GetLogChannelCallbacks(const ConstString &channel, Log::Callbacks &log_callbacks); static void - EnableAllLogChannels (lldb::StreamSP &log_stream_sp, - uint32_t log_options, - const char **categories, - Stream *feedback_strm); + EnableAllLogChannels(lldb::StreamSP &log_stream_sp, uint32_t log_options, const char **categories, + Stream *feedback_strm); static void - DisableAllLogChannels (Stream *feedback_strm); + DisableAllLogChannels(Stream *feedback_strm); static void - ListAllLogChannels (Stream *strm); + ListAllLogChannels(Stream *strm); static void - Initialize (); + Initialize(); static void - Terminate (); - + Terminate(); + //------------------------------------------------------------------ // Auto completion //------------------------------------------------------------------ static void - AutoCompleteChannelName (const char *channel_name, - StringList &matches); + AutoCompleteChannelName(const char *channel_name, StringList &matches); //------------------------------------------------------------------ // Member functions //------------------------------------------------------------------ - Log (); + Log(); - Log (const lldb::StreamSP &stream_sp); + Log(const lldb::StreamSP &stream_sp); - ~Log (); - - void - PutCString (const char *cstr); + virtual + ~Log(); - void - Printf (const char *format, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + PutCString(const char *cstr); - void - VAPrintf (const char *format, va_list args); + virtual void + Printf(const char *format, ...) __attribute__((format(printf, 2, 3))); - void - PrintfWithFlags( uint32_t flags, const char *format, ...) __attribute__ ((format (printf, 3, 4))); + virtual void + VAPrintf(const char *format, va_list args); - void - LogIf (uint32_t mask, const char *fmt, ...) __attribute__ ((format (printf, 3, 4))); + virtual void + LogIf(uint32_t mask, const char *fmt, ...) __attribute__((format(printf, 3, 4))); - void - Debug (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + Debug(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void - DebugVerbose (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + DebugVerbose(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void - Error (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + Error(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void - FatalError (int err, const char *fmt, ...) __attribute__ ((format (printf, 3, 4))); + virtual void + FatalError(int err, const char *fmt, ...) __attribute__((format(printf, 3, 4))); - void - Verbose (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + Verbose(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void - Warning (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + Warning(const char *fmt, ...) __attribute__((format(printf, 2, 3))); - void - WarningVerbose (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); + virtual void + WarningVerbose(const char *fmt, ...) __attribute__((format(printf, 2, 3))); Flags & GetOptions(); @@ -179,7 +158,7 @@ public: GetDebug() const; void - SetStream (const lldb::StreamSP &stream_sp) + SetStream(const lldb::StreamSP &stream_sp) { m_stream_sp = stream_sp; } @@ -192,43 +171,35 @@ protected: Flags m_options; Flags m_mask_bits; - void - PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args); - private: - DISALLOW_COPY_AND_ASSIGN (Log); + DISALLOW_COPY_AND_ASSIGN(Log); }; class LogChannel : public PluginInterface { public: - LogChannel (); + LogChannel(); - virtual - ~LogChannel (); + virtual ~LogChannel(); - static lldb::LogChannelSP - FindPlugin (const char *plugin_name); + static lldb::LogChannelSP FindPlugin(const char *plugin_name); // categories is a an array of chars that ends with a NULL element. - virtual void - Disable (const char **categories, Stream *feedback_strm) = 0; + virtual void Disable(const char **categories, Stream *feedback_strm) = 0; - virtual bool - Enable (lldb::StreamSP &log_stream_sp, - uint32_t log_options, - Stream *feedback_strm, // Feedback stream for argument errors etc - const char **categories) = 0;// The categories to enable within this logging stream, if empty, enable default set + virtual bool Enable( + lldb::StreamSP &log_stream_sp, uint32_t log_options, + Stream *feedback_strm, // Feedback stream for argument errors etc + const char **categories) = 0; // The categories to enable within this logging stream, if empty, enable default set - virtual void - ListCategories (Stream *strm) = 0; + virtual void ListCategories(Stream *strm) = 0; protected: std::unique_ptr<Log> m_log_ap; private: - DISALLOW_COPY_AND_ASSIGN (LogChannel); + DISALLOW_COPY_AND_ASSIGN(LogChannel); }; diff --git a/lldb/include/lldb/Core/NullLog.h b/lldb/include/lldb/Core/NullLog.h new file mode 100644 index 00000000000..06526239e7b --- /dev/null +++ b/lldb/include/lldb/Core/NullLog.h @@ -0,0 +1,58 @@ +//===-- NullLog.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_Core_NullLog_H_ +#define liblldb_Core_NullLog_H_ + +#include "lldb/Core/Log.h" + +//---------------------------------------------------------------------- +// Logging Functions +//---------------------------------------------------------------------- +namespace lldb_private +{ + +class NullLog : public Log +{ + NullLog(NullLog &) = delete; + NullLog &operator=(NullLog &) = delete; + + public: + //------------------------------------------------------------------ + // Member functions + //------------------------------------------------------------------ + NullLog(); + ~NullLog(); + + void PutCString(const char *cstr) override; + + void Printf(const char *format, ...) override __attribute__((format(printf, 2, 3))); + + void VAPrintf(const char *format, va_list args) override; + + void LogIf(uint32_t mask, const char *fmt, ...) override __attribute__((format(printf, 3, 4))); + + void Debug(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); + + void DebugVerbose(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); + + void Error(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); + + void FatalError(int err, const char *fmt, ...) override __attribute__((format(printf, 3, 4))); + + void Verbose(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); + + void Warning(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); + + void WarningVerbose(const char *fmt, ...) override __attribute__((format(printf, 2, 3))); +}; + +} // namespace lldb_private + +#endif // liblldb_Core_NullLog_H_ diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt index 8a62fc35842..50398823f42 100644 --- a/lldb/source/Core/CMakeLists.txt +++ b/lldb/source/Core/CMakeLists.txt @@ -38,6 +38,7 @@ add_lldb_library(lldbCore Module.cpp ModuleChild.cpp ModuleList.cpp + NullLog.cpp Opcode.cpp PluginManager.cpp RegisterValue.cpp diff --git a/lldb/source/Core/Log.cpp b/lldb/source/Core/Log.cpp index 57b888a3bac..fde7bee1606 100644 --- a/lldb/source/Core/Log.cpp +++ b/lldb/source/Core/Log.cpp @@ -77,6 +77,23 @@ Log::GetMask() const return m_mask_bits; } +void +Log::PutCString(const char *cstr) +{ + Printf("%s", cstr); +} + +//---------------------------------------------------------------------- +// Simple variable argument logging with flags. +//---------------------------------------------------------------------- +void +Log::Printf(const char *format, ...) +{ + va_list args; + va_start(args, format); + VAPrintf(format, args); + va_end(args); +} //---------------------------------------------------------------------- // All logging eventually boils down to this function call. If we have @@ -84,7 +101,7 @@ Log::GetMask() const // a valid file handle, we also log to the file. //---------------------------------------------------------------------- void -Log::PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args) +Log::VAPrintf(const char *format, va_list args) { // Make a copy of our stream shared pointer in case someone disables our // log while we are logging and releases the stream @@ -136,59 +153,20 @@ Log::PrintfWithFlagsVarArg (uint32_t flags, const char *format, va_list args) } } - -void -Log::PutCString (const char *cstr) -{ - Printf ("%s", cstr); -} - - -//---------------------------------------------------------------------- -// Simple variable argument logging with flags. -//---------------------------------------------------------------------- -void -Log::Printf(const char *format, ...) -{ - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (0, format, args); - va_end (args); -} - -void -Log::VAPrintf (const char *format, va_list args) -{ - PrintfWithFlagsVarArg (0, format, args); -} - - -//---------------------------------------------------------------------- -// Simple variable argument logging with flags. -//---------------------------------------------------------------------- -void -Log::PrintfWithFlags (uint32_t flags, const char *format, ...) -{ - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (flags, format, args); - va_end (args); -} - //---------------------------------------------------------------------- // Print debug strings if and only if the global debug option is set to // a non-zero value. //---------------------------------------------------------------------- void -Log::Debug (const char *format, ...) +Log::Debug(const char *format, ...) { - if (GetOptions().Test(LLDB_LOG_OPTION_DEBUG)) - { - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (LLDB_LOG_FLAG_DEBUG, format, args); - va_end (args); - } + if (!GetOptions().Test(LLDB_LOG_OPTION_DEBUG)) + return; + + va_list args; + va_start(args, format); + VAPrintf(format, args); + va_end(args); } @@ -197,15 +175,15 @@ Log::Debug (const char *format, ...) // a non-zero value. //---------------------------------------------------------------------- void -Log::DebugVerbose (const char *format, ...) +Log::DebugVerbose(const char *format, ...) { - if (GetOptions().AllSet (LLDB_LOG_OPTION_DEBUG | LLDB_LOG_OPTION_VERBOSE)) - { - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (LLDB_LOG_FLAG_DEBUG | LLDB_LOG_FLAG_VERBOSE, format, args); - va_end (args); - } + if (!GetOptions().AllSet(LLDB_LOG_OPTION_DEBUG | LLDB_LOG_OPTION_VERBOSE)) + return; + + va_list args; + va_start(args, format); + VAPrintf(format, args); + va_end(args); } @@ -213,34 +191,34 @@ Log::DebugVerbose (const char *format, ...) // Log only if all of the bits are set //---------------------------------------------------------------------- void -Log::LogIf (uint32_t bits, const char *format, ...) +Log::LogIf(uint32_t bits, const char *format, ...) { - if (m_options.AllSet (bits)) - { - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (0, format, args); - va_end (args); - } + if (!m_options.AllSet(bits)) + return; + + va_list args; + va_start(args, format); + VAPrintf(format, args); + va_end(args); } //---------------------------------------------------------------------- // Printing of errors that are not fatal. //---------------------------------------------------------------------- void -Log::Error (const char *format, ...) +Log::Error(const char *format, ...) { - char *arg_msg = NULL; + char *arg_msg = nullptr; va_list args; - va_start (args, format); - ::vasprintf (&arg_msg, format, args); - va_end (args); + va_start(args, format); + ::vasprintf(&arg_msg, format, args); + va_end(args); - if (arg_msg != NULL) - { - PrintfWithFlags (LLDB_LOG_FLAG_ERROR, "error: %s", arg_msg); - free (arg_msg); - } + if (arg_msg == nullptr) + return; + + VAPrintf("error: %s", arg_msg); + free(arg_msg); } //---------------------------------------------------------------------- @@ -248,20 +226,20 @@ Log::Error (const char *format, ...) // immediately. //---------------------------------------------------------------------- void -Log::FatalError (int err, const char *format, ...) +Log::FatalError(int err, const char *format, ...) { - char *arg_msg = NULL; + char *arg_msg = nullptr; va_list args; - va_start (args, format); - ::vasprintf (&arg_msg, format, args); - va_end (args); + va_start(args, format); + ::vasprintf(&arg_msg, format, args); + va_end(args); - if (arg_msg != NULL) + if (arg_msg != nullptr) { - PrintfWithFlags (LLDB_LOG_FLAG_ERROR | LLDB_LOG_FLAG_FATAL, "error: %s", arg_msg); - ::free (arg_msg); + VAPrintf("error: %s", arg_msg); + ::free(arg_msg); } - ::exit (err); + ::exit(err); } @@ -270,15 +248,15 @@ Log::FatalError (int err, const char *format, ...) // enabled. //---------------------------------------------------------------------- void -Log::Verbose (const char *format, ...) +Log::Verbose(const char *format, ...) { - if (m_options.Test(LLDB_LOG_OPTION_VERBOSE)) - { - va_list args; - va_start (args, format); - PrintfWithFlagsVarArg (LLDB_LOG_FLAG_VERBOSE, format, args); - va_end (args); - } + if (!m_options.Test(LLDB_LOG_OPTION_VERBOSE)) + return; + + va_list args; + va_start(args, format); + VAPrintf(format, args); + va_end(args); } //---------------------------------------------------------------------- @@ -286,40 +264,40 @@ Log::Verbose (const char *format, ...) // enabled. //---------------------------------------------------------------------- void -Log::WarningVerbose (const char *format, ...) +Log::WarningVerbose(const char *format, ...) { - if (m_options.Test(LLDB_LOG_OPTION_VERBOSE)) - { - char *arg_msg = NULL; - va_list args; - va_start (args, format); - ::vasprintf (&arg_msg, format, args); - va_end (args); + if (!m_options.Test(LLDB_LOG_OPTION_VERBOSE)) + return; - if (arg_msg != NULL) - { - PrintfWithFlags (LLDB_LOG_FLAG_WARNING | LLDB_LOG_FLAG_VERBOSE, "warning: %s", arg_msg); - free (arg_msg); - } - } + char *arg_msg = nullptr; + va_list args; + va_start(args, format); + ::vasprintf(&arg_msg, format, args); + va_end(args); + + if (arg_msg == nullptr) + return; + + VAPrintf("warning: %s", arg_msg); + free(arg_msg); } //---------------------------------------------------------------------- // Printing of warnings that are not fatal. //---------------------------------------------------------------------- void -Log::Warning (const char *format, ...) +Log::Warning(const char *format, ...) { - char *arg_msg = NULL; + char *arg_msg = nullptr; va_list args; - va_start (args, format); - ::vasprintf (&arg_msg, format, args); - va_end (args); + va_start(args, format); + ::vasprintf(&arg_msg, format, args); + va_end(args); - if (arg_msg != NULL) - { - PrintfWithFlags (LLDB_LOG_FLAG_WARNING, "warning: %s", arg_msg); - free (arg_msg); - } + if (arg_msg == nullptr) + return; + + VAPrintf("warning: %s", arg_msg); + free(arg_msg); } typedef std::map <ConstString, Log::Callbacks> CallbackMap; diff --git a/lldb/source/Core/NullLog.cpp b/lldb/source/Core/NullLog.cpp new file mode 100644 index 00000000000..01a3142de67 --- /dev/null +++ b/lldb/source/Core/NullLog.cpp @@ -0,0 +1,74 @@ +//===-- NullLog.cpp ---------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/NullLog.h" + +using namespace lldb_private; + +NullLog::NullLog() +{ +} +NullLog::~NullLog() +{ +} + +void +NullLog::PutCString(const char *cstr) +{ +} + +void +NullLog::Printf(const char *format, ...) +{ +} + +void +NullLog::VAPrintf(const char *format, va_list args) +{ +} + +void +NullLog::LogIf(uint32_t mask, const char *fmt, ...) +{ +} + +void +NullLog::Debug(const char *fmt, ...) +{ +} + +void +NullLog::DebugVerbose(const char *fmt, ...) +{ +} + +void +NullLog::Error(const char *fmt, ...) +{ +} + +void +NullLog::FatalError(int err, const char *fmt, ...) +{ +} + +void +NullLog::Verbose(const char *fmt, ...) +{ +} + +void +NullLog::Warning(const char *fmt, ...) +{ +} + +void +NullLog::WarningVerbose(const char *fmt, ...) +{ +} |