From d3d482de90375466d556e861e92376e0a65bacc6 Mon Sep 17 00:00:00 2001 From: Alexander Aksenov Date: Mon, 15 Jul 2013 13:03:21 +0400 Subject: [PATCH] [FIX] Uprobe building for arm arch --- build.sh | 10 +++++----- uprobe/arch/asm-arm/swap_uprobes.c | 14 +++++++------- uprobe/arch/asm-arm/swap_uprobes.h | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build.sh b/build.sh index c76289c..956392d 100755 --- a/build.sh +++ b/build.sh @@ -2,10 +2,10 @@ modules_dir=`pwd` # kernel_dir="/home/kain/dev/inperfa/kernel/redwood/linux-3.4-exynos" -kernel_dir="/home/kain/dev/inperfa/tizen/da/emulator-kernel" -# cross_compile=arm-none-linux-gnueabi- -# arch=arm -arch=i386 +kernel_dir="/home/alexander/vanilla_kernels/linux-3.8.6" +cross_compile=/home/alexander/dev/u1_slp/arm-linux-gnueabi-gcc4.4.1-glibc2.11.1/bin/arm-none-linux-gnueabi- +arch=arm +#arch=i386 if [ ${arch} = "arm" ] ; then link_name="arm" @@ -64,7 +64,7 @@ make CROSS_COMPILE=${cross_compile} ARCH=${arch} -C ${kernel_dir} M=${ks_manager uprobe_module_name=swap_uprobe.ko make CROSS_COMPILE=${cross_compile} ARCH=${arch} -C ${kernel_dir} M=${uprobe_dir} \ - extra_cflags="-I${kprobe_dir} -I${kprobe_arch_dir} -I${uprobe_dir} -I${uprobe_arch_dir}" \ + extra_cflags="-I${modules_dir} -I${kprobe_dir} -I${kprobe_arch_dir} -I${uprobe_dir} -I${uprobe_arch_dir}" \ modules || exit 1 us_manager_module_name=swap_us_manager.ko diff --git a/uprobe/arch/asm-arm/swap_uprobes.c b/uprobe/arch/asm-arm/swap_uprobes.c index c48f158..e927e25 100644 --- a/uprobe/arch/asm-arm/swap_uprobes.c +++ b/uprobe/arch/asm-arm/swap_uprobes.c @@ -674,16 +674,16 @@ int arch_prepare_uprobe(struct uprobe *up, struct hlist_head *page_list) return ret; } -void arch_opcode_analysis_uretprobe(kprobe_opcode_t opcode) +void arch_opcode_analysis_uretprobe(struct uretprobe *rp) { /* Remove retprobe if first insn overwrites lr */ - rp->thumb_noret = !!(THUMB2_INSN_MATCH(BL, opcode) || - THUMB2_INSN_MATCH(BLX1, opcode) || - THUMB_INSN_MATCH(BLX2, opcode)); + rp->thumb_noret = !!(THUMB2_INSN_MATCH(BL, rp->up.kp.opcode) || + THUMB2_INSN_MATCH(BLX1, rp->up.kp.opcode) || + THUMB_INSN_MATCH(BLX2, rp->up.kp.opcode)); - rp->arm_noret = !!(ARM_INSN_MATCH(BL, opcode) || - ARM_INSN_MATCH(BLX1, opcode) || - ARM_INSN_MATCH(BLX2, opcode)); + rp->arm_noret = !!(ARM_INSN_MATCH(BL, rp->up.kp.opcode) || + ARM_INSN_MATCH(BLX1, rp->up.kp.opcode) || + ARM_INSN_MATCH(BLX2, rp->up.kp.opcode)); } void arch_prepare_uretprobe(struct uretprobe_instance *ri, diff --git a/uprobe/arch/asm-arm/swap_uprobes.h b/uprobe/arch/asm-arm/swap_uprobes.h index 07402a1..1083791 100644 --- a/uprobe/arch/asm-arm/swap_uprobes.h +++ b/uprobe/arch/asm-arm/swap_uprobes.h @@ -18,7 +18,7 @@ static inline int longjmp_break_uhandler(struct kprobe *p, struct pt_regs *regs) return 0; } -void arch_opcode_analysis_uretprobe(kprobe_opcode_t opcode); +void arch_opcode_analysis_uretprobe(struct uretprobe *rp); void arch_prepare_uretprobe(struct uretprobe_instance *ri, struct pt_regs *regs); unsigned long arch_get_trampoline_addr(struct kprobe *p, struct pt_regs *regs); -- 2.7.4