Skip to content

Commit cd8941d

Browse files
committed
* Use GetSetting instead of Handle command
* Implement OptionValueEnumeration::ToJSON
1 parent 308c5d8 commit cd8941d

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

lldb/include/lldb/Interpreter/OptionValueEnumeration.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ class OptionValueEnumeration
4141
void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
4242
uint32_t dump_mask) override;
4343

44+
llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override;
45+
4446
Status
4547
SetValueFromString(llvm::StringRef value,
4648
VarSetOperationType op = eVarSetOperationAssign) override;

lldb/source/Interpreter/OptionValueEnumeration.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ void OptionValueEnumeration::DumpValue(const ExecutionContext *exe_ctx,
3737
}
3838
}
3939

40+
llvm::json::Value
41+
OptionValueEnumeration::ToJSON(const ExecutionContext *exe_ctx) {
42+
const size_t count = m_enumerations.GetSize();
43+
for (size_t i = 0; i < count; ++i) {
44+
if (m_enumerations.GetValueAtIndexUnchecked(i).value == m_current_value) {
45+
return m_enumerations.GetCStringAtIndex(i).GetStringRef();
46+
}
47+
}
48+
49+
return m_current_value;
50+
}
51+
4052
Status OptionValueEnumeration::SetValueFromString(llvm::StringRef value,
4153
VarSetOperationType op) {
4254
Status error;

lldb/tools/lldb-dap/LLDBUtils.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,16 @@ GetEnvironmentFromArguments(const llvm::json::Object &arguments) {
164164
}
165165

166166
std::string GetStopDisassemblyDisplay(lldb::SBDebugger &debugger) {
167-
std::string stop_disassembly_display = "no-debuginfo"; // default value
168-
lldb::SBCommandReturnObject result;
169-
debugger.GetCommandInterpreter().HandleCommand(
170-
"settings show stop-disassembly-display", result);
171-
if (result.Succeeded()) {
172-
std::string output = result.GetOutput();
173-
size_t pos = output.find("stop-disassembly-display");
174-
if (pos != std::string::npos) {
175-
size_t start = output.find("= ", pos) + 2;
176-
size_t end = output.find("\n", start);
177-
stop_disassembly_display =
178-
output.substr(start, end - start); // trim whitespace
179-
}
167+
lldb::SBStructuredData result =
168+
debugger.GetSetting("stop-disassembly-display");
169+
const size_t result_length = result.GetStringValue(nullptr, 0);
170+
if (result_length > 0) {
171+
std::string result_string(result_length, '\0');
172+
result.GetStringValue(result_string.data(), result_length + 1);
173+
return result_string;
180174
}
181175

182-
return stop_disassembly_display;
176+
return "no-debuginfo";
183177
}
184178

185179
llvm::Error ToError(const lldb::SBError &error) {

0 commit comments

Comments
 (0)