From: "David A. Long" dave.long@linaro.org
This patch series adds basic uprobes support to ARM. It is based on patches developed earlier by Rabin Vincent. That approach of adding special cases into the kprobes instruction parsing code was not well received. This approach separates the ARM instruction parsing code in kprobes out into a separate set of functions which can be used by both kprobes and uprobes. Both kprobes and uprobes then provide their own semantic action tables to process the results of the parsing.
One regression bug fix is still in progress on this, and some more definitions may be moved from kprobes*.h files into more generic include files. However, at this point feedback on the basic approach would be appreciated.
These patches are based on v3.10-rc7
David A. Long (3): uprobes: move function declarations out of arch ARM: Separate kprobes instruction parsing into routines ARM: add uprobes support
Rabin Vincent (4): uprobes: allow ignoring of probe hits uprobes: allow arch access to xol slot uprobes: allow arch-specific initialization uprobes: add arch write opcode hook
arch/arm/Kconfig | 4 + arch/arm/include/asm/kprobes.h | 17 +- arch/arm/include/asm/probes.h | 23 ++ arch/arm/include/asm/ptrace.h | 6 + arch/arm/include/asm/thread_info.h | 5 +- arch/arm/include/asm/uprobes.h | 34 ++ arch/arm/kernel/Makefile | 3 +- arch/arm/kernel/kprobes-arm.c | 495 ++++++----------------------- arch/arm/kernel/kprobes-common.c | 260 +--------------- arch/arm/kernel/kprobes-thumb.c | 31 +- arch/arm/kernel/kprobes.c | 7 +- arch/arm/kernel/kprobes.h | 51 +-- arch/arm/kernel/probes-arm.h | 66 ++++ arch/arm/kernel/probes.c | 624 +++++++++++++++++++++++++++++++++++++ arch/arm/kernel/signal.c | 4 + arch/arm/kernel/uprobes-arm.c | 220 +++++++++++++ arch/arm/kernel/uprobes.c | 203 ++++++++++++ arch/arm/kernel/uprobes.h | 25 ++ arch/powerpc/include/asm/uprobes.h | 1 - arch/x86/include/asm/uprobes.h | 7 - include/linux/uprobes.h | 17 + kernel/events/uprobes.c | 54 +++- 22 files changed, 1426 insertions(+), 731 deletions(-) create mode 100644 arch/arm/include/asm/probes.h create mode 100644 arch/arm/include/asm/uprobes.h create mode 100644 arch/arm/kernel/probes-arm.h create mode 100644 arch/arm/kernel/probes.c create mode 100644 arch/arm/kernel/uprobes-arm.c create mode 100644 arch/arm/kernel/uprobes.c create mode 100644 arch/arm/kernel/uprobes.h