When data symbols are not present in kernel image, one has to add dot(".") before function name, that he wants to probe in kprobe module on ppc64. Hence kernel module may not become portable across all the architecture. When data symbols are missing on ppc64, ==================== [root@llm27lp1 ~]# cat /proc/kallsyms | grep do_fork c00000000006283c T .do_fork ============================== kp.symbol_name = ".do_fork"; ============================ But if data symbols were included, then it looks like this ================ llm27lp2:~ # cat /proc/kallsyms |grep do_fork c00000000005de28 T .do_fork c0000000005fbe88 D do_fork ====================== kp.symbol_name = ".do_fork"; =============================== Iam attaching patch here, which solves this problem. Please let me know your comments on this. Thanks Srinivasa DS
Created attachment 1725 [details] Patch to solve this problem. This patch just appends "." to the function name the user wants to probe and hence user need not have to bother, whether data symbols are present or not. Thanks Srinivasa DS
Srinivasa, The patch looks fine.... you'll need to fix the codingstyle: } \ + else { \ ^^^^^ + char dot_name[KSYM_NAME_LEN+1]; \ + dot_name[0] = '.'; \ + strncat(dot_name, name, KSYM_NAME_LEN); \ + addr = (kprobe_opcode_t *)kallsyms_lookup_name(dot_name); \ + } \ } Please include a short description and post it to powerpc-dev list for inclusion. Feel free to put my signed-off once you've successfully tested the patch.
Note that this would not fix systemtap, as we do not use the kprobes-level symbol lookup facilities. It sounds like, for the PPC, systemtap itself should prefix function symbols with "." unconditionally, and not treat it as a conditional fallback heuristic.
Subject: Re: Problem in making kprobe modules portable across all the archtecture. On Tue, Apr 17, 2007 at 04:27:38PM -0000, fche at redhat dot com wrote: > > ------- Additional Comments From fche at redhat dot com 2007-04-17 17:27 ------- > Note that this would not fix systemtap, as we do not use the kprobes-level symbol > lookup facilities. It sounds like, for the PPC, systemtap itself should prefix > function symbols with "." unconditionally, and not treat it as a conditional > fallback heuristic. Yes, that would always work, but you may need to check the module:symbol type address lookups. That begs the question... till RHEL5, the compiler used in RHEL would include both text and data symbols for powerpc. But, RHEL5 has some compiler modifications that causes the data symbol (eg., "do_fork") to be discarded and only the text symbol (".do_fork") is visible for kallsyms lookup. Even upstream kernels built on RHEL5 have a similar issue. Any specific reasons for this?
Paul Mackerras has merged Srini's patch in his tree: http://git.kernel.org/?p=linux/kernel/git/paulus/powerpc.git;a=commitdiff;h=eb609e52d188775da738a1ffd1e982e6212c77d7;hp=14d1d2f25bca1c4ed45704c8019f6c971c40bba4