[Lldb-commits] [lldb] r320540 - [DataEncoder] Replace buggy versions of write functions.

Davide Italiano via lldb-commits lldb-commits at lists.llvm.org
Tue Dec 12 17:41:16 PST 2017


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);
   }




More information about the lldb-commits mailing list