LLVM: lib/DebugInfo/CodeView/SymbolRecordMapping.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
10
11using namespace llvm;
13
14#define error(X) \
15 if (auto EC = X) \
16 return EC;
17
18namespace {
19struct MapGap {
24 }
25};
26}
27
34}
35
39}
40
45}
46
48
55
57}
58
60
70
72}
73
74Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
76
83
85}
86
87Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
90
98
100}
101
102Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
104
110
112}
113
114Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
116
120
122}
123
124Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
126
128
130}
131
132Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
135
140
142}
143
144Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
146
150
152}
153
154Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
156
161
163}
164
166
170
172}
173
174Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
176
187
189}
190
191Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
193
205
207}
208
209Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
211
215
217}
218
220
225
227}
228
229Error SymbolRecordMapping::visitKnownRecord(
231
235
237}
238
239Error SymbolRecordMapping::visitKnownRecord(
242
244
246}
247
248Error SymbolRecordMapping::visitKnownRecord(
250
256
258}
259
260Error SymbolRecordMapping::visitKnownRecord(
262
267
269}
270
271Error SymbolRecordMapping::visitKnownRecord(
273
279
281}
282
283Error SymbolRecordMapping::visitKnownRecord(
285
290
292}
293
294Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
296
300
302}
303
304Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
306
311
313}
314
315Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
324
326}
327
328Error SymbolRecordMapping::visitKnownRecord(
330
335
337}
338
339Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
341
346
348}
349
350Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
352
356
358}
359
360Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
362
367
369}
370
371Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
373
378
380}
381
383
388
390}
391
396
398}
399
400Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
402
405
407}
408
422}
423
424Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
427}
428
434}
435
436Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
438
443
445}
446
447Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
449
454
456}
457
459
462
464}
465
466Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
468
470
472}
473
474Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
476
482
484}
485
486Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
497}
498
501 assert(unsigned(EncodedReg) < 4);
502 switch (CPU) {
503
504 default:
505 break;
514 switch (EncodedReg) {
519 }
522 switch (EncodedReg) {
527 }
529 }
530 return RegisterId::NONE;
531}
532
534 switch (CPU) {
535
536 default:
537 break;
546 switch (Reg) {
547 case RegisterId::VFRAME:
549 case RegisterId::EBP:
551 case RegisterId::EBX:
553 default:
554 break;
555 }
556 break;
558 switch (Reg) {
559 case RegisterId::RSP:
561 case RegisterId::RBP:
563 case RegisterId::R13:
565 default:
566 break;
567 }
568 break;
569 }
571}
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static Error mapLocalVariableAddrRange(CodeViewRecordIO &IO, LocalVariableAddrRange &Range)
This is an important base class in LLVM.
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Wrapper class representing virtual and physical registers.
constexpr Register(unsigned Val=0)
StringRef - Represent a constant reference to a string, i.e.
Value(Type *Ty, unsigned scid)
std::vector< StringRef > Strings
CVRecord is a fat pointer (base + size pair) to a symbol or type record.
Error mapVectorTail(T &Items, const ElementMapper &Mapper, const Twine &Comment="")
Error padToAlignment(uint32_t Align)
Error mapVectorN(T &Items, const ElementMapper &Mapper, const Twine &Comment="")
Error mapInteger(TypeIndex &TypeInd, const Twine &Comment="")
Error mapStringZVectorZ(std::vector< StringRef > &Value, const Twine &Comment="")
Error mapStringZ(StringRef &Value, const Twine &Comment="")
Error mapObject(T &Value)
Error mapEnum(T &Value, const Twine &Comment="")
Error mapEncodedInteger(int64_t &Value, const Twine &Comment="")
Error beginRecord(std::optional< uint32_t > MaxLength)
Error mapByteVectorTail(ArrayRef< uint8_t > &Bytes, const Twine &Comment="")
uint16_t VersionBackendMajor
uint16_t VersionFrontendMajor
uint16_t VersionBackendMinor
uint16_t VersionFrontendMinor
uint16_t VersionBackendBuild
uint16_t VersionFrontendBuild
std::vector< StringRef > ExtraStrings
uint16_t VersionBackendBuild
uint16_t VersionBackendQFE
uint16_t VersionFrontendMajor
uint16_t VersionBackendMajor
uint16_t VersionBackendMinor
uint16_t VersionFrontendBuild
uint16_t VersionFrontendMinor
uint16_t VersionFrontendQFE
DefRangeFramePointerRelHeader Hdr
LocalVariableAddrRange Range
std::vector< LocalVariableAddrGap > Gaps
DefRangeRegisterRelHeader Hdr
std::vector< LocalVariableAddrGap > Gaps
LocalVariableAddrRange Range
std::vector< LocalVariableAddrGap > Gaps
LocalVariableAddrRange Range
DefRangeRegisterHeader Hdr
LocalVariableAddrRange Range
std::vector< LocalVariableAddrGap > Gaps
DefRangeSubfieldRegisterHeader Hdr
std::vector< LocalVariableAddrGap > Gaps
LocalVariableAddrRange Range
std::vector< LocalVariableAddrGap > Gaps
LocalVariableAddrRange Range
std::vector< StringRef > Fields
FrameCookieKind CookieKind
uint32_t BytesOfCalleeSavedRegisters
uint16_t SectionIdOfExceptionHandler
uint32_t PaddingFrameBytes
uint32_t OffsetOfExceptionHandler
FrameProcedureOptions Flags
uint16_t CallInstructionSize
Error visitSymbolEnd(CVSymbol &Record) override
Error visitSymbolBegin(CVSymbol &Record) override
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
uint32_t alignOf(CodeViewContainer Container)
EncodedFramePtrReg
Two-bit value indicating which register is the designated frame pointer register.
RegisterId decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU)
EncodedFramePtrReg encodeFramePtrReg(RegisterId Reg, CPUType CPU)
This is an optimization pass for GlobalISel generic memory operations.
std::tuple< uint64_t, uint32_t > InlineSite
@ Export
Export information to summary.