[Lldb-commits] [PATCH] D128321: [lldb] Add OSLog log handler
Jonas Devlieghere via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 23 18:02:25 PDT 2022
JDevlieghere updated this revision to Diff 439583.
JDevlieghere added a comment.
- Move SystemLogHandler into Host
- Create a new SystemLog helper function
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128321/new/
https://reviews.llvm.org/D128321
Files:
lldb/include/lldb/Host/Host.h
lldb/source/Host/common/Host.cpp
lldb/source/Host/macosx/objcxx/Host.mm
Index: lldb/source/Host/macosx/objcxx/Host.mm
===================================================================
--- lldb/source/Host/macosx/objcxx/Host.mm
+++ lldb/source/Host/macosx/objcxx/Host.mm
@@ -82,6 +82,7 @@
#include "../cfcpp/CFCString.h"
#include <objc/objc-auto.h>
+#include <os/log.h>
#include <CoreFoundation/CoreFoundation.h>
#include <Foundation/Foundation.h>
@@ -98,6 +99,17 @@
using namespace lldb;
using namespace lldb_private;
+static os_log_t g_os_log;
+static std::once_flag g_os_log_once;
+
+void Host::SystemLog(std::string message) {
+ if (__builtin_available(macos 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
+ os_log(g_os_log, "%{public}s", message.c_str());
+ } else {
+ fprintf(stderr, "%s", message.c_str());
+ }
+}
+
bool Host::GetBundleDirectory(const FileSpec &file,
FileSpec &bundle_directory) {
#if defined(__APPLE__)
Index: lldb/source/Host/common/Host.cpp
===================================================================
--- lldb/source/Host/common/Host.cpp
+++ lldb/source/Host/common/Host.cpp
@@ -106,6 +106,12 @@
});
}
+#if !defined(__APPLE__)
+void Host::SystemLog(std::string message) {
+ fprintf(stderr, "%s", message.c_str());
+}
+#endif
+
#ifndef __linux__
// Scoped class that will disable thread canceling when it is constructed, and
// exception safely restore the previous value it when it goes out of scope.
@@ -627,3 +633,9 @@
return result;
}
+
+SystemLogHandler::SystemLogHandler() {}
+
+void SystemLogHandler::Emit(llvm::StringRef message) {
+ Host::SystemLog(std::string(message));
+}
Index: lldb/include/lldb/Host/Host.h
===================================================================
--- lldb/include/lldb/Host/Host.h
+++ lldb/include/lldb/Host/Host.h
@@ -13,6 +13,7 @@
#include "lldb/Host/HostThread.h"
#include "lldb/Utility/Environment.h"
#include "lldb/Utility/FileSpec.h"
+#include "lldb/Utility/Log.h"
#include "lldb/Utility/Timeout.h"
#include "lldb/lldb-private-forward.h"
#include "lldb/lldb-private.h"
@@ -86,6 +87,9 @@
StartMonitoringChildProcess(const MonitorChildProcessCallback &callback,
lldb::pid_t pid);
+ /// Emit the given message to the operating system's log.
+ void SystemLog(std::string message);
+
/// Get the process ID for the calling process.
///
/// \return
@@ -252,6 +256,12 @@
ProcessInstanceInfoList &proc_infos);
};
+class SystemLogHandler : public LogHandler {
+public:
+ SystemLogHandler();
+ void Emit(llvm::StringRef message) override;
+};
+
} // namespace lldb_private
namespace llvm {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128321.439583.patch
Type: text/x-patch
Size: 2655 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220624/fb61d329/attachment.bin>
More information about the lldb-commits
mailing list