[llvm] [BPF] Support wrapping BPF map structs into nested, single field structs (PR #144097)
Tamir Duberstein via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 13 09:28:43 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
+ // wrapper, or an actual map struct.
+ const bool IsAWrapperType = Elements.size() == 1;
for (const auto *Element : Elements) {
const auto *MemberType = cast<DIDerivedType>(Element);
- visitTypeEntry(MemberType->getBaseType());
+ if (IsAWrapperType) {
+ // Visit a type which is either a map definition or an another wrapper.
----------------
tamird wrote:
"an another" is incorrect. but also I think both of these comments are pointless, just drop them (here and below, the comments are repeating the code)
https://github.com/llvm/llvm-project/pull/144097
More information about the llvm-commits
mailing list