PAGES
← all tools
◆ General Utilities & Libraries

bpf-linker

v0.13.0 open-source

bpf-linker statically links multiple BPF object files together and optionally performs optimizations to target older kernels.

Summary

bpf-linker is an open-source command-line linker that statically links BPF object files together, operating on LLVM bitcode from .bc, .ll, or .o inputs, and applies optimizations so the resulting programs still run on older, more restrictive kernels. It is invoked as part of the Rust build toolchain via cargo binstall or a downloaded binary, which points it at developers building eBPFeBPFA Linux technology for running verified programs inside the kernel without changing its source. Tools use it to observe processes, enforce rules and process network traffic. programs in Rust rather than at security operations teams. Its README frames it as infrastructure for the aya-rs eBPF ecosystem rather than a standalone analysis tool, sitting in the category of build utilities for kernel-level instrumentation and observability code. It supports current LLVM backends, in-memory linking without intermediate disk files, and CPUCPUThe main general-purpose processor in a computer. It runs application instructions and coordinates work with memory and other hardware. targeting flags like --cpu and --cpu-features for tuning against specific kernel capabilities. With 26 contributors, 159 commits in the past year, and a release 65 days ago, it is under active development.

bpf-linker statically links multiple BPF object files together and optionally performs optimizations to target older kernels.

How bpf-linker helps

How do I combine several separately compiled BPF object files into one program that the kernel will actually load?

statically links the bitcode, IR, or object files passed to it into a single linked program, resolving references across the inputs the same way a native linker would

Will my eBPF program built with today's LLVM still load on an older production kernel?

applies optimizations during linking that target the older, more restrictive BPF instruction set and capabilities, rather than assuming the newest kernel features are present

Which CPU generation and instruction-level features should my linked program assume are available on the target kernel?

takes a CPU target and a list of individually enabled or disabled features and encodes those choices into the linked output, so the same source can be built for different kernel capability levels

Why did my build fail to link, and where?

logs errors by default so a failed link is visible immediately without needing extra configuration to turn logging on

Can I feed the linker LLVM IR or bitcode straight from the compiler instead of finished object files?

accepts bitcode files, LLVM IR files, and object files with embedded bitcode, including those packed inside archives, as interchangeable inputs to the same link step

Which exact version of the linker produced this build, and did my toolchain pick up the one I think it did?

reports its own version on request so it can be checked against what a given build actually invoked

all 11 features, with the evidence for each →

Languages

Not documented

Features

11 capabilities

Built from bpf-linker's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What bpf-linker offers you

  • Command-line interface2
All capabilities 11 capabilities
CPU feature flag control shipped Users can enable or disable specific CPU features at build time using `--cpu-features` with `+feature` and `-feature` syntax, and target named CPU variants such as BPF v4 via `--cpu`. 5 releases · 4 other sources · first seen Jun 2026

Also counts toward: Command-line interface

release

  • Extends --cpu-features to accept disabled features using the -feature prefix (e.g., --cpu-features=-dwarfris), in addition to the existing +feature enable syntax. v0.11.0 · Aug 2026 · source · release history
  • Adds v4 as a valid value for --cpu to target BPF CPU v4 processors. v0.11.0 · Aug 2026 · source · release history
  • Adds --cpu v4 command-line flag to target BPF CPU architecture version 4 v0.11.0 · Aug 2026 · source · release history
  • --cpu-features argument now accepts disabled features for finer control over generated code v0.11.0 · Aug 2026 · source · release history
  • Supports LLVM 22, enabling the new allows-misaligned-mem-access CPU feature flag via --cpu-features. v0.10.4 · Jun 2026 · source · release history

docs

  • Statically links multiple BPF object files and optionally optimizes them for older kernels using LLVM bitcode.

example

  • Target a modern kernel with BPF CPU v4 and selectively disable a CPU feature in a single build. bpf-linker --cpu=v4 --cpu-features=+alu32,-dwarfris -o output.o input.o v0.11.0 · Aug 2026 · source
  • Compile BPF programs targeting the newer v4 CPU architecture. bpf-linker --cpu v4 input.o -o output.o v0.11.0 · Aug 2026 · source
  • Enable misaligned memory access optimizations on LLVM 22 builds when targeting kernels that support it. bpf-linker --cpu-features=+allows-misaligned-mem-access -o out.o input.o v0.10.4 · Jun 2026 · source
LLVM backend versioning shipped The tool targets specific LLVM backend versions, with upgrades delivering new compiler capabilities to BPF builds. 4 releases · first seen Aug 2023

release

  • Updates the underlying LLVM backend to LLVM 23. v0.11.0 · Aug 2026 · source · release history
  • Supports LLVM 22, enabling the new allows-misaligned-mem-access CPU feature flag via --cpu-features. v0.10.4 · Jun 2026 · source · release history
  • Upgrades the LLVM backend to LLVM 19, bringing the latest BPF backend improvements. v0.9.13 · Aug 2024 · source · release history
  • Switches the internal linker logic to use LLVM's new pass manager for improved reliability. v0.9.9 · Aug 2023 · source · release history
Debuginfo archive splitting shipped Debug information is packaged into a separate release archive, keeping the main binary download smaller. 2 releases · first seen Jun 2026

release

  • Split debuginfo into separate release archive v0.10.4 · Jun 2026 · source · release history
  • Splits debuginfo into a separate release archive, reducing the size of the main binary download. v0.10.4 · Jun 2026 · source · release history
Default error logging shipped Link failures are logged to standard error by default without requiring additional configuration. 1 release · 1 other source · first seen Aug 2023

release

  • Enables error logging by default so link failures surface without extra configuration. v0.9.13 · Aug 2024 · source · release history

example

  • Force build failure if any step hits an LLVM error, ensuring strict CI gates. bpf-linker --llvm-error-fatal input.o -o output.ll v0.9.9 · Aug 2023 · source
Linker version reporting shipped Users can verify the active bpf-linker version in their toolchain via the command line. 1 release · 1 other source · first seen Aug 2024

Also counts toward: Command-line interface

release

  • Adds --version flag to report the linker version from the command line. v0.9.13 · Aug 2024 · source · release history

example

  • Quickly confirm which bpf-linker version is active in your toolchain. bpf-linker --version v0.9.13 · Aug 2024 · source
BTF generation shipped The tool generates BTF (BPF Type Format) metadata during linking, with a sanitizer that processes LLVM metadata to produce BTF output. 1 release · first seen Nov 2026

release

  • bpf-linker's BTF sanitizer now reuses LLVM metadata, reducing redundant processing during BTF generation.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v0.13.0 · Nov 2026 · source · release history
External symbol and section handling shipped The tool preserves external symbol definitions and correctly emits section metadata during the linking process. 1 release · first seen Oct 2026

release

  • Preserves extern definitions from internalization and emits proper section info during linking. v0.12.0 · Oct 2026 · source · release history
RISC-V platform support shipped The tool provides pre-built binary releases for the Linux RISC-V architecture. 1 release · first seen Oct 2026

release

  • Adds pre-built Linux RISC-V binaries to the release distribution.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v0.12.0 · Oct 2026 · source · release history
ARM platform support shipped The tool provides builds for macOS and Linux ARM platforms, using LLVM from Rust CI. 1 release · first seen Jan 2026

release

  • Releases now available for macOS and Linux ARM platforms, using LLVM from Rust CI. v0.10.0 · Jan 2026 · source · release history
In-memory linking shipped The tool enables BPF programs to be linked without writing intermediate files to disk. 1 release · first seen Jan 2026

release

  • Adds in-memory linking, enabling BPF programs to be linked without writing intermediate files to disk. v0.10.0 · Jan 2026 · source · release history
LLVM IR input support shipped The tool accepts LLVM IR files as linker inputs, broadening the set of accepted input formats. 1 release · first seen Jan 2026

release

  • Supports LLVM IR files as linker inputs, broadening the set of accepted input formats. v0.10.0 · Jan 2026 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for bpf-linker, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail bpf-linker puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

8 entries

  1. November 20261
  2. October 20261
  3. August 20261
  4. June 20262
  5. January 20261
  6. August 20241
  7. August 20231
    Show

    8 entries

    Project health

    Issue, contributor and maintainer activity in aya-rs/bpf-linker, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 12 +7 vs prior 12 months
    2. Maintainers 3 +2 joined · −2 left, last 12 months
    3. Bus factor 2 committers behind half the commits
    4. Community-filed 89% of issues opened, last 12 months
    5. Median time to close 15 days first maintainer reply 1.9 hours
    6. Open backlog 9 of 46 issues ever filed
    1. Issues opened / month 1 · 0 communitymaintainers
    2. Open backlog 9
    3. Contributors / month 3
    4. Commits / month 35
    5. Stars 297
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →