[llvm] [BPF] Support wrapping BPF map structs into nested, single field structs (PR #144097)

Michal Rostecki via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 14 07:37:42 PDT 2025


================
@@ -976,11 +976,21 @@ void BTFDebug::visitMapDefType(const DIType *Ty, uint32_t &TypeId) {
   if (Tag != dwarf::DW_TAG_structure_type || CTy->isForwardDecl())
     return;
 
-  // Visit all struct members to ensure pointee type is visited
+  // Visit all struct members to ensure their types are visited.
   const DINodeArray Elements = CTy->getElements();
+  // In Aya/Rust, BPF maps are wrapped into nested types. Such wrapper types
+  // always have only one element. When encountering them, we need to visit its
+  // (only) element with an assumption that it might contain either an another
----------------
vadorovsky wrote:

I'm trying to say that the currently visited type might be either:

* an actual map definition (only arrays and pointers)
* a wrapper (composite type)
  * that wrapper can contain an actual map definition
  * that wrapper can contain... an another wrapper

https://github.com/llvm/llvm-project/pull/144097


More information about the llvm-commits mailing list