diff --git a/packages/uftrace/arm-clang-mcount-hook.patch b/packages/uftrace/arm-clang-mcount-hook.patch new file mode 100644 index 000000000..03e957178 --- /dev/null +++ b/packages/uftrace/arm-clang-mcount-hook.patch @@ -0,0 +1,31 @@ +diff --git a/arch/arm/mcount.S b/arch/arm/mcount.S +index bbfc597..eb28831 100644 +--- a/arch/arm/mcount.S ++++ b/arch/arm/mcount.S +@@ -60,6 +60,26 @@ GLOBAL(__gnu_mcount_nc) + bx ip + END(__gnu_mcount_nc) + ++/* for clang */ ++GLOBAL(mcount) ++ push {r0-r3, lr} ++ ands r3, lr, #1 /* check lr for ARM/THUMB detection */ ++ add r0, fp, #4 /* r0 points to pushed LR */ ++ bne 1f ++ ldr r1, [fp] /* fp (=r11) might point to return address on ARM */ ++ ldr r2, [r0] ++ cmp r1, r2 ++ moveq r0, lr ++1: ++ mov r1, lr /* child ip */ ++ mov r2, sp /* mcount_args */ ++ ++ bl mcount_entry ++ ++ pop {r0-r3, lr} ++ bx lr ++END(mcount) ++ + + ENTRY(mcount_return) + push {r0-r3, lr, pc} /* ensure 8-byte alignment */ diff --git a/packages/uftrace/build.sh b/packages/uftrace/build.sh index 99b85c398..81722b6a5 100644 --- a/packages/uftrace/build.sh +++ b/packages/uftrace/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://uftrace.github.io/slide TERMUX_PKG_DESCRIPTION="Function (graph) tracer for user-space" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=0.9.3 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=https://github.com/namhyung/uftrace/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=d801d72e3cdd83c510aeecc5160482d879498cf08fffd21e64f84151001e18ea TERMUX_PKG_DEPENDS="capstone, libandroid-glob, libandroid-spawn, libelf, ncurses, python2"