diff options
author | digit@chromium.org <digit@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-07-04 11:56:26 +0000 |
---|---|---|
committer | digit@chromium.org <digit@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-07-04 11:56:26 +0000 |
commit | 8d96707553bb97c8a40e24921d4552d2d65efdba (patch) | |
tree | 8e0842c7896a042e7eb926bf81bce746575c5d7e /src/client/linux/minidump_writer | |
parent | Do not fail crash dump generation if handle operations tracing is not enabled (diff) | |
download | breakpad-8d96707553bb97c8a40e24921d4552d2d65efdba.tar.xz |
Add MD_OS_ANDROID definition.
In order to better distinguish Android and Linux minidumps, introduce
a new MD_OS_ANDROID definition, and modify related source code accordingly.
Also append the build-fingerprint to the minidump location descriptor.
This gives more information about the system image the device runs on.
Review URL: https://breakpad.appspot.com/405002
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@981 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/minidump_writer')
-rw-r--r-- | src/client/linux/minidump_writer/minidump_writer.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc index 35a291db..209e1720 100644 --- a/src/client/linux/minidump_writer/minidump_writer.cc +++ b/src/client/linux/minidump_writer/minidump_writer.cc @@ -53,6 +53,9 @@ #include <link.h> #endif #include <stdio.h> +#if defined(__ANDROID__) +#include <sys/system_properties.h> +#endif #if !defined(__ANDROID__) #include <sys/ucontext.h> #include <sys/user.h> @@ -1246,7 +1249,11 @@ class MinidumpWriter { } bool WriteOSInformation(MDRawSystemInfo* sys_info) { +#if defined(__ANDROID__) + sys_info->platform_id = MD_OS_ANDROID; +#else sys_info->platform_id = MD_OS_LINUX; +#endif struct utsname uts; if (uname(&uts)) @@ -1283,6 +1290,23 @@ class MinidumpWriter { space_left -= info_len; } +#ifdef __ANDROID__ + // On Android, try to get the build fingerprint and append it. + // Fail gracefully because there is no guarantee that the system + // property will always be available or accessible. + char fingerprint[PROP_VALUE_MAX]; + int fingerprint_len = __system_property_get("ro.build.fingerprint", + fingerprint); + // System property values shall always be zero-terminated. + // Be paranoid and don't trust the system. + if (fingerprint_len > 0 && fingerprint_len < PROP_VALUE_MAX) { + const char* separator = " "; + if (!first_item) + strlcat(buf, separator, buf_len); + strlcat(buf, fingerprint, buf_len); + } +#endif + MDLocationDescriptor location; if (!minidump_writer_.WriteString(buf, 0, &location)) return false; |