Skip to content

Commit

Permalink
ARM64: perf: support dwarf unwinding in compat mode
Browse files Browse the repository at this point in the history
Add support for unwinding using the dwarf information in compat
mode. Using the correct user stack pointer allows perf to record
the frames correctly in the native and compat modes.

Note that although the dwarf frame unwinding works ok using
libunwind in native mode (on ARMv7 & ARMv8), some changes are
required to the libunwind code for the compat mode. Those changes
are posted separately on the libunwind mailing list.

Tested on ARMv8 platform with v8 and compat v7 binaries, the latter
are statically built.

Signed-off-by: Jean Pihet <jean.pihet@linaro.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
  • Loading branch information
Jean Pihet authored and Catalin Marinas committed Mar 13, 2014
1 parent 23c7d70 commit 5f888a1
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion arch/arm64/include/asm/compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
return (u32)(unsigned long)uptr;
}

#define compat_user_stack_pointer() (current_pt_regs()->compat_sp)
#define compat_user_stack_pointer() (user_stack_pointer(current_pt_regs()))

static inline void __user *arch_compat_alloc_user_space(long len)
{
Expand Down
2 changes: 1 addition & 1 deletion arch/arm64/include/asm/ptrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ struct pt_regs {
(!((regs)->pstate & PSR_F_BIT))

#define user_stack_pointer(regs) \
((regs)->sp)
(!compat_user_mode(regs)) ? ((regs)->sp) : ((regs)->compat_sp)

/*
* Are the current registers suitable for user mode? (used to maintain
Expand Down

0 comments on commit 5f888a1

Please sign in to comment.