JDevlieghere created this revision. JDevlieghere added a reviewer: aprantl. Herald added a project: All. JDevlieghere requested review of this revision.
This patch adds a function to check if lldb is running in an interactive debug session. Currently this API only works on macOS. It's expected to be used in combination with `Host::OpenFileInExternalEditor`. https://reviews.llvm.org/D124872 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 @@ -32,6 +32,8 @@ #define LauncherXPCServiceErrorTypeKey "errorType" #define LauncherXPCServiceCodeTypeKey "errorCode" +#include <bsm/audit.h> +#include <bsm/audit_session.h> #endif #include "llvm/Support/Host.h" @@ -406,6 +408,16 @@ #endif // TARGET_OS_OSX } +bool Host::IsInteractiveSession() { +#if !TARGET_OS_OSX + return false; +#else + auditinfo_addr_t info; + getaudit_addr(&info, sizeof(info)); + return info.ai_flags & AU_SESSION_FLAG_HAS_GRAPHIC_ACCESS; +#endif +} + Environment Host::GetEnvironment() { return Environment(*_NSGetEnviron()); } static bool GetMacOSXProcessCPUType(ProcessInstanceInfo &process_info) { Index: lldb/source/Host/common/Host.cpp =================================================================== --- lldb/source/Host/common/Host.cpp +++ lldb/source/Host/common/Host.cpp @@ -575,6 +575,7 @@ return false; } +bool Host::IsInteractiveSession() { return false; } #endif std::unique_ptr<Connection> Host::CreateDefaultConnection(llvm::StringRef url) { Index: lldb/include/lldb/Host/Host.h =================================================================== --- lldb/include/lldb/Host/Host.h +++ lldb/include/lldb/Host/Host.h @@ -242,6 +242,8 @@ static bool OpenFileInExternalEditor(const FileSpec &file_spec, uint32_t line_no); + static bool IsInteractiveSession(); + static Environment GetEnvironment(); static std::unique_ptr<Connection>
Index: lldb/source/Host/macosx/objcxx/Host.mm =================================================================== --- lldb/source/Host/macosx/objcxx/Host.mm +++ lldb/source/Host/macosx/objcxx/Host.mm @@ -32,6 +32,8 @@ #define LauncherXPCServiceErrorTypeKey "errorType" #define LauncherXPCServiceCodeTypeKey "errorCode" +#include <bsm/audit.h> +#include <bsm/audit_session.h> #endif #include "llvm/Support/Host.h" @@ -406,6 +408,16 @@ #endif // TARGET_OS_OSX } +bool Host::IsInteractiveSession() { +#if !TARGET_OS_OSX + return false; +#else + auditinfo_addr_t info; + getaudit_addr(&info, sizeof(info)); + return info.ai_flags & AU_SESSION_FLAG_HAS_GRAPHIC_ACCESS; +#endif +} + Environment Host::GetEnvironment() { return Environment(*_NSGetEnviron()); } static bool GetMacOSXProcessCPUType(ProcessInstanceInfo &process_info) { Index: lldb/source/Host/common/Host.cpp =================================================================== --- lldb/source/Host/common/Host.cpp +++ lldb/source/Host/common/Host.cpp @@ -575,6 +575,7 @@ return false; } +bool Host::IsInteractiveSession() { return false; } #endif std::unique_ptr<Connection> Host::CreateDefaultConnection(llvm::StringRef url) { Index: lldb/include/lldb/Host/Host.h =================================================================== --- lldb/include/lldb/Host/Host.h +++ lldb/include/lldb/Host/Host.h @@ -242,6 +242,8 @@ static bool OpenFileInExternalEditor(const FileSpec &file_spec, uint32_t line_no); + static bool IsInteractiveSession(); + static Environment GetEnvironment(); static std::unique_ptr<Connection>
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits