Provided by: systemtap-doc_4.1-9_all bug

NAME

       error::pass4 - systemtap pass-4 errors

DESCRIPTION

       Errors that occur during pass 4 (compilation) have generally only a few causes:

       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:  build  systemtap from git for use with very young kernels.  If the issue
              persists, report the problem to the systemtap developers.

       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.

       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   THIS->foo   and  THIS->__retvalue  but  from  version  1.8  onward,  using
              STAP_ARG_foo and STAP_RETVALUE.  Adjust your embedded-C code to current  standards,
              or use the stap --compatible=VERSION option to make systemtap use a different one.

       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 .i file,  plus
              the compiler command line.  To gather relevant information, run

              stap -k --vp 0003 -p4 ....

              Systemtap  will report the saved temporary directory, and the compiler command line
              it attempted.  Go to the directory to find he main generated file stap_NNNNN_src.c.
              Force the compiler to produce a preprocessed file with:

              make -C /lib/modules/`uname -r`/build M=`pwd` stap_NNNNN_src.i

              (note  the  .i  suffix),  and  the  compiler  command  line  should  be in the file
              .stap_NNNNN_src.i.cmd.

SEE ALSO

       stap(1),
       error::reporting(7stap)

                                                                              ERROR::PASS4(7stap)