From: Andrii Nakryiko Date: Sat, 15 Nov 2025 01:07:21 +0000 (-0800) Subject: Merge branch 'libbpf-fix-btf-dedup-to-support-recursive-typedef' X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef2c0b2e56ad710a2b5a85b678a6c685756e03a4;p=thirdparty%2Flinux.git Merge branch 'libbpf-fix-btf-dedup-to-support-recursive-typedef' Paul Houssel says: ==================== libbpf: fix BTF dedup to support recursive typedef Pahole fails to encode BTF for some Go projects (e.g. Kubernetes and Podman) due to recursive type definitions that create reference loops not representable in C. These recursive typedefs trigger a failure in the BTF deduplication algorithm. This patch extends btf_dedup_struct_types() to properly handle potential recursion for BTF_KIND_TYPEDEF, similar to how recursion is already handled for BTF_KIND_STRUCT. This allows pahole to successfully generate BTF for Go binaries using recursive types without impacting existing C-based workflows. Changes in v4: fix typo found by Claude-based CI Changes in v3: 1. Patch 1: Adjusted the comment of btf_dedup_ref_type() to refer to typedef as well. 2. Patch 2: Update of the "dedup: recursive typedef" test to include a duplicated version of the types to make sure deduplication still happens in this case. Changes in v2: 1. Patch 1: Refactored code to prevent copying existing logic. Instead of adding a new function we modify the existing btf_dedup_struct_type() function to handle the BTF_KIND_TYPEDEF case. Calls to btf_hash_struct() and btf_shallow_equal_struct() are replaced with calls to functions that select btf_hash_struct() / btf_hash_typedef() based on the type. 2. Patch 2: Added tests v3: https://lore.kernel.org/lkml/cover.1763024337.git.paul.houssel@orange.com/ v2: https://lore.kernel.org/lkml/cover.1762956564.git.paul.houssel@orange.com/ v1: https://lore.kernel.org/lkml/20251107153408.159342-1-paulhoussel2@gmail.com/ ==================== Link: https://patch.msgid.link/cover.1763037045.git.paul.houssel@orange.com Signed-off-by: Andrii Nakryiko --- ef2c0b2e56ad710a2b5a85b678a6c685756e03a4