)]}'
{
  "commit": "9f81fbd9fcade5587d62cae17588174007f053f0",
  "tree": "34ebde522fb945458f1ebe00dc383d12d136feaf",
  "parents": [
    "6b8c9035c0c84023400128a353b6cd3723a5fc86"
  ],
  "author": {
    "name": "Alan Maguire",
    "email": "almagui@kernel.org",
    "time": "Fri Oct 16 15:46:27 2026 +0100"
  },
  "committer": {
    "name": "Alan Maguire",
    "email": "almagui@kernel.org",
    "time": "Tue Oct 20 12:11:08 2026 +0100"
  },
  "message": "libbpf: Support attaching tracing programs to Rust functions\n\nRust BTF FUNC names are DWARF names rather than symbol names. For\ngeneric functions these include type parameters but not the path, e.g.\n\"blob_read\u003ckernel::sync::lock::Lock\u003c[u8; 4], ...\u003e\u003e\". For trait methods\nthey are just the method name: rust_debugfs\u0027s implementation of\nkernel::platform::Driver::probe for RustDebugFs has the FUNC name\n\"probe\", so every Rust driver implementing that trait has a FUNC of the\nsame name. A single FUNC can also describe multiple monomorphized\nsymbols. pahole records each symbol in a\n\"rust:linkage:\u003cmangled name\u003e\" decl tag on the FUNC, and the kernel\naccepts such a tag id as the attach target, resolving it to the FUNC\nand symbol.\n\nFor fentry/fexit/fmod_ret targets, look for a linkage tag on a FUNC\nwith the target name and use the tag id as the attach BTF id, so that\nprograms can use the Rust name, e.g.\n\n  SEC(\"fentry/rust_debugfs:from_str\")\n\nIf the name matches multiple symbols, fail with -ENOTUNIQ and list\ncandidates; the mangled name can also be used as the target to\ndisambiguate. Functions without linkage tags are looked up by FUNC\nname as before. Only the BTF\u0027s own types are searched for tags, since\nmodule tags may point at deduplicated base FUNCs and the symbol lives\nin the module.\n\nSince Rust paths contain \"::\", only treat a single \u0027:\u0027 as the\nmodule/function separator in the target name.\n\nAlso avoid the BTF_MAX_NAME_SIZE (128) buffer used for prefixed\nlookups when there is no prefix, since Rust names are often longer\nthan that and would fail with -ENAMETOOLONG.\n\nAssisted-by: LLM\nSigned-off-by: Alan Maguire \u003calmagui@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8fcb8cf39cc0c614176644c55ce3ef2ef69641ab",
      "old_mode": 33188,
      "old_path": "tools/lib/bpf/libbpf.c",
      "new_id": "f6283c860276d25eefa7bdcf626c7d9585854c3e",
      "new_mode": 33188,
      "new_path": "tools/lib/bpf/libbpf.c"
    }
  ]
}
