.\" t .TH ERROR::PASS4 7stap .SH NAME error::pass4 \- systemtap pass-4 errors .\" macros .de SAMPLE .nr oldin \\n(.i .br .RS .nf .nh .. .de ESAMPLE .hy .fi .RE .in \\n[oldin]u .. .SH DESCRIPTION Errors that occur during pass 4 (compilation) have generally only a few causes: .TP kernel or OS version changes The systemtap runtime and embedded-C fragments in the tapset library are designed to be portable across a wide range of OS versions. However, incompatibilities can occur when some OS changes occur, such as kernel modifications that change functions, types, or macros referenced by systemtap. Upstream (git://sourceware.org/git/systemtap.git) builds of systemtap are often quickly updated to include relevant fixes, so try getting or making an updated build. Reworded: \fBbuild systemtap from git for use with very young kernels\fP. If the issue persists, report the problem to the systemtap developers. .TP buggy embedded-C code Embedded-C code in your own guru-mode script cannot be checked by systemtap, and is passed through verbatim to the compiler. Errors in such snippets of code may be found during the pass-4 compiler invocation, though may be hard to identify by the compiler errors. .TP incompatible embedded-C code The interface standards between systemtap-generated code and embedded-C code occasionally change. For example, before version 1.8, arguments were passed using macros .IR THIS->foo " and " THIS->__retvalue but from version 1.8 onward, using .IR STAP_ARG_foo " and " STAP_RETVALUE "." Adjust your embedded-C code to current standards, or use the .IR "stap --compatible=VERSION" option to make systemtap use a different one. .TP compiler bugs and mysteries Messages such as "internal compiler error" suggest compiler problems. These should be reported to the compiler developers in the form of a preprocessed .IR ".i" file, plus the compiler command line. To gather relevant information, run .SAMPLE stap -k --vp 0003 -p4 .... .ESAMPLE Systemtap will report the saved temporary directory, and the compiler command line it attempted. Go to the directory to find he main generated file .IR stap_NNNNN_src.c . Force the compiler to produce a preprocessed file with: .SAMPLE make -C /lib/modules/`uname -r`/build M=`pwd` stap_NNNNN_src.i .ESAMPLE (note the .IR .i suffix), and the compiler command line should be in the file .IR ".stap_NNNNN_src.i.cmd" . .SH SEE ALSO .nh .nf .IR stap (1), .IR error::reporting (7stap)