[FIX] Uprobe building for arm arch
authorAlexander Aksenov <a.aksenov@samsung.com>
Mon, 15 Jul 2013 09:03:21 +0000 (13:03 +0400)
committerAlexander Aksenov <a.aksenov@samsung.com>
Mon, 15 Jul 2013 09:03:21 +0000 (13:03 +0400)
build.sh
uprobe/arch/asm-arm/swap_uprobes.c
uprobe/arch/asm-arm/swap_uprobes.h

index c76289c..956392d 100755 (executable)
--- 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
index c48f158..e927e25 100644 (file)
@@ -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,
index 07402a1..1083791 100644 (file)
@@ -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);