summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2014-09-02 12:49:32 -0700
committerChristopher Ferris <cferris@google.com>2014-09-05 17:17:04 -0700
commitbebb26725ad04f775b040ca7b97ac4b930c0d362 (patch)
treeb3aad1460ff4d8f3bf904265894c96c714cd647f
parent523afd157be99ddce8c0f643caceb9db4a9227bb (diff)
downloadbase-bebb26725ad04f775b040ca7b97ac4b930c0d362.tar.gz
Add new header to support 32 bit/64 bit dumps.
Bug: 17319589 (cherry picked from commit 0d3c045a0d48193150689e5924bd04c511380a8a) Change-Id: I79aa035098115de7b02171a9432ff7e9393328ab
-rw-r--r--core/jni/android_ddm_DdmHandleNativeHeap.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/core/jni/android_ddm_DdmHandleNativeHeap.cpp b/core/jni/android_ddm_DdmHandleNativeHeap.cpp
index f5eaf94b15d2..9b963209f892 100644
--- a/core/jni/android_ddm_DdmHandleNativeHeap.cpp
+++ b/core/jni/android_ddm_DdmHandleNativeHeap.cpp
@@ -35,7 +35,15 @@ extern "C" void get_malloc_leak_info(uint8_t** info, size_t* overallSize,
extern "C" void free_malloc_leak_info(uint8_t* info);
+#define DDMS_HEADER_SIGNATURE 0x812345dd
+#define DDMS_VERSION 2
+
struct Header {
+#if defined(__LP64__)
+ uint32_t signature;
+ uint16_t version;
+ uint16_t pointerSize;
+#endif
size_t mapSize;
size_t allocSize;
size_t allocInfoSize;
@@ -77,6 +85,12 @@ static jbyteArray DdmHandleNativeHeap_getLeakInfo(JNIEnv* env, jobject) {
ALOGD("*** mapSize: %d allocSize: %d allocInfoSize: %d totalMemory: %d",
header.mapSize, header.allocSize, header.allocInfoSize, header.totalMemory);
+#if defined(__LP64__)
+ header.signature = DDMS_HEADER_SIGNATURE;
+ header.version = DDMS_VERSION;
+ header.pointerSize = sizeof(void*);
+#endif
+
jbyteArray array = env->NewByteArray(sizeof(Header) + header.mapSize + header.allocSize);
if (array != NULL) {
env->SetByteArrayRegion(array, 0,