Lines Matching refs:BTF
103 Error BTFParser::parseBTF(ParseContext &Ctx, SectionRef BTF) { in parseBTF() argument
104 Expected<DataExtractor> MaybeExtractor = Ctx.makeExtractor(BTF); in parseBTF()
113 if (Magic != BTF::MAGIC) in parseBTF()
154 static size_t byteSize(BTF::CommonType *Type) { in byteSize()
155 size_t Size = sizeof(BTF::CommonType); in byteSize()
157 case BTF::BTF_KIND_INT: in byteSize()
160 case BTF::BTF_KIND_ARRAY: in byteSize()
161 Size += sizeof(BTF::BTFArray); in byteSize()
163 case BTF::BTF_KIND_VAR: in byteSize()
166 case BTF::BTF_KIND_DECL_TAG: in byteSize()
169 case BTF::BTF_KIND_STRUCT: in byteSize()
170 case BTF::BTF_KIND_UNION: in byteSize()
171 Size += sizeof(BTF::BTFMember) * Type->getVlen(); in byteSize()
173 case BTF::BTF_KIND_ENUM: in byteSize()
174 Size += sizeof(BTF::BTFEnum) * Type->getVlen(); in byteSize()
176 case BTF::BTF_KIND_ENUM64: in byteSize()
177 Size += sizeof(BTF::BTFEnum64) * Type->getVlen(); in byteSize()
179 case BTF::BTF_KIND_FUNC_PROTO: in byteSize()
180 Size += sizeof(BTF::BTFParam) * Type->getVlen(); in byteSize()
182 case BTF::BTF_KIND_DATASEC: in byteSize()
183 Size += sizeof(BTF::BTFDataSec) * Type->getVlen(); in byteSize()
191 const BTF::CommonType VoidTypeInst = {0, BTF::BTF_KIND_UNKN << 24, {0}};
224 BTF::CommonType *Type = (BTF::CommonType *)&TypesBuffer[Pos]; in parseTypesInfo()
259 if (Magic != BTF::MAGIC) in parseBTFExt()
330 [](const BTF::BPFLineInfo &L, const BTF::BPFLineInfo &R) { in parseLineInfo()
368 Relocs, [](const BTF::BPFFieldReloc &L, const BTF::BPFFieldReloc &R) { in parseRelocInfo()
386 std::optional<SectionRef> BTF; in parse() local
394 BTF = Sec; in parse()
398 if (!BTF) in parse()
402 if (Error E = parseBTF(Ctx, *BTF)) in parse()
448 const BTF::BPFLineInfo *
453 const BTF::BPFFieldReloc *
458 const BTF::CommonType *BTFParser::findType(uint32_t Id) const { in findType()
471 static RelocKindGroup relocKindGroup(const BTF::BPFFieldReloc *Reloc) { in relocKindGroup()
473 case BTF::FIELD_BYTE_OFFSET: in relocKindGroup()
474 case BTF::FIELD_BYTE_SIZE: in relocKindGroup()
475 case BTF::FIELD_EXISTENCE: in relocKindGroup()
476 case BTF::FIELD_SIGNEDNESS: in relocKindGroup()
477 case BTF::FIELD_LSHIFT_U64: in relocKindGroup()
478 case BTF::FIELD_RSHIFT_U64: in relocKindGroup()
480 case BTF::BTF_TYPE_ID_LOCAL: in relocKindGroup()
481 case BTF::BTF_TYPE_ID_REMOTE: in relocKindGroup()
482 case BTF::TYPE_EXISTENCE: in relocKindGroup()
483 case BTF::TYPE_MATCH: in relocKindGroup()
484 case BTF::TYPE_SIZE: in relocKindGroup()
486 case BTF::ENUM_VALUE_EXISTENCE: in relocKindGroup()
487 case BTF::ENUM_VALUE: in relocKindGroup()
494 static bool isMod(const BTF::CommonType *Type) { in isMod()
496 case BTF::BTF_KIND_VOLATILE: in isMod()
497 case BTF::BTF_KIND_CONST: in isMod()
498 case BTF::BTF_KIND_RESTRICT: in isMod()
499 case BTF::BTF_KIND_TYPE_TAG: in isMod()
506 static bool printMod(const BTFParser &BTF, const BTF::CommonType *Type, in printMod() argument
509 case BTF::BTF_KIND_CONST: in printMod()
512 case BTF::BTF_KIND_VOLATILE: in printMod()
515 case BTF::BTF_KIND_RESTRICT: in printMod()
518 case BTF::BTF_KIND_TYPE_TAG: in printMod()
519 Stream << " type_tag(\"" << BTF.findString(Type->NameOff) << "\")"; in printMod()
527 static const BTF::CommonType *skipModsAndTypedefs(const BTFParser &BTF, in skipModsAndTypedefs() argument
528 const BTF::CommonType *Type) { in skipModsAndTypedefs()
529 while (isMod(Type) || Type->getKind() == BTF::BTF_KIND_TYPEDEF) { in skipModsAndTypedefs()
530 auto *Base = BTF.findType(Type->Type); in skipModsAndTypedefs()
540 const BTFParser &BTF; member
546 StringRef Str = S.BTF.findString(S.Offset); in operator <<()
561 case BTF::FIELD_BYTE_OFFSET: in relocKindName()
564 case BTF::FIELD_BYTE_SIZE: in relocKindName()
567 case BTF::FIELD_EXISTENCE: in relocKindName()
570 case BTF::FIELD_SIGNEDNESS: in relocKindName()
573 case BTF::FIELD_LSHIFT_U64: in relocKindName()
576 case BTF::FIELD_RSHIFT_U64: in relocKindName()
579 case BTF::BTF_TYPE_ID_LOCAL: in relocKindName()
582 case BTF::BTF_TYPE_ID_REMOTE: in relocKindName()
585 case BTF::TYPE_EXISTENCE: in relocKindName()
588 case BTF::TYPE_MATCH: in relocKindName()
591 case BTF::TYPE_SIZE: in relocKindName()
594 case BTF::ENUM_VALUE_EXISTENCE: in relocKindName()
597 case BTF::ENUM_VALUE: in relocKindName()
657 void BTFParser::symbolize(const BTF::BPFFieldReloc *Reloc, in symbolize()
690 const BTF::CommonType *Type = findType(CurId); in symbolize()
704 const BTF::CommonType *NextType = findType(CurId); in symbolize()
714 case BTF::BTF_KIND_TYPEDEF: in symbolize()
717 case BTF::BTF_KIND_STRUCT: in symbolize()
720 case BTF::BTF_KIND_UNION: in symbolize()
723 case BTF::BTF_KIND_ENUM: in symbolize()
726 case BTF::BTF_KIND_ENUM64: in symbolize()
729 case BTF::BTF_KIND_FWD: in symbolize()
730 if (Type->Info & BTF::FWD_UNION_FLAG) in symbolize()
768 if (auto *T = dyn_cast<BTF::EnumType>(Type)) { in symbolize()
771 const BTF::BTFEnum &E = T->values()[Idx]; in symbolize()
774 } else if (auto *T = dyn_cast<BTF::Enum64Type>(Type)) { in symbolize()
777 const BTF::BTFEnum64 &E = T->values()[Idx]; in symbolize()
786 if (Type->Info & BTF::ENUM_SIGNED_FLAG) in symbolize()
825 if (auto *T = dyn_cast<BTF::StructType>(Type)) { in symbolize()
831 const BTF::BTFMember &Member = T->members()[Idx]; in symbolize()
839 } else if (auto *T = dyn_cast<BTF::ArrayType>(Type)) { in symbolize()