error to run systemtap in an ARM platform

Frank Ch. Eigler fche@redhat.com
Sun Jul 24 01:57:00 GMT 2011


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



More information about the Systemtap mailing list