summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Core/Log.h135
-rw-r--r--lldb/include/lldb/Core/NullLog.h58
-rw-r--r--lldb/source/Core/CMakeLists.txt1
-rw-r--r--lldb/source/Core/Log.cpp208
-rw-r--r--lldb/source/Core/NullLog.cpp74
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, ...)
+{
+}
OpenPOWER on IntegriCloud