[debug-only/non-production] Fix libbacktrace integration on arm/64

Fixes stacktraces for debug builds on Android.
This does not have any effect on in-tree Android builds
or any form of official build.

Bug: 76169489
Change-Id: Id8883e0980ae10e9f1934a73f27f34547cbe1948
diff --git a/buildtools/BUILD.gn b/buildtools/BUILD.gn
index 836a8a3..1a4106d 100644
--- a/buildtools/BUILD.gn
+++ b/buildtools/BUILD.gn
@@ -555,15 +555,12 @@
 
   source_set("libbacktrace") {
     sources = [
-      "libbacktrace/backtrace.c",
       "libbacktrace/dwarf.c",
       "libbacktrace/elf.c",
       "libbacktrace/fileline.c",
       "libbacktrace/mmap.c",
       "libbacktrace/mmapio.c",
       "libbacktrace/posix.c",
-      "libbacktrace/print.c",
-      "libbacktrace/simple.c",
       "libbacktrace/sort.c",
       "libbacktrace/state.c",
     ]
diff --git a/buildtools/libbacktrace_config/config.h b/buildtools/libbacktrace_config/config.h
index 0ced426..4ad1082 100644
--- a/buildtools/libbacktrace_config/config.h
+++ b/buildtools/libbacktrace_config/config.h
@@ -17,14 +17,18 @@
 #ifndef BUILDTOOLS_LIBBACKTRACE_CONFIG_CONFIG_H_
 #define BUILDTOOLS_LIBBACKTRACE_CONFIG_CONFIG_H_
 
+#if defined(__i386__) || defined(__ARMEL__)
+#define BACKTRACE_ELF_SIZE 32
+#else
 #define BACKTRACE_ELF_SIZE 64
+#endif
+
 #define BACKTRACE_XCOFF_SIZE unused
 #define HAVE_ATOMIC_FUNCTIONS 1
 #define HAVE_CLOCK_GETTIME 1
 #define HAVE_DECL_STRNLEN 1
 #define HAVE_DLFCN_H 1
 #define HAVE_FCNTL 1
-#define HAVE_GETIPINFO 1
 #define HAVE_INTTYPES_H 1
 #define HAVE_LSTAT 1
 #define HAVE_MEMORY_H 1
@@ -40,6 +44,7 @@
 #define HAVE_UNISTD_H 1
 #define HAVE_LINK_H 1
 #define STDC_HEADERS 1
+#define HAVE_DL_ITERATE_PHDR 1
 
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1
diff --git a/src/base/debug_crash_stack_trace.cc b/src/base/debug_crash_stack_trace.cc
index d32f941..116acb7 100644
--- a/src/base/debug_crash_stack_trace.cc
+++ b/src/base/debug_crash_stack_trace.cc
@@ -143,9 +143,6 @@
 #endif
 
   for (uint8_t i = 0; i < unwind_state.frame_count; i++) {
-    Print("\n#");
-    PrintHex(i);
-    Print("  ");
     struct SymbolInfo {
       char sym_name[255];
       char file_name[255];
@@ -173,6 +170,10 @@
       strncpy(sym.sym_name, dl_info.dli_sname, sizeof(sym.sym_name));
 #endif
 
+    Print("\n#");
+    PrintHex(i);
+    Print("  ");
+
     if (sym.sym_name[0]) {
       int ignored;
       size_t len = kDemangledNameLen;