Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On Thu, 2013-12-05 at 15:17 -0500, David Long wrote: > Masami/Tixy, > > As I just noted in a previous email the kprobes.h thing has come back to > haunt me. Something more is needed in my last patchset. Tixy's > suggestion regarding the arch_specific_insn structure: > > > However, I also wonder if we should instead leave arch_specific_insn as > > a kprobes specific structure and on ARM define it in terms of a new more > > generic 'struct probe_insn'? The drawback with that is that we'd > > probably end up with a struct just containing a single member which > > seems a bit redundant: > > > > struct arch_specific_insn { > > struct probe_insn pinsn; > > }; > > > > Thought's anyone? > > ...got me thinking. When I do as he suggests and create a new > arch-specific structure for sharing between kprobes and uprobes then it > turns out simply #define'ing the arch_specific_insn structure tag to the > new structure tag in arch/arm/include/kprobes.h makes everything happy. > When KPROBES is not configured that include file is (still) not > included and the generic kprobes.h include file still continues to make > a dummy structure for it. My question is: Is it too hacky to use a > #define for a structure tag this way? I can't think of any technical reason why this wouldn't work and I see you've have implemented this method in the latest uprobes patches [1]. It does mean that would be able to progress with ARM uprobes if there is no immediate enthusiasm for making kprobes/uprobes more unified at the generic kernel layers. [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2013-December/219463.html -- Tixy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On Thu, 2013-12-05 at 15:17 -0500, David Long wrote: Masami/Tixy, As I just noted in a previous email the kprobes.h thing has come back to haunt me. Something more is needed in my last patchset. Tixy's suggestion regarding the arch_specific_insn structure: However, I also wonder if we should instead leave arch_specific_insn as a kprobes specific structure and on ARM define it in terms of a new more generic 'struct probe_insn'? The drawback with that is that we'd probably end up with a struct just containing a single member which seems a bit redundant: struct arch_specific_insn { struct probe_insn pinsn; }; Thought's anyone? ...got me thinking. When I do as he suggests and create a new arch-specific structure for sharing between kprobes and uprobes then it turns out simply #define'ing the arch_specific_insn structure tag to the new structure tag in arch/arm/include/kprobes.h makes everything happy. When KPROBES is not configured that include file is (still) not included and the generic kprobes.h include file still continues to make a dummy structure for it. My question is: Is it too hacky to use a #define for a structure tag this way? I can't think of any technical reason why this wouldn't work and I see you've have implemented this method in the latest uprobes patches [1]. It does mean that would be able to progress with ARM uprobes if there is no immediate enthusiasm for making kprobes/uprobes more unified at the generic kernel layers. [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2013-December/219463.html -- Tixy -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
Masami/Tixy, As I just noted in a previous email the kprobes.h thing has come back to haunt me. Something more is needed in my last patchset. Tixy's suggestion regarding the arch_specific_insn structure: However, I also wonder if we should instead leave arch_specific_insn as a kprobes specific structure and on ARM define it in terms of a new more generic 'struct probe_insn'? The drawback with that is that we'd probably end up with a struct just containing a single member which seems a bit redundant: struct arch_specific_insn { struct probe_insn pinsn; }; Thought's anyone? ...got me thinking. When I do as he suggests and create a new arch-specific structure for sharing between kprobes and uprobes then it turns out simply #define'ing the arch_specific_insn structure tag to the new structure tag in arch/arm/include/kprobes.h makes everything happy. When KPROBES is not configured that include file is (still) not included and the generic kprobes.h include file still continues to make a dummy structure for it. My question is: Is it too hacky to use a #define for a structure tag this way? -dl -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On 12/04/13 12:51, Taras Kondratiuk wrote: On 11/27/2013 04:53 AM, David Long wrote: From: "David A. Long" This patch series adds basic uprobes support to ARM. It is based on patches developed earlier by Rabin Vincent. That approach of adding hooks 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. The following are noteworthy changes made for v3: 1) The ARM uprobes functionality no longer depends on kprobes. As a side effect of this there are no longer any changes to the common kprobes include file (or any other common kprobes files). 2) A couple large patches have been broken down into more smaller patches. 3) A problem with uretprobes has been fixed. 4) The kprobes-test module has been made more useable for thumb tests. 5) The argument list to the "action" functions has been shrunk. 6) Alignment with a few recent patches that were made to common uprobes code specifically to support this patchset. This patchset is based on v3.13-rc1 Hi Dave I've tested this series in big-endian mode. There is an issue within __create_xol_area() function. It writes UPROBE_SWBP_INSN directly to memory, but UPROBE_SWBP_INSN stores canonical opcode, which leads to a wrong instruction endianness if CPU runs in BE. I think the easies way to fix it without touching generic uprobes code is to store opcode in native endianness in UPROBE_SWBP_INSN, and use another macro for canonical form in ARM specific code. Please check a diff below. With this diff plus addressed comment for patch 14/15 plus fixed Ben's BE kprobes series I have uprobes working on LE and BE. Thanks Taras. I am preparing a v4 addressing these issues and also addressing the issue that, after duplicating your earlier observations, my claim in "1)" above has proven to be incorrect. -dl -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On 12/04/13 12:51, Taras Kondratiuk wrote: On 11/27/2013 04:53 AM, David Long wrote: From: David A. Long dave.l...@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 hooks 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. The following are noteworthy changes made for v3: 1) The ARM uprobes functionality no longer depends on kprobes. As a side effect of this there are no longer any changes to the common kprobes include file (or any other common kprobes files). 2) A couple large patches have been broken down into more smaller patches. 3) A problem with uretprobes has been fixed. 4) The kprobes-test module has been made more useable for thumb tests. 5) The argument list to the action functions has been shrunk. 6) Alignment with a few recent patches that were made to common uprobes code specifically to support this patchset. This patchset is based on v3.13-rc1 Hi Dave I've tested this series in big-endian mode. There is an issue within __create_xol_area() function. It writes UPROBE_SWBP_INSN directly to memory, but UPROBE_SWBP_INSN stores canonical opcode, which leads to a wrong instruction endianness if CPU runs in BE. I think the easies way to fix it without touching generic uprobes code is to store opcode in native endianness in UPROBE_SWBP_INSN, and use another macro for canonical form in ARM specific code. Please check a diff below. With this diff plus addressed comment for patch 14/15 plus fixed Ben's BE kprobes series I have uprobes working on LE and BE. Thanks Taras. I am preparing a v4 addressing these issues and also addressing the issue that, after duplicating your earlier observations, my claim in 1) above has proven to be incorrect. -dl -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
Masami/Tixy, As I just noted in a previous email the kprobes.h thing has come back to haunt me. Something more is needed in my last patchset. Tixy's suggestion regarding the arch_specific_insn structure: However, I also wonder if we should instead leave arch_specific_insn as a kprobes specific structure and on ARM define it in terms of a new more generic 'struct probe_insn'? The drawback with that is that we'd probably end up with a struct just containing a single member which seems a bit redundant: struct arch_specific_insn { struct probe_insn pinsn; }; Thought's anyone? ...got me thinking. When I do as he suggests and create a new arch-specific structure for sharing between kprobes and uprobes then it turns out simply #define'ing the arch_specific_insn structure tag to the new structure tag in arch/arm/include/kprobes.h makes everything happy. When KPROBES is not configured that include file is (still) not included and the generic kprobes.h include file still continues to make a dummy structure for it. My question is: Is it too hacky to use a #define for a structure tag this way? -dl -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On 11/27/2013 04:53 AM, David Long wrote: > From: "David A. Long" > > This patch series adds basic uprobes support to ARM. It is based on patches > developed earlier by Rabin Vincent. That approach of adding hooks 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. > > The following are noteworthy changes made for v3: > > 1) The ARM uprobes functionality no longer depends on kprobes. As > a side effect of this there are no longer any changes to the common > kprobes include file (or any other common kprobes files). > 2) A couple large patches have been broken down into more smaller > patches. > 3) A problem with uretprobes has been fixed. > 4) The kprobes-test module has been made more useable for thumb tests. > 5) The argument list to the "action" functions has been shrunk. > 6) Alignment with a few recent patches that were made to common > uprobes code specifically to support this patchset. > > This patchset is based on v3.13-rc1 Hi Dave I've tested this series in big-endian mode. There is an issue within __create_xol_area() function. It writes UPROBE_SWBP_INSN directly to memory, but UPROBE_SWBP_INSN stores canonical opcode, which leads to a wrong instruction endianness if CPU runs in BE. I think the easies way to fix it without touching generic uprobes code is to store opcode in native endianness in UPROBE_SWBP_INSN, and use another macro for canonical form in ARM specific code. Please check a diff below. With this diff plus addressed comment for patch 14/15 plus fixed Ben's BE kprobes series I have uprobes working on LE and BE. diff --git a/arch/arm/include/asm/uprobes.h b/arch/arm/include/asm/uprobes.h index e5acaa3..5313418 100644 --- a/arch/arm/include/asm/uprobes.h +++ b/arch/arm/include/asm/uprobes.h @@ -2,14 +2,16 @@ #define _ASM_UPROBES_H #include +#include typedef u32 uprobe_opcode_t; #define MAX_UINSN_BYTES4 #define UPROBE_XOL_SLOT_BYTES 64 -#define UPROBE_SWBP_INSN 0xe7f001f9 -#define UPROBE_SS_INSN 0xe7f001fa +#define UPROBE_SWBP_ARM_INSN 0xe7f001f9 +#define UPROBE_SS_ARM_INSN 0xe7f001fa +#define UPROBE_SWBP_INSN __opcode_to_mem_arm(UPROBE_SWBP_ARM_INSN) #define UPROBE_SWBP_INSN_SIZE 4 struct arch_uprobe_task { diff --git a/arch/arm/kernel/uprobes.c b/arch/arm/kernel/uprobes.c index d9873ef..ae18549 100644 --- a/arch/arm/kernel/uprobes.c +++ b/arch/arm/kernel/uprobes.c @@ -22,7 +22,7 @@ bool is_swbp_insn(uprobe_opcode_t *insn) { return (__mem_to_opcode_arm(*insn) & 0x0fff) == - (UPROBE_SWBP_INSN & 0x0fff); + (UPROBE_SWBP_ARM_INSN & 0x0fff); } int set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm, @@ -83,7 +83,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, insn = __mem_to_opcode_arm(*(unsigned int *)auprobe->insn); auprobe->ixol[0] = __opcode_to_mem_arm(insn); - auprobe->ixol[1] = __opcode_to_mem_arm(UPROBE_SS_INSN); + auprobe->ixol[1] = __opcode_to_mem_arm(UPROBE_SS_ARM_INSN); ret = arm_probes_decode_insn(insn, >asi, false, uprobes_probes_actions); @@ -100,7 +100,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, break; } - bpinsn = UPROBE_SWBP_INSN & 0x0fff; + bpinsn = UPROBE_SWBP_ARM_INSN & 0x0fff; if (insn >= 0xe000) bpinsn |= 0xe000; /* Unconditional instruction */ else @@ -158,9 +158,9 @@ static int uprobe_trap_handler(struct pt_regs *regs, unsigned int instr) local_irq_save(flags); instr &= 0x0fff; - if (instr == (UPROBE_SWBP_INSN & 0x0fff)) + if (instr == (UPROBE_SWBP_ARM_INSN & 0x0fff)) uprobe_pre_sstep_notifier(regs); - else if (instr == (UPROBE_SS_INSN & 0x0fff)) + else if (instr == (UPROBE_SS_ARM_INSN & 0x0fff)) uprobe_post_sstep_notifier(regs); local_irq_restore(flags); @@ -174,7 +174,7 @@ unsigned long uprobe_get_swbp_addr(struct pt_regs *regs) static struct undef_hook uprobes_arm_break_hook = { .instr_mask = 0x0fff, - .instr_val = (UPROBE_SWBP_INSN & 0x0fff), + .instr_val = (UPROBE_SWBP_ARM_INSN & 0x0fff), .cpsr_mask = MODE_MASK, .cpsr_val = USR_MODE, .fn = uprobe_trap_handler, @@ -182,7 +182,7 @@ static struct undef_hook uprobes_arm_break_hook = { static struct undef_hook uprobes_arm_ss_hook = { .instr_mask = 0x0fff, - .instr_val = (UPROBE_SS_INSN & 0x0fff), + .instr_val =
Re: [PATCH v3 00/15] uprobes: Add uprobes support for ARM
On 11/27/2013 04:53 AM, David Long wrote: From: David A. Long dave.l...@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 hooks 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. The following are noteworthy changes made for v3: 1) The ARM uprobes functionality no longer depends on kprobes. As a side effect of this there are no longer any changes to the common kprobes include file (or any other common kprobes files). 2) A couple large patches have been broken down into more smaller patches. 3) A problem with uretprobes has been fixed. 4) The kprobes-test module has been made more useable for thumb tests. 5) The argument list to the action functions has been shrunk. 6) Alignment with a few recent patches that were made to common uprobes code specifically to support this patchset. This patchset is based on v3.13-rc1 Hi Dave I've tested this series in big-endian mode. There is an issue within __create_xol_area() function. It writes UPROBE_SWBP_INSN directly to memory, but UPROBE_SWBP_INSN stores canonical opcode, which leads to a wrong instruction endianness if CPU runs in BE. I think the easies way to fix it without touching generic uprobes code is to store opcode in native endianness in UPROBE_SWBP_INSN, and use another macro for canonical form in ARM specific code. Please check a diff below. With this diff plus addressed comment for patch 14/15 plus fixed Ben's BE kprobes series I have uprobes working on LE and BE. diff --git a/arch/arm/include/asm/uprobes.h b/arch/arm/include/asm/uprobes.h index e5acaa3..5313418 100644 --- a/arch/arm/include/asm/uprobes.h +++ b/arch/arm/include/asm/uprobes.h @@ -2,14 +2,16 @@ #define _ASM_UPROBES_H #include asm/probes.h +#include asm/opcodes.h typedef u32 uprobe_opcode_t; #define MAX_UINSN_BYTES4 #define UPROBE_XOL_SLOT_BYTES 64 -#define UPROBE_SWBP_INSN 0xe7f001f9 -#define UPROBE_SS_INSN 0xe7f001fa +#define UPROBE_SWBP_ARM_INSN 0xe7f001f9 +#define UPROBE_SS_ARM_INSN 0xe7f001fa +#define UPROBE_SWBP_INSN __opcode_to_mem_arm(UPROBE_SWBP_ARM_INSN) #define UPROBE_SWBP_INSN_SIZE 4 struct arch_uprobe_task { diff --git a/arch/arm/kernel/uprobes.c b/arch/arm/kernel/uprobes.c index d9873ef..ae18549 100644 --- a/arch/arm/kernel/uprobes.c +++ b/arch/arm/kernel/uprobes.c @@ -22,7 +22,7 @@ bool is_swbp_insn(uprobe_opcode_t *insn) { return (__mem_to_opcode_arm(*insn) 0x0fff) == - (UPROBE_SWBP_INSN 0x0fff); + (UPROBE_SWBP_ARM_INSN 0x0fff); } int set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm, @@ -83,7 +83,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, insn = __mem_to_opcode_arm(*(unsigned int *)auprobe-insn); auprobe-ixol[0] = __opcode_to_mem_arm(insn); - auprobe-ixol[1] = __opcode_to_mem_arm(UPROBE_SS_INSN); + auprobe-ixol[1] = __opcode_to_mem_arm(UPROBE_SS_ARM_INSN); ret = arm_probes_decode_insn(insn, auprobe-asi, false, uprobes_probes_actions); @@ -100,7 +100,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, break; } - bpinsn = UPROBE_SWBP_INSN 0x0fff; + bpinsn = UPROBE_SWBP_ARM_INSN 0x0fff; if (insn = 0xe000) bpinsn |= 0xe000; /* Unconditional instruction */ else @@ -158,9 +158,9 @@ static int uprobe_trap_handler(struct pt_regs *regs, unsigned int instr) local_irq_save(flags); instr = 0x0fff; - if (instr == (UPROBE_SWBP_INSN 0x0fff)) + if (instr == (UPROBE_SWBP_ARM_INSN 0x0fff)) uprobe_pre_sstep_notifier(regs); - else if (instr == (UPROBE_SS_INSN 0x0fff)) + else if (instr == (UPROBE_SS_ARM_INSN 0x0fff)) uprobe_post_sstep_notifier(regs); local_irq_restore(flags); @@ -174,7 +174,7 @@ unsigned long uprobe_get_swbp_addr(struct pt_regs *regs) static struct undef_hook uprobes_arm_break_hook = { .instr_mask = 0x0fff, - .instr_val = (UPROBE_SWBP_INSN 0x0fff), + .instr_val = (UPROBE_SWBP_ARM_INSN 0x0fff), .cpsr_mask = MODE_MASK, .cpsr_val = USR_MODE, .fn = uprobe_trap_handler, @@ -182,7 +182,7 @@ static struct undef_hook uprobes_arm_break_hook = { static struct undef_hook uprobes_arm_ss_hook = { .instr_mask = 0x0fff, - .instr_val = (UPROBE_SS_INSN 0x0fff), + .instr_val =
[PATCH v3 00/15] uprobes: Add uprobes support for ARM
From: "David A. Long" This patch series adds basic uprobes support to ARM. It is based on patches developed earlier by Rabin Vincent. That approach of adding hooks 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. The following are noteworthy changes made for v3: 1) The ARM uprobes functionality no longer depends on kprobes. As a side effect of this there are no longer any changes to the common kprobes include file (or any other common kprobes files). 2) A couple large patches have been broken down into more smaller patches. 3) A problem with uretprobes has been fixed. 4) The kprobes-test module has been made more useable for thumb tests. 5) The argument list to the "action" functions has been shrunk. 6) Alignment with a few recent patches that were made to common uprobes code specifically to support this patchset. This patchset is based on v3.13-rc1 David A. Long (14): uprobes: allow ignoring of probe hits ARM: move shared uprobe/kprobe definitions into new include file ARM: Move generic arm instruction parsing code to new files for sharing between features ARM: move generic thumb instruction parsing code to new files for use by other feature ARM: use a function table for determining instruction interpreter actions ARM: Remove use of struct kprobe from generic probes code ARM: Use new opcode type in ARM kprobes/uprobes code ARM: Make the kprobes condition_check symbol names more generic ARM: Change more ARM kprobes symbol names to something more ARM: Rename the shared kprobes/uprobe return value enum ARM: Change the remaining shared kprobes/uprobes symbols to something generic ARM: Add an emulate flag to the kprobes/uprobes instruction decode functions ARM: add uprobes support ARM: Remove uprobes dependency on kprobes Jon Medhurst (Tixy) (1): ARM: Disable jprobes test when built into thumb-mode kernel arch/arm/Kconfig |3 + arch/arm/include/asm/kprobes.h | 15 +- arch/arm/include/asm/probes.h | 25 + 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 |7 +- arch/arm/kernel/kprobes-arm.c | 804 ++ arch/arm/kernel/kprobes-common.c | 468 +--- arch/arm/kernel/kprobes-test.c | 18 +- arch/arm/kernel/kprobes-thumb.c| 1141 +++- arch/arm/kernel/kprobes.c | 24 +- arch/arm/kernel/kprobes.h | 399 +-- arch/arm/kernel/{kprobes-arm.c => probes-arm.c}| 441 ++-- arch/arm/kernel/probes-arm.h | 72 ++ .../arm/kernel/{kprobes-thumb.c => probes-thumb.c} | 771 ++--- arch/arm/kernel/probes-thumb.h | 95 ++ arch/arm/kernel/{kprobes-common.c => probes.c} | 215 +--- arch/arm/kernel/{kprobes.h => probes.h}| 91 +- arch/arm/kernel/signal.c |4 + arch/arm/kernel/uprobes-arm.c | 223 arch/arm/kernel/uprobes.c | 198 arch/arm/kernel/uprobes.h | 27 + include/linux/uprobes.h|1 + kernel/events/uprobes.c|9 + 25 files changed, 1267 insertions(+), 3829 deletions(-) create mode 100644 arch/arm/include/asm/probes.h create mode 100644 arch/arm/include/asm/uprobes.h copy arch/arm/kernel/{kprobes-arm.c => probes-arm.c} (64%) create mode 100644 arch/arm/kernel/probes-arm.h copy arch/arm/kernel/{kprobes-thumb.c => probes-thumb.c} (56%) create mode 100644 arch/arm/kernel/probes-thumb.h copy arch/arm/kernel/{kprobes-common.c => probes.c} (67%) copy arch/arm/kernel/{kprobes.h => probes.h} (85%) 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 -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3 00/15] uprobes: Add uprobes support for ARM
From: David A. Long dave.l...@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 hooks 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. The following are noteworthy changes made for v3: 1) The ARM uprobes functionality no longer depends on kprobes. As a side effect of this there are no longer any changes to the common kprobes include file (or any other common kprobes files). 2) A couple large patches have been broken down into more smaller patches. 3) A problem with uretprobes has been fixed. 4) The kprobes-test module has been made more useable for thumb tests. 5) The argument list to the action functions has been shrunk. 6) Alignment with a few recent patches that were made to common uprobes code specifically to support this patchset. This patchset is based on v3.13-rc1 David A. Long (14): uprobes: allow ignoring of probe hits ARM: move shared uprobe/kprobe definitions into new include file ARM: Move generic arm instruction parsing code to new files for sharing between features ARM: move generic thumb instruction parsing code to new files for use by other feature ARM: use a function table for determining instruction interpreter actions ARM: Remove use of struct kprobe from generic probes code ARM: Use new opcode type in ARM kprobes/uprobes code ARM: Make the kprobes condition_check symbol names more generic ARM: Change more ARM kprobes symbol names to something more ARM: Rename the shared kprobes/uprobe return value enum ARM: Change the remaining shared kprobes/uprobes symbols to something generic ARM: Add an emulate flag to the kprobes/uprobes instruction decode functions ARM: add uprobes support ARM: Remove uprobes dependency on kprobes Jon Medhurst (Tixy) (1): ARM: Disable jprobes test when built into thumb-mode kernel arch/arm/Kconfig |3 + arch/arm/include/asm/kprobes.h | 15 +- arch/arm/include/asm/probes.h | 25 + 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 |7 +- arch/arm/kernel/kprobes-arm.c | 804 ++ arch/arm/kernel/kprobes-common.c | 468 +--- arch/arm/kernel/kprobes-test.c | 18 +- arch/arm/kernel/kprobes-thumb.c| 1141 +++- arch/arm/kernel/kprobes.c | 24 +- arch/arm/kernel/kprobes.h | 399 +-- arch/arm/kernel/{kprobes-arm.c = probes-arm.c}| 441 ++-- arch/arm/kernel/probes-arm.h | 72 ++ .../arm/kernel/{kprobes-thumb.c = probes-thumb.c} | 771 ++--- arch/arm/kernel/probes-thumb.h | 95 ++ arch/arm/kernel/{kprobes-common.c = probes.c} | 215 +--- arch/arm/kernel/{kprobes.h = probes.h}| 91 +- arch/arm/kernel/signal.c |4 + arch/arm/kernel/uprobes-arm.c | 223 arch/arm/kernel/uprobes.c | 198 arch/arm/kernel/uprobes.h | 27 + include/linux/uprobes.h|1 + kernel/events/uprobes.c|9 + 25 files changed, 1267 insertions(+), 3829 deletions(-) create mode 100644 arch/arm/include/asm/probes.h create mode 100644 arch/arm/include/asm/uprobes.h copy arch/arm/kernel/{kprobes-arm.c = probes-arm.c} (64%) create mode 100644 arch/arm/kernel/probes-arm.h copy arch/arm/kernel/{kprobes-thumb.c = probes-thumb.c} (56%) create mode 100644 arch/arm/kernel/probes-thumb.h copy arch/arm/kernel/{kprobes-common.c = probes.c} (67%) copy arch/arm/kernel/{kprobes.h = probes.h} (85%) 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 -- 1.8.1.2 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/