Save the pc for aarch64 current unwind.

I had forgotten that I never properly recorded the pc correctly for
aarch64. I was simply using the lr value and assuming it would be
good enough. In many cases it was, but if the sp was not the same,
then an unwind of the currently executing thread would go off into
the weeds.

Actually, record the pc using the adr instruction.

Test: Run backtrace unit tests on angler.

Change-Id: I2df2dea77608f87c82bcf086dce75be1d34e86d1
diff --git a/include/libunwind-aarch64.h b/include/libunwind-aarch64.h
index 9883cf3..f942586 100644
--- a/include/libunwind-aarch64.h
+++ b/include/libunwind-aarch64.h
@@ -187,6 +187,7 @@
   unw_tdep_context_t *unw_ctx = (uc);					\
   register uint64_t *unw_base asm ("x0") = (uint64_t*) unw_ctx->uc_mcontext.regs;		\
   __asm__ __volatile__ (						\
+     "1:\n" \
      "stp x0, x1, [%[base], #0]\n" \
      "stp x2, x3, [%[base], #16]\n" \
      "stp x4, x5, [%[base], #32]\n" \
@@ -204,8 +205,9 @@
      "stp x28, x29, [%[base], #224]\n" \
      "str x30, [%[base], #240]\n" \
      "mov x1, sp\n" \
-     "stp x1, x30, [%[base], #248]\n" \
-     : [base] "+r" (unw_base) : : "x1", "memory"); \
+     "adr x2, 1b\n" \
+     "stp x1, x2, [%[base], #248]\n" \
+     : [base] "+r" (unw_base) : : "x1", "x2", "memory"); \
   }), 0)
 /* End of ANDROID update. */
 #define unw_tdep_is_fpreg		UNW_ARCH_OBJ(is_fpreg)