Message ID | DDD18BB4-B773-4471-B5E0-9DDD839B7D46@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: vdso: Fix CFI info in sigreturn. | expand |
Hi Daniel, On Fri, May 08, 2020 at 09:52:14AM +0000, Daniel Kiss wrote: > [PATCH] arm64: vdso: Fix CFI info in sigreturn. > > When the signal handler is called the registers set up as the return address > points to the __kernel_rt_sigreturn. The NOP here is the placeholder of the > branch and link instruction that "calls" the signal handler. In case of a > return address the unwinder identifies the location of the caller because > in some cases the return address might not exist. Since the .cfi_startproc > is after the NOP, it won't be associated with any location and the > unwinder will stop walking. > This change corrects the generated EHFrames only. > Signed-off-by: Daniel Kiss <daniel.kiss@arm.com(opens in new tab)> > Signed-off-by: Tamas Zsoldos <tamas.zsoldos@arm.com(opens in new tab)> Something appears to have gone wrong here; was this copy-pasted from somewhere? > --- > arch/arm64/kernel/vdso/sigreturn.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/sigreturn.S > index 12324863d5c2..5d50ee92faa4 100644 > --- a/arch/arm64/kernel/vdso/sigreturn.S > +++ b/arch/arm64/kernel/vdso/sigreturn.S > @@ -13,13 +13,13 @@ > .text > - nop > -SYM_FUNC_START(__kernel_rt_sigreturn) > .cfi_startproc > .cfi_signal_frame > .cfi_def_cfa x29, 0 > .cfi_offset x29, 0 * 8 > .cfi_offset x30, 1 * 8 > + nop /* placeholder for bl signalhandler */ > +SYM_FUNC_START(__kernel_rt_sigreturn) > mov x8, #__NR_rt_sigreturn > svc #0 > .cfi_endproc This appears to have been whitespace damaged (leading tabs have gone). Can you please resend this via git-send-email? Thanks, Mark.
diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/sigreturn.S index 12324863d5c2..5d50ee92faa4 100644 --- a/arch/arm64/kernel/vdso/sigreturn.S +++ b/arch/arm64/kernel/vdso/sigreturn.S @@ -13,13 +13,13 @@ .text - nop -SYM_FUNC_START(__kernel_rt_sigreturn) .cfi_startproc .cfi_signal_frame .cfi_def_cfa x29, 0 .cfi_offset x29, 0 * 8 .cfi_offset x30, 1 * 8 + nop /* placeholder for bl signalhandler */ +SYM_FUNC_START(__kernel_rt_sigreturn) mov x8, #__NR_rt_sigreturn svc #0 .cfi_endproc -- 2.17.1