]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmnResources.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / tools / lldb-mi / MICmnResources.h
1 //===-- MICmnResources.h ----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #pragma once
10
11 // Third party headers
12 #include <map>
13
14 // In-house headers:
15 #include "MICmnBase.h"
16 #include "MIUtilSingletonBase.h"
17 #include "MIUtilString.h"
18
19 //++
20 //============================================================================
21 // Details: MI string test data resource definitions. These IDs match up with
22 //          actual string data in a map internal to CMICmnResources.
23 //          *** Be sure to update ms_pResourceId2TextData[] array ****
24 enum {
25   IDS_PROJNAME = 1,
26   IDS_MI_VERSION_DESCRIPTION_DEBUG,
27   IDS_MI_VERSION_DESCRIPTION,
28   IDS_MI_APPNAME_SHORT,
29   IDS_MI_APPNAME_LONG,
30   IDS_MI_APP_FILEPATHNAME,
31   IDS_MI_APP_ARGS,
32   IDE_MI_VERSION_GDB,
33
34   IDS_UTIL_FILE_ERR_INVALID_PATHNAME,
35   IDS_UTIL_FILE_ERR_OPENING_FILE,
36   IDS_UTIL_FILE_ERR_OPENING_FILE_UNKNOWN,
37   IDE_UTIL_FILE_ERR_WRITING_FILE,
38   IDE_UTIL_FILE_ERR_WRITING_NOTOPEN,
39
40   IDS_RESOURCES_ERR_STRING_NOT_FOUND,
41   IDS_RESOURCES_ERR_STRING_TABLE_INVALID,
42
43   IDS_MI_CLIENT_MSG,
44
45   IDS_LOG_MSG_CREATION_DATE,
46   IDS_LOG_MSG_FILE_LOGGER_PATH,
47   IDS_LOG_MSG_VERSION,
48   IDS_LOG_ERR_FILE_LOGGER_DISABLED,
49   IDS_LOG_MEDIUM_ERR_INIT,
50   IDS_LOG_MEDIUM_ERR_WRITE_ANY,
51   IDS_LOG_MEDIUM_ERR_WRITE_MEDIUMFAIL,
52
53   IDS_MEDIUMFILE_NAME,
54   IDS_MEDIUMFILE_ERR_INVALID_PATH,
55   IDS_MEDIUMFILE_ERR_FILE_HEADER,
56   IDS_MEDIUMFILE_NAME_LOG,
57
58   IDE_OS_ERR_UNKNOWN,
59   IDE_OS_ERR_RETRIEVING,
60
61   IDS_DRIVERMGR_DRIVER_ERR_INIT,
62
63   IDE_MEDIUMSTDERR_NAME,
64   IDE_MEDIUMSTDOUT_NAME,
65
66   IDE_MI_APP_DESCRIPTION,
67   IDE_MI_APP_INFORMATION,
68   IDE_MI_APP_ARG_USAGE,
69   IDE_MI_APP_ARG_HELP,
70   IDE_MI_APP_ARG_VERSION,
71   IDE_MI_APP_ARG_VERSION_LONG,
72   IDE_MI_APP_ARG_INTERPRETER,
73   IDE_MI_APP_ARG_EXECUTEABLE,
74   IDE_MI_APP_ARG_SOURCE,
75   IDE_MI_APP_ARG_APP_LOG,
76   IDE_MI_APP_ARG_APP_LOG_DIR,
77   IDE_MI_APP_ARG_EXAMPLE,
78   IDE_MI_APP_ARG_EXECUTABLE,
79   IDE_MI_APP_ARG_SYNCHRONOUS,
80
81   IDS_STDIN_ERR_INVALID_PROMPT,
82   IDS_STDIN_ERR_THREAD_CREATION_FAILED,
83   IDS_STDIN_ERR_THREAD_DELETE,
84   IDS_STDIN_ERR_CHKING_BYTE_AVAILABLE,
85   IDS_STDIN_INPUT_CTRL_CHARS,
86
87   IDS_CMD_QUIT_HELP,
88
89   IDS_THREADMGR_ERR_THREAD_ID_INVALID,
90   IDS_THREADMGR_ERR_THREAD_FAIL_CREATE,
91   IDS_THREADMGR_ERR_THREAD_ID_NOT_FOUND,
92   IDS_THREADMGR_ERR_THREAD_STILL_ALIVE,
93
94   IDS_FALLTHRU_DRIVER_CMD_RECEIVED,
95
96   IDS_CMDFACTORY_ERR_INVALID_CMD_NAME,
97   IDS_CMDFACTORY_ERR_INVALID_CMD_CR8FN,
98   IDS_CMDFACTORY_ERR_CMD_NOT_REGISTERED,
99   IDS_CMDFACTORY_ERR_CMD_ALREADY_REGED,
100
101   IDS_CMDMGR_ERR_CMD_FAILED_CREATE,
102   IDS_CMDMGR_ERR_CMD_INVOKER,
103
104   IDS_MI_INIT_ERR_LOG,
105   IDS_MI_INIT_ERR_RESOURCES,
106   IDS_MI_INIT_ERR_INIT,
107   IDS_MI_INIT_ERR_STREAMSTDIN,
108   IDS_MI_INIT_ERR_STREAMSTDIN_OSHANDLER,
109   IDS_MI_INIT_ERR_OS_STDIN_HANDLER,
110   IDS_MI_INIT_ERR_STREAMSTDOUT,
111   IDS_MI_INIT_ERR_STREAMSTDERR,
112   IDS_MI_INIT_ERR_FALLTHRUDRIVER,
113   IDS_MI_INIT_ERR_THREADMGR,
114   IDS_MI_INIT_ERR_CMDINTERPRETER,
115   IDS_MI_INIT_ERR_CMDMGR,
116   IDS_MI_INIT_ERR_CMDFACTORY,
117   IDS_MI_INIT_ERR_CMDINVOKER,
118   IDS_MI_INIT_ERR_CMDMONITOR,
119   IDS_MI_INIT_ERR_LLDBDEBUGGER,
120   IDS_MI_INIT_ERR_DRIVERMGR,
121   IDS_MI_INIT_ERR_DRIVER,
122   IDS_MI_INIT_ERR_OUTOFBANDHANDLER,
123   IDS_MI_INIT_ERR_DEBUGSESSIONINFO,
124   IDS_MI_INIT_ERR_THREADMANAGER,
125   IDS_MI_INIT_ERR_CLIENT_USING_DRIVER,
126   IDS_MI_INIT_ERR_LOCAL_DEBUG_SESSION,
127
128   IDS_CODE_ERR_INVALID_PARAMETER_VALUE,
129   IDS_CODE_ERR_INVALID_PARAM_NULL_POINTER,
130   IDS_CODE_ERR_INVALID_ENUMERATION_VALUE,
131
132   IDS_LLDBDEBUGGER_ERR_INVALIDLISTENER,
133   IDS_LLDBDEBUGGER_ERR_INVALIDDEBUGGER,
134   IDS_LLDBDEBUGGER_ERR_CLIENTDRIVER,
135   IDS_LLDBDEBUGGER_ERR_STARTLISTENER,
136   IDS_LLDBDEBUGGER_ERR_THREADCREATIONFAIL,
137   IDS_LLDBDEBUGGER_ERR_THREAD_DELETE,
138   IDS_LLDBDEBUGGER_ERR_INVALIDBROADCASTER,
139   IDS_LLDBDEBUGGER_ERR_INVALIDCLIENTNAME,
140   IDS_LLDBDEBUGGER_ERR_CLIENTNOTREGISTERED,
141   IDS_LLDBDEBUGGER_ERR_STOPLISTENER,
142   IDS_LLDBDEBUGGER_ERR_BROADCASTER_NAME,
143   IDS_LLDBDEBUGGER_WRN_UNKNOWN_EVENT,
144
145   IDS_LLDBOUTOFBAND_ERR_UNKNOWN_EVENT,
146   IDS_LLDBOUTOFBAND_ERR_PROCESS_INVALID,
147   IDS_LLDBOUTOFBAND_ERR_BRKPT_NOTFOUND,
148   IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_GET,
149   IDS_LLDBOUTOFBAND_ERR_BRKPT_INFO_SET,
150   IDS_LLDBOUTOFBAND_ERR_FORM_MI_RESPONSE,
151   IDS_LLDBOUTOFBAND_ERR_FRAME_INFO_GET,
152   IDS_LLDBOUTOFBAND_ERR_SETNEWDRIVERSTATE,
153   IDS_LLDBOUTOFBAND_ERR_BRKPT_CNT_EXCEEDED,
154
155   IDS_DBGSESSION_ERR_SHARED_DATA_ADD,
156
157   IDS_MI_SHTDWN_ERR_LOG,
158   IDS_MI_SHUTDOWN_ERR,
159   IDE_MI_SHTDWN_ERR_RESOURCES,
160   IDE_MI_SHTDWN_ERR_STREAMSTDIN,
161   IDS_MI_SHTDWN_ERR_OS_STDIN_HANDLER,
162   IDS_MI_SHTDWN_ERR_STREAMSTDOUT,
163   IDS_MI_SHTDWN_ERR_STREAMSTDERR,
164   IDS_MI_SHTDWN_ERR_THREADMGR,
165   IDS_MI_SHTDWN_ERR_CMDINTERPRETER,
166   IDS_MI_SHTDWN_ERR_CMDMGR,
167   IDS_MI_SHTDWN_ERR_CMDFACTORY,
168   IDS_MI_SHTDWN_ERR_CMDINVOKER,
169   IDS_MI_SHTDWN_ERR_CMDMONITOR,
170   IDS_MI_SHTDWN_ERR_LLDBDEBUGGER,
171   IDS_MI_SHTDWN_ERR_DRIVERMGR,
172   IDS_MI_SHTDWN_ERR_DRIVER,
173   IDS_MI_SHTDWN_ERR_OUTOFBANDHANDLER,
174   IDS_MI_SHTDWN_ERR_DEBUGSESSIONINFO,
175   IDE_MI_SHTDWN_ERR_THREADMANAGER,
176
177   IDS_DRIVER_ERR_PARSE_ARGS,
178   IDS_DRIVER_ERR_PARSE_ARGS_UNKNOWN,
179   IDS_DRIVER_ERR_CURRENT_NOT_SET,
180   IDS_DRIVER_ERR_NON_REGISTERED,
181   IDS_DRIVER_SAY_DRIVER_USING,
182   IDS_DRIVER_ERR_ID_INVALID,
183   IDS_DRIVER_ERR_FALLTHRU_DRIVER_ERR,
184   IDS_DRIVER_CMD_RECEIVED,
185   IDS_DRIVER_CMD_NOT_IN_FACTORY,
186   IDS_DRIVER_ERR_DRIVER_STATE_ERROR,
187   IDS_DRIVER_ERR_MAINLOOP,
188   IDS_DRIVER_ERR_LOCAL_DEBUG_NOT_IMPL,
189   IDS_DRIVER_ERR_LOCAL_DEBUG_INIT,
190
191   IDS_DRIVER_WAITING_STDIN_DATA,
192
193   IDS_STDERR_ERR_NOT_ALL_DATA_WRITTEN,
194
195   IDS_CMD_ARGS_ERR_OPTION_NOT_FOUND,
196   IDS_CMD_ARGS_ERR_VALIDATION_MANDATORY,
197   IDS_CMD_ARGS_ERR_VALIDATION_INVALID,
198   IDS_CMD_ARGS_ERR_VALIDATION_MAN_INVALID,
199   IDS_CMD_ARGS_ERR_VALIDATION_MISSING_INF,
200   IDS_CMD_ARGS_ERR_CONTEXT_NOT_ALL_EATTEN,
201   IDS_CMD_ARGS_ERR_PREFIX_MSG,
202
203   IDS_VARIANT_ERR_USED_BASECLASS,
204   IDS_VARIANT_ERR_MAP_KEY_INVALID,
205
206   IDS_WORD_INVALIDBRKTS,
207   IDS_WORD_NONE,
208   IDS_WORD_NOT,
209   IDS_WORD_INVALIDEMPTY,
210   IDS_WORD_INVALIDNULLPTR,
211   IDS_WORD_UNKNOWNBRKTS,
212   IDS_WORD_NOT_IMPLEMENTED,
213   IDS_WORD_NOT_IMPLEMENTED_BRKTS,
214   IDS_WORD_UNKNOWNTYPE_BRKTS,
215   IDS_WORD_ERR_MSG_NOT_IMPLEMENTED_BRKTS,
216
217   IDS_CMD_ERR_N_OPTIONS_REQUIRED,
218   IDS_CMD_ERR_OPTION_NOT_FOUND,
219   IDS_CMD_ERR_ARGS,
220   IDS_CMD_WRN_ARGS_NOT_HANDLED,
221   IDS_CMD_ERR_FNFAILED,
222   IDS_CMD_ERR_SHARED_DATA_NOT_FOUND,
223   IDS_CMD_ERR_LLDBPROCESS_DETACH,
224   IDS_CMD_ERR_LLDBPROCESS_DESTROY,
225   IDS_CMD_ERR_SETWKDIR,
226   IDS_CMD_ERR_INVALID_TARGET,
227   IDS_CMD_ERR_INVALID_TARGET_CURRENT,
228   IDS_CMD_ERR_INVALID_TARGET_TYPE,
229   IDS_CMD_ERR_INVALID_TARGET_PLUGIN,
230   IDS_CMD_ERR_CONNECT_TO_TARGET,
231   IDS_CMD_ERR_INVALID_TARGETPLUGINCURRENT,
232   IDS_CMD_ERR_NOT_IMPLEMENTED,
233   IDS_CMD_ERR_NOT_IMPLEMENTED_DEPRECATED,
234   IDS_CMD_ERR_CREATE_TARGET,
235   IDS_CMD_ERR_BRKPT_LOCATION_FORMAT,
236   IDS_CMD_ERR_BRKPT_LOCATION_NOT_FOUND,
237   IDS_CMD_ERR_BRKPT_INVALID,
238   IDS_CMD_ERR_BRKPT_CNT_EXCEEDED,
239   IDS_CMD_ERR_SOME_ERROR,
240   IDS_CMD_ERR_THREAD_INVALID,
241   IDS_CMD_ERR_THREAD_FRAME_RANGE_INVALID,
242   IDS_CMD_ERR_FRAME_INVALID,
243   IDS_CMD_ERR_VARIABLE_DOESNOTEXIST,
244   IDS_CMD_ERR_VARIABLE_ENUM_INVALID,
245   IDS_CMD_ERR_VARIABLE_EXPRESSIONPATH,
246   IDS_CMD_ERR_VARIABLE_CREATION_FAILED,
247   IDS_CMD_ERR_VARIABLE_CHILD_RANGE_INVALID,
248   IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION,
249   IDS_CMD_ERR_EVENT_HANDLED_BUT_NO_ACTION,
250   IDS_CMD_ERR_DISASM_ADDR_START_INVALID,
251   IDS_CMD_ERR_DISASM_ADDR_END_INVALID,
252   IDS_CMD_ERR_MEMORY_ALLOC_FAILURE,
253   IDS_CMD_ERR_LLDB_ERR_NOT_READ_WHOLE_BLK,
254   IDS_CMD_ERR_LLDB_ERR_READ_MEM_BYTES,
255   IDS_CMD_ERR_INVALID_PROCESS,
256   IDS_CMD_ERR_INVALID_PRINT_VALUES,
257   IDS_CMD_ERR_INVALID_LOCATION_FORMAT,
258   IDS_CMD_ERR_INVALID_FORMAT_TYPE,
259   IDS_CMD_ERR_BRKPT_INFO_OBJ_NOT_FOUND,
260   IDS_CMD_ERR_LLDB_ERR_WRITE_MEM_BYTES,
261   IDS_CMD_ERR_LLDB_ERR_NOT_WRITE_WHOLEBLK,
262   IDS_CMD_ERR_SET_NEW_DRIVER_STATE,
263   IDS_CMD_ERR_INFO_PRINTFN_NOT_FOUND,
264   IDS_CMD_ERR_INFO_PRINTFN_FAILED,
265   IDS_CMD_ERR_GDBSET_OPT_TARGETASYNC,
266   IDS_CMD_ERR_GDBSET_OPT_BREAKPOINT,
267   IDS_CMD_ERR_GDBSET_OPT_SOLIBSEARCHPATH,
268   IDS_CMD_ERR_GDBSET_OPT_PRINT_BAD_ARGS,
269   IDS_CMD_ERR_GDBSET_OPT_PRINT_UNKNOWN_OPTION,
270   IDS_CMD_ERR_GDBSHOW_OPT_PRINT_BAD_ARGS,
271   IDS_CMD_ERR_GDBSHOW_OPT_PRINT_UNKNOWN_OPTION,
272   IDS_CMD_ERR_GDBSHOW_OPT_BREAKPOINT_BAD_ARGS,
273   IDS_CMD_ERR_GDBSHOW_OPT_BREAKPOINT_UNKNOWN_OPTION,
274   IDS_CMD_ERR_EXPR_INVALID,
275   IDS_CMD_ERR_ATTACH_FAILED,
276   IDS_CMD_ERR_ATTACH_BAD_ARGS
277 };
278
279 //++
280 //============================================================================
281 // Details: MI common code implementation class. Handle application resources
282 //          and locality.
283 //          Singleton class.
284 //--
285 class CMICmnResources : public CMICmnBase,
286                         public MI::ISingleton<CMICmnResources> {
287   friend class MI::ISingleton<CMICmnResources>;
288
289   // Methods:
290 public:
291   bool Initialize() override;
292   bool Shutdown() override;
293
294   CMIUtilString GetString(const MIuint vResourceId) const;
295   bool HasString(const MIuint vResourceId) const;
296
297   // Typedef:
298 private:
299   typedef std::map<MIuint, const char *> MapRscrIdToTextData_t;
300   typedef std::pair<MIuint, const char *> MapPairRscrIdToTextData_t;
301
302   // Enumerations:
303 private:
304   enum Buffer_e { eBufferSize = 2048 };
305
306   // Structs:
307 private:
308   struct SRsrcTextData {
309     MIuint id;
310     const char *pTextData;
311   };
312
313   // Methods:
314 private:
315   /* ctor */ CMICmnResources();
316   /* ctor */ CMICmnResources(const CMICmnResources &);
317   void operator=(const CMICmnResources &);
318
319   bool GetStringFromResource(const MIuint vResourceId,
320                              CMIUtilString &vrwResourceString) const;
321   bool ReadResourceStringData();
322
323   // Overridden:
324 private:
325   // From CMICmnBase
326   /* dtor */ ~CMICmnResources() override;
327
328   // Attributes:
329 private:
330   static const SRsrcTextData ms_pResourceId2TextData[];
331   //
332   MIuint m_nResourceId2TextDataSize;
333   MapRscrIdToTextData_t m_mapRscrIdToTextData;
334 };
335
336 //++ =========================================================================
337 // Details: Macro short cut for retrieving a text data resource
338 //--
339 #define MIRSRC(x) CMICmnResources::Instance().GetString(x).c_str()