summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivasa Ds <srinivasa@in.ibm.com>2007-04-23 11:28:49 +0530
committerPaul Mackerras <paulus@samba.org>2007-05-02 20:04:32 +1000
commiteb609e52d188775da738a1ffd1e982e6212c77d7 (patch)
treec3fdca2f59b661210f7b44ddf6efc6c65ee16e86
parent14d1d2f25bca1c4ed45704c8019f6c971c40bba4 (diff)
downloadlinux-3.10-eb609e52d188775da738a1ffd1e982e6212c77d7.tar.gz
linux-3.10-eb609e52d188775da738a1ffd1e982e6212c77d7.tar.bz2
linux-3.10-eb609e52d188775da738a1ffd1e982e6212c77d7.zip
[POWERPC] Transparently handle <.symbol> lookup for kprobes
When data symbols are not present in kernel image, user needs to add dot(".") before function name explicitly, that he wants to probe in kprobe module on ppc64. for ex:- When data symbols are missing on ppc64, ==================== [root@llm27lp1 ~]# cat /proc/kallsyms | grep do_fork c00000000006283c T .do_fork ============================== User needs add "." to "do_fork" kp.symbol_name = ".do_fork"; ============================ This makes kprobe modules unportable. This fixes the problem. Signed-off-by: Srinivasa Ds <srinivasa@in.ibm.com> Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--include/asm-powerpc/kprobes.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-powerpc/kprobes.h b/include/asm-powerpc/kprobes.h
index f850ca7020e..fc713e59598 100644
--- a/include/asm-powerpc/kprobes.h
+++ b/include/asm-powerpc/kprobes.h
@@ -64,6 +64,12 @@ typedef unsigned int kprobe_opcode_t;
addr = *(kprobe_opcode_t **)addr; \
} else if (name[0] != '.') \
addr = *(kprobe_opcode_t **)addr; \
+ } else { \
+ char dot_name[KSYM_NAME_LEN+1]; \
+ dot_name[0] = '.'; \
+ dot_name[1] = '\0'; \
+ strncat(dot_name, name, KSYM_NAME_LEN); \
+ addr = (kprobe_opcode_t *)kallsyms_lookup_name(dot_name); \
} \
}