1 //===-- MICmnResources.h ----------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
11 // Third party headers
15 #include "MICmnBase.h"
16 #include "MIUtilSingletonBase.h"
17 #include "MIUtilString.h"
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 ****
26 IDS_MI_VERSION_DESCRIPTION_DEBUG,
27 IDS_MI_VERSION_DESCRIPTION,
30 IDS_MI_APP_FILEPATHNAME,
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,
40 IDS_RESOURCES_ERR_STRING_NOT_FOUND,
41 IDS_RESOURCES_ERR_STRING_TABLE_INVALID,
45 IDS_LOG_MSG_CREATION_DATE,
46 IDS_LOG_MSG_FILE_LOGGER_PATH,
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,
54 IDS_MEDIUMFILE_ERR_INVALID_PATH,
55 IDS_MEDIUMFILE_ERR_FILE_HEADER,
56 IDS_MEDIUMFILE_NAME_LOG,
59 IDE_OS_ERR_RETRIEVING,
61 IDS_DRIVERMGR_DRIVER_ERR_INIT,
63 IDE_MEDIUMSTDERR_NAME,
64 IDE_MEDIUMSTDOUT_NAME,
66 IDE_MI_APP_DESCRIPTION,
67 IDE_MI_APP_INFORMATION,
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,
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,
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,
94 IDS_FALLTHRU_DRIVER_CMD_RECEIVED,
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,
101 IDS_CMDMGR_ERR_CMD_FAILED_CREATE,
102 IDS_CMDMGR_ERR_CMD_INVOKER,
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,
128 IDS_CODE_ERR_INVALID_PARAMETER_VALUE,
129 IDS_CODE_ERR_INVALID_PARAM_NULL_POINTER,
130 IDS_CODE_ERR_INVALID_ENUMERATION_VALUE,
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,
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,
155 IDS_DBGSESSION_ERR_SHARED_DATA_ADD,
157 IDS_MI_SHTDWN_ERR_LOG,
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,
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,
191 IDS_DRIVER_WAITING_STDIN_DATA,
193 IDS_STDERR_ERR_NOT_ALL_DATA_WRITTEN,
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,
203 IDS_VARIANT_ERR_USED_BASECLASS,
204 IDS_VARIANT_ERR_MAP_KEY_INVALID,
206 IDS_WORD_INVALIDBRKTS,
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,
217 IDS_CMD_ERR_N_OPTIONS_REQUIRED,
218 IDS_CMD_ERR_OPTION_NOT_FOUND,
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
280 //============================================================================
281 // Details: MI common code implementation class. Handle application resources
285 class CMICmnResources : public CMICmnBase,
286 public MI::ISingleton<CMICmnResources> {
287 friend class MI::ISingleton<CMICmnResources>;
291 bool Initialize() override;
292 bool Shutdown() override;
294 CMIUtilString GetString(const MIuint vResourceId) const;
295 bool HasString(const MIuint vResourceId) const;
299 typedef std::map<MIuint, const char *> MapRscrIdToTextData_t;
300 typedef std::pair<MIuint, const char *> MapPairRscrIdToTextData_t;
304 enum Buffer_e { eBufferSize = 2048 };
308 struct SRsrcTextData {
310 const char *pTextData;
315 /* ctor */ CMICmnResources();
316 /* ctor */ CMICmnResources(const CMICmnResources &);
317 void operator=(const CMICmnResources &);
319 bool GetStringFromResource(const MIuint vResourceId,
320 CMIUtilString &vrwResourceString) const;
321 bool ReadResourceStringData();
326 /* dtor */ ~CMICmnResources() override;
330 static const SRsrcTextData ms_pResourceId2TextData[];
332 MIuint m_nResourceId2TextDataSize;
333 MapRscrIdToTextData_t m_mapRscrIdToTextData;
336 //++ =========================================================================
337 // Details: Macro short cut for retrieving a text data resource
339 #define MIRSRC(x) CMICmnResources::Instance().GetString(x).c_str()