Summary: | buildok/syscall.stp fails on ia64 2.6.23-rc1 kernel, missing sys_quotactl function | ||
---|---|---|---|
Product: | systemtap | Reporter: | William Cohen <wcohen> |
Component: | tapsets | Assignee: | Martin Hunt <hunt> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | ia64 | Target: | |
Build: | Last reconfirmed: |
Description
William Cohen
2007-07-26 22:01:43 UTC
The sys_quotactl function is defined in the 2.6.23-rc1 kernel on the ia64 $ nm vmlinux |grep quotactl a000000100237360 t dummy_quotactl a000000100241100 t selinux_quotactl a0000001000aca00 W sys32_quotactl a0000001000aca00 W sys_quotactl Comparing to 2.6.9-55.0.2.EL vmlinux $ nm /usr/lib/debug/lib/modules/2.6.9-55.0.2.EL/vmlinux |grep quotactl a000000100204c20 t dummy_quotactl a00000010020eee0 t selinux_quotactl a0000001001a1c40 T sys_quotactl a0000001007653a0 D vfs_quotactl_ops Does systemtap understand weak symbols? That seems to be the difference between the two kernels. The sys_quotactl is not implemented in the particular build of the 2.6.23-rc1 for ia64 because it failed build with CONFIG_QUOTA=y. With CONFIG_QUOTA unset the sys_quotactl is unimplemented. There are a number of conditionally implement systemcalls in kernel/sys_ni.c. systemtap tapsets will need to handle those call gracefully. One the latest stap snapshot 20070804 a couple of the syscall entries appear to be failing for buildok/syscall.stp. Get the same results on ia64 and i686 machines running the 2.6.22-rc2 kernel (but x86_64 machine doesn't have a problem): $ ../../install/bin/stap -p4 ../../src/testsuite/buildok/syscall.stp semantic error: no match for probe point while resolving probe point kernel.function("compat_do_execve") semantic error: no match for probe point while resolving probe point kernel.function("compat_sys_semtimedop") semantic error: no match for probe point while resolving probe point kernel.function("compat_do_execve").return semantic error: no match for probe point while resolving probe point kernel.function("compat_sys_semtimedop").return Pass 2: analysis failed. Try again with more '-v' (verbose) options. compat_do_execve and compat_sys_semtimedop are functions for providing 32 bit compatibility code in 64 bit systems. So syscall.stp will fail in i686 machine, but passes in x86_64 machine. One workaround is to add condition statement, %(arch == "x86_64" %? probe xxxxxxxxxx %) But other architectures such as ia64, sparc64, ppc64 are skipped. Fix was checked into cvs a week ago. |