Re: [PATCH bpf-next] selftests/bpf: Fix test_attach_probe for powerpc uprobes
From: Naveen N. Rao <hidden>
Date: 2021-03-03 22:57:34
Also in:
bpf
On 2021/03/02 09:19AM, Yonghong Song wrote:
On 3/2/21 3:14 AM, Jiri Olsa wrote:quoted
On Mon, Mar 01, 2021 at 04:34:24PM -0800, Andrii Nakryiko wrote:quoted
On Mon, Mar 1, 2021 at 11:11 AM Jiri Olsa [off-list ref] wrote:quoted
When testing uprobes we the test gets GEP (Global Entry Point) address from kallsyms, but then the function is called locally so the uprobe is not triggered. Fixing this by adjusting the address to LEP (Local Entry Point) for powerpc arch. Signed-off-by: Jiri Olsa <jolsa@kernel.org> --- .../selftests/bpf/prog_tests/attach_probe.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)diff --git a/tools/testing/selftests/bpf/prog_tests/attach_probe.c b/tools/testing/selftests/bpf/prog_tests/attach_probe.c index a0ee87c8e1ea..c3cfb48d3ed0 100644 --- a/tools/testing/selftests/bpf/prog_tests/attach_probe.c +++ b/tools/testing/selftests/bpf/prog_tests/attach_probe.c@@ -2,6 +2,22 @@ #include <test_progs.h> #include "test_attach_probe.skel.h" +#if defined(__powerpc64__) +/* + * We get the GEP (Global Entry Point) address from kallsyms, + * but then the function is called locally, so we need to adjust + * the address to get LEP (Local Entry Point). + */ +#define LEP_OFFSET 8 + +static ssize_t get_offset(ssize_t offset)if we mark this function __weak global, would it work as is? Would it get an address of a global entry point? I know nothing about this GEP vs LEP stuff, interesting :)you mean get_base_addr? it's already global all the calls to get_base_addr within the object are made to get_base_addr+0x8 00000000100350c0 <test_attach_probe>: ... 100350e0: 59 fd ff 4b bl 10034e38 <get_base_addr+0x8> ... 100358a8: 91 f5 ff 4b bl 10034e38 <get_base_addr+0x8> I'm following perf fix we had for similar issue: 7b6ff0bdbf4f perf probe ppc64le: Fixup function entry if using kallsyms lookup I'll get more info on thatThanks. The patch 7b6ff0bdbf4f perf probe ppc64le: Fixup function entry if using kallsyms lookup talked about offset + 8 for kernel symbols. I guess uprobe symbol might be in the same situation if using the same compilation mechanism as kernel. But it would be good to get confirmation from ppc people.
Yes, this is part of the ELF V2 ABI, so it applies to both kernel and userspace. - Naveen