diff options
Diffstat (limited to 'lldb/source/Expression/IRInterpreter.cpp')
-rw-r--r-- | lldb/source/Expression/IRInterpreter.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp index dcbf584cfb6..c8da6a68c6a 100644 --- a/lldb/source/Expression/IRInterpreter.cpp +++ b/lldb/source/Expression/IRInterpreter.cpp @@ -14,6 +14,7 @@ #include "lldb/Core/StreamString.h" #include "lldb/Expression/IRMemoryMap.h" #include "lldb/Expression/IRInterpreter.h" +#include "lldb/Host/Endian.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" @@ -321,13 +322,19 @@ public: if (!ResolveConstantValue(resolved_value, constant)) return false; - const uint64_t *raw_data = resolved_value.getRawData(); - + lldb_private::StreamString buffer (lldb_private::Stream::eBinary, + m_memory_map.GetAddressByteSize(), + m_memory_map.GetByteOrder()); + size_t constant_size = m_target_data.getTypeStoreSize(constant->getType()); + const uint64_t *raw_data = resolved_value.getRawData(); + + buffer.PutRawBytes(raw_data, constant_size, lldb::endian::InlHostByteOrder()); + lldb_private::Error write_error; - m_memory_map.WriteMemory(process_address, (uint8_t*)raw_data, constant_size, write_error); + m_memory_map.WriteMemory(process_address, (const uint8_t*)buffer.GetData(), constant_size, write_error); return write_error.Success(); } |