LLVM 20.0.0git
BTFDebug.h
Go to the documentation of this file.
1//===- BTFDebug.h -----------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// This file contains support for writing BTF debug info.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_BPF_BTFDEBUG_H
15#define LLVM_LIB_TARGET_BPF_BTFDEBUG_H
16
17#include "llvm/ADT/StringMap.h"
20#include <cstdint>
21#include <map>
22#include <set>
23#include <unordered_map>
24
25namespace llvm {
26
27class AsmPrinter;
28class BTFDebug;
29class DIType;
30class GlobalVariable;
31class MachineFunction;
32class MachineInstr;
33class MachineOperand;
34class MCInst;
35class MCStreamer;
36class MCSymbol;
37
38/// The base class for BTF type generation.
40protected:
41 uint8_t Kind;
45
46public:
48 virtual ~BTFTypeBase() = default;
49 void setId(uint32_t Id) { this->Id = Id; }
50 uint32_t getId() { return Id; }
51 uint32_t roundupToBytes(uint32_t NumBits) { return (NumBits + 7) >> 3; }
52 /// Get the size of this BTF type entry.
53 virtual uint32_t getSize() { return BTF::CommonTypeSize; }
54 /// Complete BTF type generation after all related DebugInfo types
55 /// have been visited so their BTF type id's are available
56 /// for cross referece.
57 virtual void completeType(BTFDebug &BDebug) {}
58 /// Emit types for this BTF type entry.
59 virtual void emitType(MCStreamer &OS);
60};
61
62/// Handle several derived types include pointer, const,
63/// volatile, typedef and restrict.
65 const DIDerivedType *DTy;
66 bool NeedsFixup;
67 StringRef Name;
68
69public:
70 BTFTypeDerived(const DIDerivedType *Ty, unsigned Tag, bool NeedsFixup);
71 BTFTypeDerived(unsigned NextTypeId, unsigned Tag, StringRef Name);
72 void completeType(BTFDebug &BDebug) override;
73 void emitType(MCStreamer &OS) override;
74 void setPointeeType(uint32_t PointeeType);
75};
76
77/// Handle struct or union forward declaration.
78class BTFTypeFwd : public BTFTypeBase {
79 StringRef Name;
80
81public:
82 BTFTypeFwd(StringRef Name, bool IsUnion);
83 void completeType(BTFDebug &BDebug) override;
84 void emitType(MCStreamer &OS) override;
85};
86
87/// Handle int type.
88class BTFTypeInt : public BTFTypeBase {
89 StringRef Name;
90 uint32_t IntVal; ///< Encoding, offset, bits
91
92public:
93 BTFTypeInt(uint32_t Encoding, uint32_t SizeInBits, uint32_t OffsetInBits,
94 StringRef TypeName);
95 uint32_t getSize() override { return BTFTypeBase::getSize() + sizeof(uint32_t); }
96 void completeType(BTFDebug &BDebug) override;
97 void emitType(MCStreamer &OS) override;
98};
99
100/// Handle enumerate type.
101class BTFTypeEnum : public BTFTypeBase {
102 const DICompositeType *ETy;
103 std::vector<struct BTF::BTFEnum> EnumValues;
104
105public:
106 BTFTypeEnum(const DICompositeType *ETy, uint32_t NumValues, bool IsSigned);
107 uint32_t getSize() override {
108 return BTFTypeBase::getSize() + EnumValues.size() * BTF::BTFEnumSize;
109 }
110 void completeType(BTFDebug &BDebug) override;
111 void emitType(MCStreamer &OS) override;
112};
113
114/// Handle array type.
115class BTFTypeArray : public BTFTypeBase {
116 struct BTF::BTFArray ArrayInfo;
117
118public:
119 BTFTypeArray(uint32_t ElemTypeId, uint32_t NumElems);
121 void completeType(BTFDebug &BDebug) override;
122 void emitType(MCStreamer &OS) override;
123};
124
125/// Handle struct/union type.
127 const DICompositeType *STy;
128 bool HasBitField;
129 std::vector<struct BTF::BTFMember> Members;
130
131public:
132 BTFTypeStruct(const DICompositeType *STy, bool IsStruct, bool HasBitField,
133 uint32_t NumMembers);
134 uint32_t getSize() override {
135 return BTFTypeBase::getSize() + Members.size() * BTF::BTFMemberSize;
136 }
137 void completeType(BTFDebug &BDebug) override;
138 void emitType(MCStreamer &OS) override;
139 std::string getName();
140};
141
142/// Handle function pointer.
144 const DISubroutineType *STy;
145 std::unordered_map<uint32_t, StringRef> FuncArgNames;
146 std::vector<struct BTF::BTFParam> Parameters;
147
148public:
149 BTFTypeFuncProto(const DISubroutineType *STy, uint32_t NumParams,
150 const std::unordered_map<uint32_t, StringRef> &FuncArgNames);
151 uint32_t getSize() override {
152 return BTFTypeBase::getSize() + Parameters.size() * BTF::BTFParamSize;
153 }
154 void completeType(BTFDebug &BDebug) override;
155 void emitType(MCStreamer &OS) override;
156};
157
158/// Handle subprogram
159class BTFTypeFunc : public BTFTypeBase {
160 StringRef Name;
161
162public:
163 BTFTypeFunc(StringRef FuncName, uint32_t ProtoTypeId, uint32_t Scope);
164 uint32_t getSize() override { return BTFTypeBase::getSize(); }
165 void completeType(BTFDebug &BDebug) override;
166 void emitType(MCStreamer &OS) override;
167};
168
169/// Handle variable instances
170class BTFKindVar : public BTFTypeBase {
171 StringRef Name;
172 uint32_t Info;
173
174public:
175 BTFKindVar(StringRef VarName, uint32_t TypeId, uint32_t VarInfo);
176 uint32_t getSize() override { return BTFTypeBase::getSize() + 4; }
177 void completeType(BTFDebug &BDebug) override;
178 void emitType(MCStreamer &OS) override;
179};
180
181/// Handle data sections
183 AsmPrinter *Asm;
184 std::string Name;
185 std::vector<std::tuple<uint32_t, const MCSymbol *, uint32_t>> Vars;
186
187public:
188 BTFKindDataSec(AsmPrinter *AsmPrt, std::string SecName);
189 uint32_t getSize() override {
190 return BTFTypeBase::getSize() + BTF::BTFDataSecVarSize * Vars.size();
191 }
193 Vars.push_back(std::make_tuple(Id, Sym, Size));
194 }
195 std::string getName() { return Name; }
196 void completeType(BTFDebug &BDebug) override;
197 void emitType(MCStreamer &OS) override;
198};
199
200/// Handle binary floating point type.
201class BTFTypeFloat : public BTFTypeBase {
202 StringRef Name;
203
204public:
205 BTFTypeFloat(uint32_t SizeInBits, StringRef TypeName);
206 void completeType(BTFDebug &BDebug) override;
207};
208
209/// Handle decl tags.
211 uint32_t Info;
213
214public:
215 BTFTypeDeclTag(uint32_t BaseTypeId, int ComponentId, StringRef Tag);
216 uint32_t getSize() override { return BTFTypeBase::getSize() + 4; }
217 void completeType(BTFDebug &BDebug) override;
218 void emitType(MCStreamer &OS) override;
219};
220
221/// Handle 64-bit enumerate type.
223 const DICompositeType *ETy;
224 std::vector<struct BTF::BTFEnum64> EnumValues;
225
226public:
227 BTFTypeEnum64(const DICompositeType *ETy, uint32_t NumValues, bool IsSigned);
228 uint32_t getSize() override {
229 return BTFTypeBase::getSize() + EnumValues.size() * BTF::BTFEnum64Size;
230 }
231 void completeType(BTFDebug &BDebug) override;
232 void emitType(MCStreamer &OS) override;
233};
234
236 const DIDerivedType *DTy;
238
239public:
242 void completeType(BTFDebug &BDebug) override;
243};
244
245/// String table.
247 /// String table size in bytes.
248 uint32_t Size;
249 /// A mapping from string table offset to the index
250 /// of the Table. It is used to avoid putting
251 /// duplicated strings in the table.
252 std::map<uint32_t, uint32_t> OffsetToIdMap;
253 /// A vector of strings to represent the string table.
254 std::vector<std::string> Table;
255
256public:
257 BTFStringTable() : Size(0) {}
258 uint32_t getSize() { return Size; }
259 std::vector<std::string> &getTable() { return Table; }
260 /// Add a string to the string table and returns its offset
261 /// in the table.
263};
264
265/// Represent one func and its type id.
267 const MCSymbol *Label; ///< Func MCSymbol
268 uint32_t TypeId; ///< Type id referring to .BTF type section
269};
270
271/// Represent one line info.
273 MCSymbol *Label; ///< MCSymbol identifying insn for the lineinfo
274 uint32_t FileNameOff; ///< file name offset in the .BTF string table
275 uint32_t LineOff; ///< line offset in the .BTF string table
276 uint32_t LineNum; ///< the line number
277 uint32_t ColumnNum; ///< the column number
278};
279
280/// Represent one field relocation.
282 const MCSymbol *Label; ///< MCSymbol identifying insn for the reloc
283 uint32_t TypeID; ///< Type ID
284 uint32_t OffsetNameOff; ///< The string to traverse types
285 uint32_t RelocKind; ///< What to patch the instruction
286};
287
288/// Collect and emit BTF information.
290 MCStreamer &OS;
291 bool SkipInstruction;
292 bool LineInfoGenerated;
293 uint32_t SecNameOff;
294 uint32_t ArrayIndexTypeId;
295 bool MapDefNotCollected;
296 BTFStringTable StringTable;
297 std::vector<std::unique_ptr<BTFTypeBase>> TypeEntries;
298 std::unordered_map<const DIType *, uint32_t> DIToIdMap;
299 std::map<uint32_t, std::vector<BTFFuncInfo>> FuncInfoTable;
300 std::map<uint32_t, std::vector<BTFLineInfo>> LineInfoTable;
301 std::map<uint32_t, std::vector<BTFFieldReloc>> FieldRelocTable;
303 std::map<std::string, std::unique_ptr<BTFKindDataSec>> DataSecEntries;
304 std::vector<BTFTypeStruct *> StructTypes;
305 std::map<const GlobalVariable *, std::pair<int64_t, uint32_t>> PatchImms;
306 std::map<const DICompositeType *,
307 std::vector<std::pair<const DIDerivedType *, BTFTypeDerived *>>>
308 FixupDerivedTypes;
309 std::set<const Function *>ProtoFunctions;
310
311 /// Add types to TypeEntries.
312 /// @{
313 /// Add types to TypeEntries and DIToIdMap.
314 uint32_t addType(std::unique_ptr<BTFTypeBase> TypeEntry, const DIType *Ty);
315 /// Add types to TypeEntries only and return type id.
316 uint32_t addType(std::unique_ptr<BTFTypeBase> TypeEntry);
317 /// @}
318
319 /// IR type visiting functions.
320 /// @{
321 void visitTypeEntry(const DIType *Ty);
322 void visitTypeEntry(const DIType *Ty, uint32_t &TypeId, bool CheckPointer,
323 bool SeenPointer);
324 void visitBasicType(const DIBasicType *BTy, uint32_t &TypeId);
325 void visitSubroutineType(
326 const DISubroutineType *STy, bool ForSubprog,
327 const std::unordered_map<uint32_t, StringRef> &FuncArgNames,
328 uint32_t &TypeId);
329 void visitFwdDeclType(const DICompositeType *CTy, bool IsUnion,
330 uint32_t &TypeId);
331 void visitCompositeType(const DICompositeType *CTy, uint32_t &TypeId);
332 void visitStructType(const DICompositeType *STy, bool IsStruct,
333 uint32_t &TypeId);
334 void visitArrayType(const DICompositeType *ATy, uint32_t &TypeId);
335 void visitEnumType(const DICompositeType *ETy, uint32_t &TypeId);
336 void visitDerivedType(const DIDerivedType *DTy, uint32_t &TypeId,
337 bool CheckPointer, bool SeenPointer);
338 void visitMapDefType(const DIType *Ty, uint32_t &TypeId);
339 /// @}
340
341 /// Check whether the type is a forward declaration candidate or not.
342 bool IsForwardDeclCandidate(const DIType *Base);
343
344 /// Get the file content for the subprogram. Certain lines of the file
345 /// later may be put into string table and referenced by line info.
346 std::string populateFileContent(const DIFile *File);
347
348 /// Construct a line info.
349 void constructLineInfo(MCSymbol *Label, const DIFile *File, uint32_t Line,
350 uint32_t Column);
351
352 /// Generate types and variables for globals.
353 void processGlobals(bool ProcessingMapDef);
354
355 /// Process global variable initializer in pursuit for function
356 /// pointers.
357 void processGlobalInitializer(const Constant *C);
358
359 /// Generate types for function prototypes.
360 void processFuncPrototypes(const Function *);
361
362 /// Generate types for decl annotations.
363 void processDeclAnnotations(DINodeArray Annotations, uint32_t BaseTypeId,
364 int ComponentId);
365
366 /// Generate types for DISubprogram and it's arguments.
367 uint32_t processDISubprogram(const DISubprogram *SP, uint32_t ProtoTypeId,
368 uint8_t Scope);
369
370 /// Generate BTF type_tag's. If BaseTypeId is nonnegative, the last
371 /// BTF type_tag in the chain points to BaseTypeId. Otherwise, it points to
372 /// the base type of DTy. Return the type id of the first BTF type_tag
373 /// in the chain. If no type_tag's are generated, a negative value
374 /// is returned.
375 int genBTFTypeTags(const DIDerivedType *DTy, int BaseTypeId);
376
377 /// Generate one field relocation record.
378 void generatePatchImmReloc(const MCSymbol *ORSym, uint32_t RootId,
379 const GlobalVariable *, bool IsAma);
380
381 /// Populating unprocessed type on demand.
382 unsigned populateType(const DIType *Ty);
383
384 /// Process global variables referenced by relocation instructions
385 /// and extern function references.
386 void processGlobalValue(const MachineOperand &MO);
387
388 /// Emit common header of .BTF and .BTF.ext sections.
389 void emitCommonHeader();
390
391 /// Emit the .BTF section.
392 void emitBTFSection();
393
394 /// Emit the .BTF.ext section.
395 void emitBTFExtSection();
396
397protected:
398 /// Gather pre-function debug information.
399 void beginFunctionImpl(const MachineFunction *MF) override;
400
401 /// Post process after all instructions in this function are processed.
402 void endFunctionImpl(const MachineFunction *MF) override;
403
404public:
405 BTFDebug(AsmPrinter *AP);
406
407 ///
408 bool InstLower(const MachineInstr *MI, MCInst &OutMI);
409
410 /// Get the special array index type id.
412 assert(ArrayIndexTypeId);
413 return ArrayIndexTypeId;
414 }
415
416 /// Add string to the string table.
417 size_t addString(StringRef S) { return StringTable.addString(S); }
418
419 /// Get the type id for a particular DIType.
421 assert(Ty && "Invalid null Type");
422 assert(DIToIdMap.find(Ty) != DIToIdMap.end() &&
423 "DIType not added in the BDIToIdMap");
424 return DIToIdMap[Ty];
425 }
426
427 /// Process beginning of an instruction.
428 void beginInstruction(const MachineInstr *MI) override;
429
430 /// Complete all the types and emit the BTF sections.
431 void endModule() override;
432};
433
434} // end namespace llvm
435
436#endif
This file defines the StringMap class.
This file contains the layout of .BTF and .BTF.ext ELF sections.
uint64_t Size
Symbol * Sym
Definition: ELF_riscv.cpp:479
IRTranslator LLVM IR MI
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
raw_pwrite_stream & OS
Annotations lets you mark points and ranges inside source code, for tests:
Definition: Annotations.h:53
This class is intended to be used as a driving class for all asm writers.
Definition: AsmPrinter.h:86
Collect and emit BTF information.
Definition: BTFDebug.h:289
void endFunctionImpl(const MachineFunction *MF) override
Post process after all instructions in this function are processed.
Definition: BTFDebug.cpp:1240
void beginInstruction(const MachineInstr *MI) override
Process beginning of an instruction.
Definition: BTFDebug.cpp:1312
bool InstLower(const MachineInstr *MI, MCInst &OutMI)
Emit proper patchable instructions.
Definition: BTFDebug.cpp:1525
size_t addString(StringRef S)
Add string to the string table.
Definition: BTFDebug.h:417
uint32_t getArrayIndexTypeId()
Get the special array index type id.
Definition: BTFDebug.h:411
uint32_t getTypeId(const DIType *Ty)
Get the type id for a particular DIType.
Definition: BTFDebug.h:420
void endModule() override
Complete all the types and emit the BTF sections.
Definition: BTFDebug.cpp:1608
void beginFunctionImpl(const MachineFunction *MF) override
Gather pre-function debug information.
Definition: BTFDebug.cpp:1164
Handle data sections.
Definition: BTFDebug.h:182
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:420
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:415
void addDataSecEntry(uint32_t Id, const MCSymbol *Sym, uint32_t Size)
Definition: BTFDebug.h:192
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:189
std::string getName()
Definition: BTFDebug.h:195
Handle variable instances.
Definition: BTFDebug.h:170
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:403
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:176
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:399
String table.
Definition: BTFDebug.h:246
uint32_t getSize()
Definition: BTFDebug.h:258
uint32_t addString(StringRef S)
Add a string to the string table and returns its offset in the table.
Definition: BTFDebug.cpp:494
std::vector< std::string > & getTable()
Definition: BTFDebug.h:259
Handle array type.
Definition: BTFDebug.h:115
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:272
void completeType(BTFDebug &BDebug) override
Represent a BTF array.
Definition: BTFDebug.cpp:260
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:120
The base class for BTF type generation.
Definition: BTFDebug.h:39
uint8_t Kind
Definition: BTFDebug.h:41
void setId(uint32_t Id)
Definition: BTFDebug.h:49
struct BTF::CommonType BTFType
Definition: BTFDebug.h:44
virtual uint32_t getSize()
Get the size of this BTF type entry.
Definition: BTFDebug.h:53
virtual void completeType(BTFDebug &BDebug)
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.h:57
uint32_t Id
Definition: BTFDebug.h:43
virtual ~BTFTypeBase()=default
virtual void emitType(MCStreamer &OS)
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:39
uint32_t getId()
Definition: BTFDebug.h:50
uint32_t roundupToBytes(uint32_t NumBits)
Definition: BTFDebug.h:51
Handle decl tags.
Definition: BTFDebug.h:210
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:454
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:216
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:462
Handle several derived types include pointer, const, volatile, typedef and restrict.
Definition: BTFDebug.h:64
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:82
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:104
void setPointeeType(uint32_t PointeeType)
Definition: BTFDebug.cpp:106
Handle 64-bit enumerate type.
Definition: BTFDebug.h:222
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:228
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:214
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:238
Handle enumerate type.
Definition: BTFDebug.h:101
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:175
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:107
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:199
Handle binary floating point type.
Definition: BTFDebug.h:201
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:437
Handle function pointer.
Definition: BTFDebug.h:143
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:151
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:339
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:365
Handle subprogram.
Definition: BTFDebug.h:159
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:389
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:381
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:164
Handle struct or union forward declaration.
Definition: BTFDebug.h:78
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:125
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:117
Handle int type.
Definition: BTFDebug.h:88
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:162
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:95
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:154
Handle struct/union type.
Definition: BTFDebug.h:126
void emitType(MCStreamer &OS) override
Emit types for this BTF type entry.
Definition: BTFDebug.cpp:314
uint32_t getSize() override
Get the size of this BTF type entry.
Definition: BTFDebug.h:134
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:288
std::string getName()
Definition: BTFDebug.cpp:324
void completeType(BTFDebug &BDebug) override
Complete BTF type generation after all related DebugInfo types have been visited so their BTF type id...
Definition: BTFDebug.cpp:480
This is an important base class in LLVM.
Definition: Constant.h:42
Basic type, like 'int' or 'float'.
Subprogram description.
Type array for a subprogram.
Base class for types.
Base class for debug information backends.
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:184
Streaming machine code generation interface.
Definition: MCStreamer.h:213
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition: MCSymbol.h:41
Representation of each machine instruction.
Definition: MachineInstr.h:69
MachineOperand class - Representation of each machine instruction operand.
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
Definition: StringMap.h:128
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
@ BTFEnum64Size
Definition: BTF.h:66
@ BTFArraySize
Definition: BTF.h:64
@ BTFMemberSize
Definition: BTF.h:67
@ BTFEnumSize
Definition: BTF.h:65
@ BTFParamSize
Definition: BTF.h:68
@ CommonTypeSize
Definition: BTF.h:63
@ BTFDataSecVarSize
Definition: BTF.h:69
@ C
The default llvm calling convention, compatible with C.
Definition: CallingConv.h:34
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
Represent one field relocation.
Definition: BTFDebug.h:281
uint32_t RelocKind
What to patch the instruction.
Definition: BTFDebug.h:285
const MCSymbol * Label
MCSymbol identifying insn for the reloc.
Definition: BTFDebug.h:282
uint32_t TypeID
Type ID.
Definition: BTFDebug.h:283
uint32_t OffsetNameOff
The string to traverse types.
Definition: BTFDebug.h:284
Represent one func and its type id.
Definition: BTFDebug.h:266
uint32_t TypeId
Type id referring to .BTF type section.
Definition: BTFDebug.h:268
const MCSymbol * Label
Func MCSymbol.
Definition: BTFDebug.h:267
Represent one line info.
Definition: BTFDebug.h:272
uint32_t LineOff
line offset in the .BTF string table
Definition: BTFDebug.h:275
MCSymbol * Label
MCSymbol identifying insn for the lineinfo.
Definition: BTFDebug.h:273
uint32_t ColumnNum
the column number
Definition: BTFDebug.h:277
uint32_t FileNameOff
file name offset in the .BTF string table
Definition: BTFDebug.h:274
uint32_t LineNum
the line number
Definition: BTFDebug.h:276
BTF_KIND_ARRAY is followed by one "struct BTFArray".
Definition: BTF.h:169
The BTF common type definition.
Definition: BTF.h:107