On Thu, 20 Feb 2025 14:01:02 +0100 Heiko Carstens <hca@xxxxxxxxxxxxx> wrote: > The uprobe events test fails on s390, but also on x86 (Fedora 41). The > problem appears to be that there is an assumption that adding a uprobe to > the beginning of the executable mapping of /bin/sh is sufficient to trigger > a uprobe event when /bin/sh is executed. > > This assumption is not necessarily true. Therefore use "readelf -h" to find > the entry point address of /bin/sh and use this address when adding the > uprobe event. > > This adds a dependency to readelf which is not always installed. Therefore > add a check and exit with exit_unresolved if it is not installed. > > Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx> Acked-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> Shuah, Can you take this in your tree? -- Steve > --- > .../ftrace/test.d/dynevent/add_remove_uprobe.tc | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_uprobe.tc b/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_uprobe.tc > index 86c76679c56e..f2048c244526 100644 > --- a/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_uprobe.tc > +++ b/tools/testing/selftests/ftrace/test.d/dynevent/add_remove_uprobe.tc > @@ -3,14 +3,18 @@ > # description: Generic dynamic event - add/remove/test uprobe events > # requires: uprobe_events > > +if ! which readelf > /dev/null 2>&1 ; then > + echo "No readelf found. skipped." > + exit_unresolved > +fi > + > echo 0 > events/enable > echo > dynamic_events > > REALBIN=`readlink -f /bin/sh` > +ENTRYPOINT=`readelf -h ${REALBIN} | grep Entry | sed -e 's/[^0]*//'` > > -echo 'cat /proc/$$/maps' | /bin/sh | \ > - grep "r-xp .*${REALBIN}$" | \ > - awk '{printf "p:myevent %s:0x%s\n", $6,$3 }' >> uprobe_events > +echo "p:myevent ${REALBIN}:${ENTRYPOINT}" >> uprobe_events > > grep -q myevent uprobe_events > test -d events/uprobes/myevent