xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1dda28197Spatrick //===-- ProcessGDBRemoteLog.cpp -------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "ProcessGDBRemoteLog.h"
10061da546Spatrick #include "ProcessGDBRemote.h"
11061da546Spatrick #include "llvm/Support/Threading.h"
12061da546Spatrick 
13061da546Spatrick using namespace lldb;
14061da546Spatrick using namespace lldb_private;
15061da546Spatrick using namespace lldb_private::process_gdb_remote;
16061da546Spatrick 
17061da546Spatrick static constexpr Log::Category g_categories[] = {
18*f6aab3d8Srobert     {{"async"}, {"log asynchronous activity"}, GDBRLog::Async},
19*f6aab3d8Srobert     {{"break"}, {"log breakpoints"}, GDBRLog::Breakpoints},
20*f6aab3d8Srobert     {{"comm"}, {"log communication activity"}, GDBRLog::Comm},
21*f6aab3d8Srobert     {{"packets"}, {"log gdb remote packets"}, GDBRLog::Packets},
22*f6aab3d8Srobert     {{"memory"}, {"log memory reads and writes"}, GDBRLog::Memory},
23061da546Spatrick     {{"data-short"},
24061da546Spatrick      {"log memory bytes for memory reads and writes for short transactions "
25061da546Spatrick       "only"},
26*f6aab3d8Srobert      GDBRLog::MemoryDataShort},
27061da546Spatrick     {{"data-long"},
28061da546Spatrick      {"log memory bytes for memory reads and writes for all transactions"},
29*f6aab3d8Srobert      GDBRLog::MemoryDataLong},
30*f6aab3d8Srobert     {{"process"}, {"log process events and activities"}, GDBRLog::Process},
31*f6aab3d8Srobert     {{"step"}, {"log step related activities"}, GDBRLog::Step},
32*f6aab3d8Srobert     {{"thread"}, {"log thread events and activities"}, GDBRLog::Thread},
33*f6aab3d8Srobert     {{"watch"}, {"log watchpoint related activities"}, GDBRLog::Watchpoints},
34061da546Spatrick };
35061da546Spatrick 
36*f6aab3d8Srobert static Log::Channel g_channel(g_categories, GDBRLog::Packets);
37*f6aab3d8Srobert 
LogChannelFor()38*f6aab3d8Srobert template <> Log::Channel &lldb_private::LogChannelFor<GDBRLog>() {
39*f6aab3d8Srobert   return g_channel;
40*f6aab3d8Srobert }
41061da546Spatrick 
Initialize()42061da546Spatrick void ProcessGDBRemoteLog::Initialize() {
43061da546Spatrick   static llvm::once_flag g_once_flag;
44061da546Spatrick   llvm::call_once(g_once_flag, []() {
45061da546Spatrick     Log::Register("gdb-remote", g_channel);
46061da546Spatrick   });
47061da546Spatrick }
48