---
name: "stapbpf"
section: "8"
platform: "linux"
package: "systemtap"
version: "5.6-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/stapbpf"
---

# stapbpf(8)

systemtap bpf runtime

## NAME

stapbpf - systemtap bpf runtime

## SYNOPSIS

**stapbpf** \[ *OPTIONS* \] *MODULE*

## DESCRIPTION

The *stapbpf* program is the BPF back-end of the Systemtap tool.  It expects a  bpf-elf file produced by the front-end *stap* tool, when run with *--runtime=bpf*.

Splitting the systemtap tool into a front-end and a back-end allows a user to compile a systemtap script on a development machine that has the debugging information needed to compile the script and then transfer the resulting shared object to a production machine that doesn't have any development tools or debugging information installed.

Please refer to [*stappaths*(7)](/stappaths/7.md) for the version number, or run

 $ rpm -q systemtap # (for Fedora/RHEL)\
  $ apt-get -v systemtap # (for Ubuntu)

## OPTIONS

The *stapbpf* program supports the following options.  Any other option prints a list of supported options.

- **-v**

  Verbose mode.

- **-V**

  Print version number and exit.

- **-w**

  Suppress warnings from the script.

- **-h**

  Print help message.

- **-x PID**

  The '\_stp\_target' variable will be set to PID.

- **-o FILE**

  Send output to FILE.

## ARGUMENTS

**MODULE** is the path of a bpf-elf file produced by the front-end *stap* tool, when run with *--runtime=bpf*.

## EXAMPLES

Here is a very basic example of how to generate a *stapbpf* module. First, use *stap* to compile a script.  The *stap* program will report the name of the resulting module in the current working directory.

 $ stap --runtime=bpf -p4 -e 'probe begin { printf("Hello World!\\n"); exit() }'\
  stap\_28784.bo

Run *stapbpf* with the pathname to the module as an argument.

 $ stapbpf ./stap\_28784.bo\
  Hello World!

If the *-p4* option is omitted, *stap* will invoke *stapbpf* automatically.

## LIMITATIONS

This runtime is in an early stage of development and it currently lacks support for a number of features available in the default runtime. A subset of the following probe points is supported:

```
begin
end
kernel.*
process.*
timer.*
perf.*
procfs.*
```

In general, probes based on the kprobes, uprobes, tracepoint and perf infrastructures are supported. See [*stapprobes*(3stap)](/stapprobes/3stap.md) for more information on the probe points and which tracing infrastructures they are based on.

**for** loops, **foreach** loops and **while** loops are usable only in  **begin** and **end** probes.  **try** statements are not supported.

There is limited support for string operations. String variables and literals are limited to 64 characters, except for **printf** format strings, which are limited to 256 characters.

A subset of the statistical aggregate functionality is available, with support only for the *@count()*, *@sum()*, *@avg()* extractor functions.

The name of the bpf-elf file produced by the front-end  *stap* tool should not be changed.

## SAFETY AND SECURITY

See the  [*stap*(1)](/stap/1.md) manual page for additional information on safety and security.

## SEE ALSO

[*stap*(1)](/stap/1.md), [*stapprobes*(3stap)](/stapprobes/3stap.md), [*staprun*(8)](/staprun/8.md), [*stapex*(3stap)](/stapex/3stap.md)

## BUGS

Use the Bugzilla link of the project web page or our mailing list. **http://sourceware.org/systemtap/**, **\<systemtap@sourceware.org\>**.
