Index: src/platform-linux.cc |
diff --git a/src/platform-linux.cc b/src/platform-linux.cc |
index 69e767accd0e567574fa1810936c839d79a4572f..6e1faf831757cac9ed71c6f85aba925e5e72a9fe 100644 |
--- a/src/platform-linux.cc |
+++ b/src/platform-linux.cc |
@@ -611,9 +611,16 @@ static void ProfilerSignalHandler(int signal, siginfo_t* info, void* context) { |
sample.sp = mcontext.gregs[REG_RSP]; |
sample.fp = mcontext.gregs[REG_RBP]; |
#elif V8_HOST_ARCH_ARM |
+// An undefined macro evaluates to 0, so this applies to Android's Bionic also. |
+#if (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3)) |
sample.pc = mcontext.gregs[R15]; |
sample.sp = mcontext.gregs[R13]; |
sample.fp = mcontext.gregs[R11]; |
+#else |
+ sample.pc = mcontext.arm_pc; |
+ sample.sp = mcontext.arm_sp; |
+ sample.fp = mcontext.arm_fp; |
+#endif |
#endif |
} |