================ @@ -885,6 +885,55 @@ class CommandObjectMemoryRead : public CommandObjectParsed { #define LLDB_OPTIONS_memory_find #include "CommandOptions.inc" +static llvm::Error CopyExpressionResult(ValueObject &result, + DataBufferHeap &buffer) { + uint64_t value = result.GetValueAsUnsigned(0); + auto size_or_err = result.GetCompilerType().GetByteSize(nullptr); + if (!size_or_err) + return size_or_err.takeError(); + + switch (*size_or_err) { + case 1: { + uint8_t byte = (uint8_t)value; + buffer.CopyData(&byte, 1); + } break; + case 2: { + uint16_t word = (uint16_t)value; + buffer.CopyData(&word, 2); + } break; + case 4: { + uint32_t lword = (uint32_t)value; + buffer.CopyData(&lword, 4); + } break; + case 8: { + buffer.CopyData(&value, 8); + } break; + case 3: + case 5: + case 6: + case 7: + return llvm::createStringError("unknown type. pass a string instead"); + default: + return llvm::createStringError( + "result size larger than 8 bytes. pass a string instead"); + } + + return llvm::Error::success(); +} + +static llvm::Expected<ValueObjectSP> +EvaluateExpression(llvm::StringRef expression, StackFrame &frame, + Process &process) { + ValueObjectSP result_sp; + auto status = + process.GetTarget().EvaluateExpression(expression, &frame, result_sp); + if (status != eExpressionCompleted || !result_sp) ---------------- Michael137 wrote:
Yea that seems reasonable. Happy to address that in a separate patch (just to keep things simple for this particular fix) https://github.com/llvm/llvm-project/pull/143686 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits