summaryrefslogtreecommitdiff
path: root/simpleperf/utils.h
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2016-11-10 15:25:15 -0800
committerYabin Cui <yabinc@google.com>2016-11-10 15:26:26 -0800
commitc24dd76c350b6880df5f1398f9a8fe0d1cff0948 (patch)
tree0edb60e0600b9a93d270a4da6181f2b3ae6ae130 /simpleperf/utils.h
parentf94f3d3d43aaaec680fffa43b12eaa7d6c83d98a (diff)
downloadextras-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.h4
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);
}