From 932247e900479e85528b6751e0fd2c02ae0c1dda Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Tue, 7 Aug 2018 11:42:10 +0100 Subject: [PATCH] Allow to get raw register data on all platforms. No new test failures introduced. atest libunwindstack_test on aosp_walleye-userdebug: Without patch: Total: 800, Passed: 781, Failed: 19 With patch: Total: 800, Passed: 781, Failed: 19 Change-Id: I8853c3e1594799761b481464b75e2904b38c4830 --- libunwindstack/include/unwindstack/RegsGetLocal.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libunwindstack/include/unwindstack/RegsGetLocal.h b/libunwindstack/include/unwindstack/RegsGetLocal.h index 81c0af374..f0b5e3a1d 100644 --- a/libunwindstack/include/unwindstack/RegsGetLocal.h +++ b/libunwindstack/include/unwindstack/RegsGetLocal.h @@ -33,8 +33,7 @@ namespace unwindstack { #if defined(__arm__) -inline __always_inline void RegsGetLocal(Regs* regs) { - void* reg_data = regs->RawData(); +inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) { asm volatile( ".align 2\n" "bx pc\n" @@ -55,8 +54,7 @@ inline __always_inline void RegsGetLocal(Regs* regs) { #elif defined(__aarch64__) -inline __always_inline void RegsGetLocal(Regs* regs) { - void* reg_data = regs->RawData(); +inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) { asm volatile( "1:\n" "stp x0, x1, [%[base], #0]\n" @@ -87,11 +85,12 @@ inline __always_inline void RegsGetLocal(Regs* regs) { extern "C" void AsmGetRegs(void* regs); -inline void RegsGetLocal(Regs* regs) { +#endif + +inline __attribute__((__always_inline__)) void RegsGetLocal(Regs* regs) { AsmGetRegs(regs->RawData()); } -#endif } // namespace unwindstack