Use the backtrace interface to skip java maps.

This has no effect until the new unwinder is used. When the new
unwinder is enabled this will have nearly the same behavior as the
old unwinder. The difference is that the old unwinder ignored the
minidebug information (compressed section data) completely. The new
unwinder will not ignore minidebug information in system libraries,
it will only ignore them in .oat or .odex maps.

There will be a small difference between the new and old unwinder. The
new unwinder when dumping in an ANR trace file looks like this:

  native: #00 pc 0000000000069abc  /system/lib64/libc.so (__epoll_pwait+8)
  native: #01 pc 000000000001feb4  /system/lib64/libc.so (epoll_pwait+52)
  native: #02 pc 0000000000015cec  /system/lib64/libutils.so (android::Looper::pollInner(int)+144)
  native: #03 pc 0000000000015bcc  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+108)
  native: #04 pc 0000000000110d98  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
  at android.os.MessageQueue.nativePollOnce(Native method)
  at android.os.MessageQueue.next(MessageQueue.java:325)
  at android.os.Looper.loop(Looper.java:142)
  at android.app.ActivityThread.main(ActivityThread.java:6569)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)

The old unwinder looks like this:

  native: #00 pc 0000000000069abc  /system/lib64/libc.so (__epoll_pwait+8)
  native: #01 pc 000000000001feb4  /system/lib64/libc.so (epoll_pwait+52)
  native: #02 pc 0000000000015cec  /system/lib64/libutils.so (android::Looper::p
ollInner(int)+144)
  native: #03 pc 0000000000015bcc  /system/lib64/libutils.so (android::Looper::p
ollOnce(int, int*, int*, void**)+108)
  native: #04 pc 0000000000110d98  /system/lib64/libandroid_runtime.so (???)
  native: #05 pc 00000000001d1e1c  /system/framework/arm64/boot-framework.oat (J
ava_android_os_MessageQueue_nativePollOnce__JI+140)
  at android.os.MessageQueue.nativePollOnce(Native method)
  at android.os.MessageQueue.next(MessageQueue.java:325)
  at android.os.Looper.loop(Looper.java:142)
  at android.app.ActivityThread.main(ActivityThread.java:6569)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.jav
a:438)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)

Test: kill -3 of android process.
Change-Id: If9d282d1a7a303c4f2af296bd98b1994b9bc2660
diff --git a/runtime/thread_list.cc b/runtime/thread_list.cc
index cad164c..88f1fc6 100644
--- a/runtime/thread_list.cc
+++ b/runtime/thread_list.cc
@@ -21,6 +21,7 @@
 #include <unistd.h>
 
 #include <sstream>
+#include <vector>
 
 #include "android-base/stringprintf.h"
 #include "backtrace/BacktraceMap.h"
@@ -204,7 +205,11 @@
       : os_(os),
         barrier_(0),
         backtrace_map_(dump_native_stack ? BacktraceMap::Create(getpid()) : nullptr),
-        dump_native_stack_(dump_native_stack) {}
+        dump_native_stack_(dump_native_stack) {
+    if (backtrace_map_ != nullptr) {
+      backtrace_map_->SetSuffixesToIgnore(std::vector<std::string> { "oat", "odex" });
+    }
+  }
 
   void Run(Thread* thread) OVERRIDE {
     // Note thread and self may not be equal if thread was already suspended at the point of the