Message ID | 20200519121818.14511-3-will@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64 sigreturn unwinding fixes | expand |
On Tue, May 19, 2020 at 01:18:17PM +0100, Will Deacon wrote: > Every so often we have to remind ourselves about the purpose of the > weird NOP instruction immediately preceding the sigreturn trampoline. > > Add a short comment to state that it exists for some unwinders that > determine the caller address by subtracting from the return address. > > Cc: Dave Martin <dave.martin@arm.com> > Cc: Daniel Kiss <daniel.kiss@arm.com> > Cc: Tamas Zsoldos <tamas.zsoldos@arm.com> > Signed-off-by: Will Deacon <will@kernel.org> > --- > arch/arm64/kernel/vdso/sigreturn.S | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/sigreturn.S > index 83ac284dae79..7853fa9692f6 100644 > --- a/arch/arm64/kernel/vdso/sigreturn.S > +++ b/arch/arm64/kernel/vdso/sigreturn.S > @@ -14,7 +14,12 @@ > > .text > > - nop > +/* > + * This mysterious NOP is required for some unwinders that subtract one from > + * the return address in order to identify the calling function. > + * Hack borrowed from arch/powerpc/kernel/vdso64/sigtramp.S. > + */ > + nop // Mysterious NOP Reviewed-by: Dave Martin <Dave.Martin@arm.com> > /* > * GDB relies on being able to identify the sigreturn instruction sequence to > * unwind from signal handlers. We cannot, therefore, use SYM_FUNC_START() > -- > 2.26.2.761.g0e0b3e54be-goog > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff --git a/arch/arm64/kernel/vdso/sigreturn.S b/arch/arm64/kernel/vdso/sigreturn.S index 83ac284dae79..7853fa9692f6 100644 --- a/arch/arm64/kernel/vdso/sigreturn.S +++ b/arch/arm64/kernel/vdso/sigreturn.S @@ -14,7 +14,12 @@ .text - nop +/* + * This mysterious NOP is required for some unwinders that subtract one from + * the return address in order to identify the calling function. + * Hack borrowed from arch/powerpc/kernel/vdso64/sigtramp.S. + */ + nop // Mysterious NOP /* * GDB relies on being able to identify the sigreturn instruction sequence to * unwind from signal handlers. We cannot, therefore, use SYM_FUNC_START()
Every so often we have to remind ourselves about the purpose of the weird NOP instruction immediately preceding the sigreturn trampoline. Add a short comment to state that it exists for some unwinders that determine the caller address by subtracting from the return address. Cc: Dave Martin <dave.martin@arm.com> Cc: Daniel Kiss <daniel.kiss@arm.com> Cc: Tamas Zsoldos <tamas.zsoldos@arm.com> Signed-off-by: Will Deacon <will@kernel.org> --- arch/arm64/kernel/vdso/sigreturn.S | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)