Move kprobes examples to samples/ (resend)
Subsystems (5)
PATCH 1/1 Move kprobes examples to samples/ (resend)
Andrew,
This patch moves the kprobe examples currently in Documentation/krprobes.txt to under samples/. Patch originally by Randy Dunlap. I have modified the examples slightly per Christoph's suggestions.
Ananth
---
Move kprobes examples from Documentation/kprobes.txt to under samples/. Patch originally by Randy Dunlap.
In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works for x86_64, x86_32 and powerpc
o Cleaned up unneeded #includes
--- Documentation/kprobes.txt | 206 ------------------------------------ samples/Kconfig | 6 + samples/Makefile | 2 samples/kprobes/Makefile | 5 samples/kprobes/jprobe_example.c | 64 +++++++++++ samples/kprobes/kprobe_example.c | 89 +++++++++++++++ samples/kprobes/kretprobe_example.c | 59 ++++++++++ 7 files changed, 229 insertions(+), 202 deletions(-)
Documentation/kprobes.txt +5 -209
@@ -166,7 +166,8 @@ code mapping. The Kprobes API includes a "register" function and an "unregister" function for each type of probe. Here are terse, mini-man-page specifications for these functions and the associated probe handlers -that you'll write. See the latter half of this document for examples. +that you'll write. See the files in the samples/kprobes/ sub-directory +for examples. 4.1 register_kprobe
@@ -392,220 +393,15 @@ e. Watchpoint probes (which fire on data 8. Kprobes Example -Here's a sample kernel module showing the use of kprobes to dump a -stack trace and selected i386 registers when do_fork() is called. ------ cut here ----- -/*kprobe_example.c*/ -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/kprobes.h> -#include <linux/sched.h> - -/*For each probe you need to allocate a kprobe structure*/ -static struct kprobe kp; - -/*kprobe pre_handler: called just before the probed instruction is executed*/ -int handler_pre(struct kprobe *p, struct pt_regs *regs) -{ - printk("pre_handler: p->addr=0x%p, eip=%lx, eflags=0x%lx\n", - p->addr, regs->eip, regs->eflags); - dump_stack(); - return 0; -} - -/*kprobe post_handler: called after the probed instruction is executed*/ -void handler_post(struct kprobe *p, struct pt_regs *regs, unsigned long flags) -{ - printk("post_handler: p->addr=0x%p, eflags=0x%lx\n", - p->addr, regs->eflags); -} - -/* fault_handler: this is called if an exception is generated for any - * instruction within the pre- or post-handler, or when Kprobes - * single-steps the probed instruction. - */ -int handler_fault(struct kprobe *p, struct pt_regs *regs, int trapnr) -{ - printk("fault_handler: p->addr=0x%p, trap #%dn", - p->addr, trapnr); - /* Return 0 because we don't handle the fault. */ - return 0; -} - -static int __init kprobe_init(void) -{ - int ret; - kp.pre_handler = handler_pre; - kp.post_handler = handler_post; - kp.fault_handler = handler_fault; - kp.symbol_name = "do_fork"; - - ret = register_kprobe(&kp); - if (ret < 0) { - printk("register_kprobe failed, returned %d\n", ret); - return ret; - } - printk("kprobe registered\n"); - return 0; -} - -static void __exit kprobe_exit(void) -{ - unregister_kprobe(&kp); - printk("kprobe unregistered\n"); -} - -module_init(kprobe_init) -module_exit(kprobe_exit) -MODULE_LICENSE("GPL"); ------ cut here ----- - -You can build the kernel module, kprobe-example.ko, using the following -Makefile: ------ cut here ----- -obj-m := kprobe-example.o -KDIR := /lib/modules/$(shell uname -r)/build -PWD := $(shell pwd) -default: - $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules -clean: - rm -f *.mod.c *.ko *.o ------ cut here ----- - -$ make -$ su - -... -# insmod kprobe-example.ko - -You will see the trace data in /var/log/messages and on the console -whenever do_fork() is invoked to create a new process. +See samples/kprobes/kprobe_example.c. 9. Jprobes Example -Here's a sample kernel module showing the use of jprobes to dump -the arguments of do_fork(). ------ cut here ----- -/*jprobe-example.c */ -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/fs.h> -#include <linux/uio.h> -#include <linux/kprobes.h> - -/* - * Jumper probe for do_fork. - * Mirror principle enables access to arguments of the probed routine - * from the probe handler. - */ - -/* Proxy routine having the same arguments as actual do_fork() routine */ -long jdo_fork(unsigned long clone_flags, unsigned long stack_start, - struct pt_regs *regs, unsigned long stack_size, - int __user * parent_tidptr, int __user * child_tidptr) -{ - printk("jprobe: clone_flags=0x%lx, stack_size=0x%lx, regs=0x%p\n", - clone_flags, stack_size, regs); - /* Always end with a call to jprobe_return(). */ - jprobe_return(); - /*NOTREACHED*/ - return 0; -} - -static struct jprobe my_jprobe = { - .entry = jdo_fork -}; - -static int __init jprobe_init(void) -{ - int ret; - my_jprobe.kp.symbol_name = "do_fork"; - - if ((ret = register_jprobe(&my_jprobe)) <0) { - printk("register_jprobe failed, returned %d\n", ret); - return -1; - } - printk("Planted jprobe at %p, handler addr %p\n", - my_jprobe.kp.addr, my_jprobe.entry); - return 0; -} - -static void __exit jprobe_exit(void) -{ - unregister_jprobe(&my_jprobe); - printk("jprobe unregistered\n"); -} - -module_init(jprobe_init) -module_exit(jprobe_exit) -MODULE_LICENSE("GPL"); ------ cut here ----- - -Build and insert the kernel module as shown in the above kprobe -example. You will see the trace data in /var/log/messages and on -the console whenever do_fork() is invoked to create a new process. -(Some messages may be suppressed if syslogd is configured to -eliminate duplicate messages.) +See samples/kprobes/jprobe_example.c. 10. Kretprobes Example -Here's a sample kernel module showing the use of return probes to -report failed calls to sys_open(). ------ cut here ----- -/*kretprobe-example.c*/ -#include <linux/kernel.h> -#include <linux/module.h> -#include <linux/kprobes.h> - -static const char *probed_func = "sys_open"; - -/* Return-probe handler: If the probed function fails, log the return value. */ -static int ret_handler(struct kretprobe_instance *ri, struct pt_regs *regs) -{ - int retval = regs_return_value(regs); - if (retval < 0) { - printk("%s returns %d\n", probed_func, retval); - } - return 0; -} - -static struct kretprobe my_kretprobe = { - .handler = ret_handler, - /* Probe up to 20 instances concurrently. */ - .maxactive = 20 -}; - -static int __init kretprobe_init(void) -{ - int ret; - my_kretprobe.kp.symbol_name = (char *)probed_func; - - if ((ret = register_kretprobe(&my_kretprobe)) < 0) { - printk("register_kretprobe failed, returned %d\n", ret); - return -1; - } - printk("Planted return probe at %p\n", my_kretprobe.kp.addr); - return 0; -} - -static void __exit kretprobe_exit(void) -{ - unregister_kretprobe(&my_kretprobe); - printk("kretprobe unregistered\n"); - /* nmissed > 0 suggests that maxactive was set too low. */ - printk("Missed probing %d instances of %s\n", - my_kretprobe.nmissed, probed_func); -} - -module_init(kretprobe_init) -module_exit(kretprobe_exit) -MODULE_LICENSE("GPL"); ------ cut here ----- - -Build and insert the kernel module as shown in the above kprobe -example. You will see the trace data in /var/log/messages and on the -console whenever sys_open() returns a negative value. (Some messages -may be suppressed if syslogd is configured to eliminate duplicate -messages.) +See samples/kprobes/kretprobe_example.c. For additional information on Kprobes, refer to the following URLs: http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe
samples/kprobes/jprobe_example.c new file +64 -0
64 lines not on this page · raw message
samples/kprobes/kprobe_example.c new file +89 -0
89 lines not on this page · raw message
samples/kprobes/kretprobe_example.c new file +59 -0
59 lines not on this page · raw message
samples/Kconfig +6 -0
@@ -13,4 +13,10 @@ config SAMPLE_MARKERS help This build markers example modules. +config SAMPLE_KPROBES + tristate "Build kprobes examples -- loadable modules only" + depends on KPROBES && m + help + This build several kprobes example modules. + endif # SAMPLES
samples/Makefile +1 -1
@@ -1,3 +1,3 @@ # Makefile for Linux samples code -obj-$(CONFIG_SAMPLES) += markers/ +obj-$(CONFIG_SAMPLES) += markers/ kprobes/
samples/kprobes/Makefile new file +5 -0
@@ -0,0 +1,5 @@ +# builds the kprobes example kernel modules; +# then to use one (as root): insmod <module_name.ko> + +obj-$(CONFIG_SAMPLE_KPROBES) += kprobe_example.o jprobe_example.o \ + kretprobe_example.o
Quoted 9 lines · On Sun, 21 Oct 2007 18:09:19 +0530 Ananth N Mavinakayanahalli…
Move kprobes examples from
Documentation/kprobes.txtto undersamples/. Patch originally by Randy Dunlap.In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works forx86_64,x86_32and powerpc
o Cleaned up unneeded #includes
Could you please take a look at what's needed to get this working on sparc64?
samples/kprobes/kretprobe_example.c: In function `ret_handler':samples/kprobes/kretprobe_example.c:19: error: implicit declaration of function `regs_return_value'
Thanks.
David Miller
maintainerFrom: Andrew Morton <[email protected]>
Date: Tue, 13 Nov 2007 04:00:45 -0800
Quoted 12 lines · On Sun, 21 Oct 2007 18:09:19 +0530 Ananth N Mavinakayanahalli…
Quoted 10 lines
Move kprobes examples from
Documentation/kprobes.txtto undersamples/. Patch originally by Randy Dunlap.In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works forx86_64,x86_32and powerpc
o Cleaned up unneeded #includes
Quoted 4 lines
Could you please take a look at what's needed to get this working on sparc64?
samples/kprobes/kretprobe_example.c: In function `ret_handler':samples/kprobes/kretprobe_example.c:19: error: implicit declaration of function `regs_return_value'
kretprobes support most likely, it's on my todo list to implement but it will take a while since I'm busy fixing networking bugs but I can stop doing that if you like.
:-)
Quoted 17 lines · * David Miller ([email protected]) wrote:
From: Andrew Morton <[email protected]>
Date: Tue, 13 Nov 2007 04:00:45 -0800Quoted 14 lines · On Sun, 21 Oct 2007 18:09:19 +0530 Ananth N Mavinakayanahalli…
Quoted 10 lines
Move kprobes examples from
Documentation/kprobes.txtto undersamples/. Patch originally by Randy Dunlap.In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works forx86_64,x86_32and powerpc
o Cleaned up unneeded #includesCould you please take a look at what's needed to get this working on sparc64?
Quoted 8 lines
Quoted 2 lines
samples/kprobes/kretprobe_example.c: In function `ret_handler':samples/kprobes/kretprobe_example.c:19: error: implicit declaration of function `regs_return_value'kretprobes support most likely, it's on my todo list to implement but it will take a while since I'm busy fixing networking bugs but I can stop doing that if you like.
:-)
I wonder if compiling this example makes sense when ARCH_SUPPORTS_KRETPROBES is not defined ? We could just use a obj-$ARCH_SUPPORTS_KRETPROBES to compile the example conditionally.
Mathieu
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Quoted 12 lines · Andrew Morton
Quoted 9 lines · On Sun, 21 Oct 2007 18:09:19 +0530 Ananth N Mavinakayanahalli…
Move kprobes examples from
Documentation/kprobes.txtto undersamples/. Patch originally by Randy Dunlap.In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works forx86_64,x86_32and powerpc
o Cleaned up unneeded #includes
Quoted 6 lines
Could you please take a look at what's needed to get this working on sparc64?
samples/kprobes/kretprobe_example.c: In function `ret_handler':samples/kprobes/kretprobe_example.c:19: error: implicit declaration of function `regs_return_value'Thanks.
As Davem mentions, these are a fallout of sparc64 not having kretprobe support. As a followup to this mail, I am sending a couple of patches that should fix the issue (sparc64 cross compile works fine with the patches).
Ananth
PATCH 1/2 Kprobes: Indicate kretprobe support in arch/<arch>/Kconfig
From: Ananth N Mavinakayanahalli <[email protected]>
This patch adds CONFIG_ARCH_SUPPORTS_KRETPROBES to the arch/<arch>/Kconfig file for relevant architectures with kprobes support. This facilitates easy handling of in-kernel modules (like samples/kprobes/kretprobe_example.c) that depend on kretprobes being present in the kernel.
This patch depends on Mathieu Desnoyers' "Instrumentation menu removal" patchset (http://marc.info/?l=linux-kernel&m=119496432229633&w=2)
--- arch/avr32/Kconfig | 5 +++++ arch/ia64/Kconfig | 5 +++++ arch/powerpc/Kconfig | 5 +++++ arch/s390/Kconfig | 5 +++++ arch/sparc64/Kconfig | 5 +++++ arch/x86/Kconfig.i386 | 5 +++++ arch/x86/Kconfig.x86_64 | 5 +++++ include/asm-ia64/kprobes.h | 1 - include/asm-powerpc/kprobes.h | 1 - include/asm-s390/kprobes.h | 1 - include/asm-x86/kprobes_32.h | 1 - include/asm-x86/kprobes_64.h | 1 - include/linux/kprobes.h | 6 +++--- kernel/kprobes.c | 6 +++--- 14 files changed, 41 insertions(+), 11 deletions(-)
arch/avr32/Kconfig +5 -0
@@ -73,6 +73,11 @@ config GENERIC_BUG config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default n + source "init/Kconfig" menu "System Type and features"
arch/ia64/Kconfig +5 -0
@@ -105,6 +105,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default y + choice prompt "System type" default IA64_GENERIC
arch/powerpc/Kconfig +5 -0
@@ -169,6 +169,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default y + source "init/Kconfig" source "arch/powerpc/platforms/Kconfig"
arch/s390/Kconfig +5 -0
@@ -58,6 +58,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default y + source "init/Kconfig" menu "Base setup"
arch/sparc64/Kconfig +5 -0
@@ -82,6 +82,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default n + choice prompt "Kernel page size" default SPARC64_PAGE_SIZE_8KB
arch/x86/Kconfig.i386 +5 -0
@@ -97,6 +97,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default y + source "init/Kconfig" menu "Processor type and features"
arch/x86/Kconfig.x86_64 +5 -0
@@ -139,6 +139,11 @@ config ARCH_SUPPORTS_OPROFILE config ARCH_SUPPORTS_KPROBES def_bool y +config ARCH_SUPPORTS_KRETPROBES + bool + depends on ARCH_SUPPORTS_KPROBES + default y + source "init/Kconfig"
include/asm-ia64/kprobes.h +0 -1
@@ -82,7 +82,6 @@ struct kprobe_ctlblk {struct prev_kprobe prev_kprobe[ARCH_PREV_KPROBE_SZ ]; }; -#define ARCH_SUPPORTS_KRETPROBES #define kretprobe_blacklist_size 0#define SLOT0_OPCODE_SHIFT (37)
include/asm-powerpc/kprobes.h +0 -1
@@ -80,7 +80,6 @@ typedef unsigned int kprobe_opcode_t;#define is_trap (instr) (IS_TW(instr) || IS_TWI(instr))#endif -#define ARCH_SUPPORTS_KRETPROBES #define flush_insn_slot (p) do { } while (0)#define kretprobe_blacklist_size 0
include/asm-s390/kprobes.h +0 -1
@@ -46,7 +46,6 @@ typedef u16 kprobe_opcode_t; ? (MAX_STACK_SIZE) \ : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) -#define ARCH_SUPPORTS_KRETPROBES #define kretprobe_blacklist_size 0#define KPROBE_SWAP_INST 0x10
include/asm-x86/kprobes_32.h +0 -1
@@ -42,7 +42,6 @@ typedef u8 kprobe_opcode_t; ? (MAX_STACK_SIZE) \ : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) -#define ARCH_SUPPORTS_KRETPROBES #define flush_insn_slot (p) do { } while (0)extern const int kretprobe_blacklist_size;
include/asm-x86/kprobes_64.h +0 -1
@@ -41,7 +41,6 @@ typedef u8 kprobe_opcode_t; ? (MAX_STACK_SIZE) \ : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) -#define ARCH_SUPPORTS_KRETPROBES extern const int kretprobe_blacklist_size;void kretprobe_trampoline (void );
include/linux/kprobes.h +3 -3
@@ -125,11 +125,11 @@ struct jprobe { DECLARE_PER_CPU(struct kprobe *, current_kprobe); DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); -#ifdef ARCH_SUPPORTS_KRETPROBES +#ifdef CONFIG_ARCH_SUPPORTS_KRETPROBES extern void arch_prepare_kretprobe (struct kretprobe_instance *ri,struct pt_regs *regs);extern int arch_trampoline_kprobe (struct kprobe *p); -#else /* ARCH_SUPPORTS_KRETPROBES */ +#else /* CONFIG_ARCH_SUPPORTS_KRETPROBES */ static inline void arch_prepare_kretprobe (struct kretprobe *rp,struct pt_regs *regs) {
@@ -138,7 +138,7 @@ static inline int arch_trampoline_kprobe {return 0 ; } -#endif /* ARCH_SUPPORTS_KRETPROBES */ +#endif /* CONFIG_ARCH_SUPPORTS_KRETPROBES */ /* * Function-return probe - * Note:
kernel/kprobes.c +3 -3
@@ -678,7 +678,7 @@ void __kprobes unregister_jprobe(structunregister_kprobe (&jp->kp); } -#ifdef ARCH_SUPPORTS_KRETPROBES +#ifdef CONFIG_ARCH_SUPPORTS_KRETPROBES /* * This kprobe pre_handler is registered with every kretprobe. When probe
@@ -762,7 +762,7 @@ int __kprobes register_kretprobe(struct return ret; } -#else /* ARCH_SUPPORTS_KRETPROBES */ +#else /* CONFIG_ARCH_SUPPORTS_KRETPROBES */ int __kprobes register_kretprobe (struct kretprobe *rp) {
@@ -775,7 +775,7 @@ static int __kprobes pre_handler_kretpro return 0; } -#endif /* ARCH_SUPPORTS_KRETPROBES */ +#endif /* CONFIG_ARCH_SUPPORTS_KRETPROBES */ void __kprobes unregister_kretprobe (struct kretprobe *rp) {
PATCH 2/2 Kprobes: Build kretprobe samples only if arch supports kretprobes
From: Ananth N Mavinakayanahalli <[email protected]>
This patch builds samples/kprobes/kretprobe_example.c only on archs that support kretprobes.
--- samples/kprobes/Makefile | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
samples/kprobes/Makefile +5 -2
@@ -1,5 +1,8 @@ # builds the kprobes example kernel modules; # then to use one (as root): insmod <module_name.ko> -obj-$(CONFIG_SAMPLE_KPROBES) += kprobe_example.o jprobe_example.o \ - kretprobe_example.o +obj-$(CONFIG_SAMPLE_KPROBES) += kprobe_example.o jprobe_example.o + +ifeq ($(CONFIG_ARCH_SUPPORTS_KRETPROBES),y) +obj-$(CONFIG_SAMPLE_KPROBES) += kretprobe_example.o +endif
Re: [patch 1/2] Kprobes: Indicate kretprobe support in arch/<arch>/Kconfig
In reply to Ananth N MavinakayanahalliQuoted 10 lines · On Tue, 13 Nov 2007 21:17:10 +0530 Ananth N Mavinakayanahalli…
From: Ananth N Mavinakayanahalli <[email protected]>
This patch adds
CONFIG_ARCH_SUPPORTS_KRETPROBESto the arch/<arch>/Kconfig file for relevant architectures with kprobes support. This facilitates easy handling of in-kernel modules (likesamples/kprobes/kretprobe_example.c) that depend on kretprobes being present in the kernel.This patch depends on Mathieu Desnoyers' "Instrumentation menu removal" patchset (http://marc.info/?l=linux-kernel&m=119496432229633&w=2)
I didn't merge this because I didn't merge Mathieu's patches because my brain is not large enough to keep up with Mathieu's patches so sparc64 is still busted.
Please send fixes against 2.6.24-rc4-mm1?
Thanks.
Re: [patch 1/2] Kprobes: Indicate kretprobe support in arch/<arch>/Kconfig
Quoted 14 lines · * Andrew Morton ([email protected]) wrote:
Quoted 10 lines · On Tue, 13 Nov 2007 21:17:10 +0530 Ananth N Mavinakayanahalli…
From: Ananth N Mavinakayanahalli <[email protected]>
This patch adds
CONFIG_ARCH_SUPPORTS_KRETPROBESto the arch/<arch>/Kconfig file for relevant architectures with kprobes support. This facilitates easy handling of in-kernel modules (likesamples/kprobes/kretprobe_example.c) that depend on kretprobes being present in the kernel.This patch depends on Mathieu Desnoyers' "Instrumentation menu removal" patchset (http://marc.info/?l=linux-kernel&m=119496432229633&w=2)
Quoted 7 lines
I didn't merge this because I didn't merge Mathieu's patches because my brain is not large enough to keep up with Mathieu's patches so sparc64 is still busted.
Please send fixes against 2.6.24-rc4-mm1?
Thanks.
I'll resend the instrumentation menu removal patchset against 2.6.24-rc4-mm1 immediately.
Mathieu
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Quoted 18 lines · On Tue, 13 Nov 2007 21:09:25 +0530 Ananth N Mavinakayanahalli…
Quoted 17 lines · Andrew Morton
Quoted 9 lines · On Sun, 21 Oct 2007 18:09:19 +0530 Ananth N Mavinakayanahalli…
Move kprobes examples from
Documentation/kprobes.txtto undersamples/. Patch originally by Randy Dunlap.In addition, I have
o Updated the patch to apply on 2.6.23-mm1
o Modified examples code to build on multiple architectures. Currently, the examples code works forx86_64,x86_32and powerpc
o Cleaned up unneeded #includesCould you please take a look at what's needed to get this working on sparc64?
samples/kprobes/kretprobe_example.c: In function `ret_handler':samples/kprobes/kretprobe_example.c:19: error: implicit declaration of function `regs_return_value'
Quoted 7 lines
Quoted 1 line
Thanks.
As Davem mentions, these are a fallout of sparc64 not having kretprobe support. As a followup to this mail, I am sending a couple of patches that should fix the issue (sparc64 cross compile works fine with the patches).
Thanks.
Quoted 2 lines
This patch depends on Mathieu Desnoyers' "Instrumentation menu removal" patchset (http://marc.info/?l=linux-kernel&m=119496432229633&w=2)
argh. OK, I'll look at this later in the week.