diff options
author | Christophe Leroy <christophe.leroy@csgroup.eu> | 2020-09-27 12:16:33 +0300 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2020-12-03 17:01:17 +0300 |
commit | 91bf695596f594e42d69d70deb2ae53cafecf77c (patch) | |
tree | f227a7426c8e357087db461585f0d48b2969f6fb /arch/powerpc/perf/callchain_32.c | |
parent | 550e6074c106e1a6fb57dfef62f0daede12d832c (diff) | |
download | linux-91bf695596f594e42d69d70deb2ae53cafecf77c.tar.xz |
powerpc/vdso: Retrieve sigtramp offsets at buildtime
This is copied from arm64.
Instead of using runtime generated signal trampoline offsets,
get offsets at buildtime.
If the said trampoline doesn't exist, build will fail. So no
need to check whether the trampoline exists or not in the VDSO.
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/f8bfd6812c3e3678b1cdb4d55a52f9eb022b40d3.1601197618.git.christophe.leroy@csgroup.eu
Diffstat (limited to 'arch/powerpc/perf/callchain_32.c')
-rw-r--r-- | arch/powerpc/perf/callchain_32.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/powerpc/perf/callchain_32.c b/arch/powerpc/perf/callchain_32.c index b32e94047fb9..b83c47b7947f 100644 --- a/arch/powerpc/perf/callchain_32.c +++ b/arch/powerpc/perf/callchain_32.c @@ -59,8 +59,8 @@ static int is_sigreturn_32_address(unsigned int nip, unsigned int fp) { if (nip == fp + offsetof(struct signal_frame_32, mctx.mc_pad)) return 1; - if (vdso32_sigtramp && current->mm->context.vdso && - nip == (unsigned long)current->mm->context.vdso + vdso32_sigtramp) + if (current->mm->context.vdso && + nip == VDSO32_SYMBOL(current->mm->context.vdso, sigtramp32)) return 1; return 0; } @@ -70,8 +70,8 @@ static int is_rt_sigreturn_32_address(unsigned int nip, unsigned int fp) if (nip == fp + offsetof(struct rt_signal_frame_32, uc.uc_mcontext.mc_pad)) return 1; - if (vdso32_rt_sigtramp && current->mm->context.vdso && - nip == (unsigned long)current->mm->context.vdso + vdso32_rt_sigtramp) + if (current->mm->context.vdso && + nip == VDSO32_SYMBOL(current->mm->context.vdso, sigtramp_rt32)) return 1; return 0; } |