Author: davide Date: Tue Dec 12 17:41:16 2017 New Revision: 320540 URL: http://llvm.org/viewvc/llvm-project?rev=320540&view=rev Log: [DataEncoder] Replace buggy versions of write functions.
This fixes a previously introduced thinko, now that I have a better idea of what's going on :) <rdar://problem/35941757> Modified: lldb/trunk/source/Utility/DataEncoder.cpp Modified: lldb/trunk/source/Utility/DataEncoder.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/DataEncoder.cpp?rev=320540&r1=320539&r2=320540&view=diff ============================================================================== --- lldb/trunk/source/Utility/DataEncoder.cpp (original) +++ lldb/trunk/source/Utility/DataEncoder.cpp Tue Dec 12 17:41:16 2017 @@ -12,6 +12,7 @@ #include "lldb/Utility/DataBuffer.h" #include "lldb/Utility/Endian.h" +#include "llvm/Support/Endian.h" #include "llvm/Support/ErrorHandling.h" // for llvm_unreachable #include "llvm/Support/MathExtras.h" @@ -22,36 +23,7 @@ using namespace lldb; using namespace lldb_private; - -static inline void WriteInt16(unsigned char *ptr, unsigned offset, - uint16_t value) { - *(uint16_t *)(ptr + offset) = value; -} - -static inline void WriteInt32(unsigned char *ptr, unsigned offset, - uint32_t value) { - *(uint32_t *)(ptr + offset) = value; -} - -static inline void WriteInt64(unsigned char *ptr, unsigned offset, - uint64_t value) { - *(uint64_t *)(ptr + offset) = value; -} - -static inline void WriteSwappedInt16(unsigned char *ptr, unsigned offset, - uint16_t value) { - *(uint16_t *)(ptr + offset) = llvm::ByteSwap_16(value); -} - -static inline void WriteSwappedInt32(unsigned char *ptr, unsigned offset, - uint32_t value) { - *(uint32_t *)(ptr + offset) = llvm::ByteSwap_32(value); -} - -static inline void WriteSwappedInt64(unsigned char *ptr, unsigned offset, - uint64_t value) { - *(uint64_t *)(ptr + offset) = llvm::ByteSwap_64(value); -} +using namespace llvm::support::endian; //---------------------------------------------------------------------- // Default constructor. @@ -202,9 +174,9 @@ uint32_t DataEncoder::PutU8(uint32_t off uint32_t DataEncoder::PutU16(uint32_t offset, uint16_t value) { if (ValidOffsetForDataOfSize(offset, sizeof(value))) { if (m_byte_order != endian::InlHostByteOrder()) - WriteSwappedInt16(m_start, offset, value); + write16be(m_start + offset, value); else - WriteInt16(m_start, offset, value); + write16le(m_start + offset, value); return offset + sizeof(value); } @@ -214,9 +186,9 @@ uint32_t DataEncoder::PutU16(uint32_t of uint32_t DataEncoder::PutU32(uint32_t offset, uint32_t value) { if (ValidOffsetForDataOfSize(offset, sizeof(value))) { if (m_byte_order != endian::InlHostByteOrder()) - WriteSwappedInt32(m_start, offset, value); + write32be(m_start + offset, value); else - WriteInt32(m_start, offset, value); + write32le(m_start + offset, value); return offset + sizeof(value); } @@ -226,9 +198,9 @@ uint32_t DataEncoder::PutU32(uint32_t of uint32_t DataEncoder::PutU64(uint32_t offset, uint64_t value) { if (ValidOffsetForDataOfSize(offset, sizeof(value))) { if (m_byte_order != endian::InlHostByteOrder()) - WriteSwappedInt64(m_start, offset, value); + write64be(m_start + offset, value); else - WriteInt64(m_start, offset, value); + write64le(m_start + offset, value); return offset + sizeof(value); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits