diff options
author | Yabin Cui <yabinc@google.com> | 2016-11-10 15:25:15 -0800 |
---|---|---|
committer | Yabin Cui <yabinc@google.com> | 2016-11-10 15:26:26 -0800 |
commit | c24dd76c350b6880df5f1398f9a8fe0d1cff0948 (patch) | |
tree | 0edb60e0600b9a93d270a4da6181f2b3ae6ae130 /simpleperf/utils.h | |
parent | f94f3d3d43aaaec680fffa43b12eaa7d6c83d98a (diff) | |
download | extras-c24dd76c350b6880df5f1398f9a8fe0d1cff0948.tar.gz |
simpleperf: fix unaligned data access on arm.
Bug: http://b/32340274
Test: run `simpleperf record --dump-symbols` manually.
Test: run simpleperf_unit_test.
Change-Id: I771a516bb644f18fafa987061ecfc76ae3521ca9
Diffstat (limited to 'simpleperf/utils.h')
-rw-r--r-- | simpleperf/utils.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/simpleperf/utils.h b/simpleperf/utils.h index 89962a66..fc21a99f 100644 --- a/simpleperf/utils.h +++ b/simpleperf/utils.h @@ -108,7 +108,7 @@ class ArchiveHelper { template <class T> void MoveFromBinaryFormat(T& data, const char*& p) { static_assert(std::is_standard_layout<T>::value, "not standard layout"); - data = *reinterpret_cast<const T*>(p); + memcpy(&data, p, sizeof(T)); p += sizeof(T); } @@ -123,7 +123,7 @@ void MoveFromBinaryFormat(T* data_p, size_t n, const char*& p) { template <class T> void MoveToBinaryFormat(const T& data, char*& p) { static_assert(std::is_standard_layout<T>::value, "not standard layout"); - *reinterpret_cast<T*>(p) = data; + memcpy(p, &data, sizeof(T)); p += sizeof(T); } |