This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: error to run systemtap in an ARM platform
Zheng Da <zhengda1936@gmail.com> writes:
> I'm still trying to fix the problem.
> semantic error: failed to retrieve return value location for vfs_write
> (/build/tegra2_seaboard/tmp/portage/sys-kernel/chromeos-kernel-9999/work/chromeos-kernel-9999/fs/read_write.c):
> identifier '$return' at read-write.stp:7:6
> source: if ($return > 0) {
> ^
> [...]
I believe this message is derived from elfutils, a library used within
systemtap. (See dwflpp.cxx:literal_stmt_for_return calling into
dwfl_module_return_value_location and follow from there.) elfutils
tells us where to find return values of functions in the ABI of each
architecture, as a function of types.
> How does systemtap use the debug information? When it compiles the
> script, does it need to read the debug information from the kernel
> image? or it needs to read the .obj files of the kernel?
It looks in the ELF and/or separated-DWARF files for the kernel:
basically the vmlinux and/or vmlinux.debug files. It does not need
the ordinary object files that were linked together to go into
vmlinux. (Kernel modules - .ko files - are different.)
> Any ideas how to debug the problem?
In this case, I might try focusing the debugger on the function
arm_return_value_location(), probably in elfutils' libebl_arm.so.
- FChE