OSDN Git Service

Add ABI to leak report
authorColin Cross <ccross@android.com>
Sat, 5 Mar 2016 00:37:02 +0000 (16:37 -0800)
committerColin Cross <ccross@android.com>
Mon, 7 Mar 2016 23:52:39 +0000 (15:52 -0800)
Add the ABI to the leak report so that it can be piped through
development/scripts/stack.

Bug: 27208635
Change-Id: I2e050a377305d48d2f904f34ea921f64e13dd00e
(cherry picked from commit 11185af983f955f5c5d59c15e1a96ac610a528be)

libmemunreachable/MemUnreachable.cpp

index a8be855..ac19a66 100644 (file)
@@ -468,11 +468,30 @@ std::string Leak::ToString(bool log_contents) const {
   return oss.str();
 }
 
+// Figure out the abi based on defined macros.
+#if defined(__arm__)
+#define ABI_STRING "arm"
+#elif defined(__aarch64__)
+#define ABI_STRING "arm64"
+#elif defined(__mips__) && !defined(__LP64__)
+#define ABI_STRING "mips"
+#elif defined(__mips__) && defined(__LP64__)
+#define ABI_STRING "mips64"
+#elif defined(__i386__)
+#define ABI_STRING "x86"
+#elif defined(__x86_64__)
+#define ABI_STRING "x86_64"
+#else
+#error "Unsupported ABI"
+#endif
+
 std::string UnreachableMemoryInfo::ToString(bool log_contents) const {
   std::ostringstream oss;
   oss << "  " << leak_bytes << " bytes in ";
   oss << num_leaks << " unreachable allocation" << plural(num_leaks);
   oss << std::endl;
+  oss << "  ABI: '" ABI_STRING "'" << std::endl;
+  oss << std::endl;
 
   for (auto it = leaks.begin(); it != leaks.end(); it++) {
       oss << it->ToString(log_contents);