LLVM: include/llvm/DebugInfo/CodeView/SymbolRecord.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORD_H
10#define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORD_H
11
24#include
25#include
26
27namespace llvm {
29
31protected:
33
34public:
36
38};
39
40
41
43 static constexpr uint32_t RelocationOffset = 32;
44
45public:
49
53
65
67};
68
69
88
89
105
106
122
123
138
147
149public:
154
157
163
165
167};
168
179
181public:
186
187
188
191
193};
194
203
206 std::forward_iterator_tag,
207 DecodedAnnotation> {
211 : Data(Other.Data) {}
212
214 return Data == Other.Data;
215 }
216
218 Data = Other.Data;
219 return *this;
220 }
221
223 if (!ParseCurrentAnnotation()) {
225 return *this;
226 }
227 Data = Next;
229 Current.reset();
230 return *this;
231 }
232
234 ParseCurrentAnnotation();
235 return *Current;
236 }
237
238private:
241 return -1;
242
244
245 if ((FirstByte & 0x80) == 0x00)
246 return FirstByte;
247
249 return -1;
250
252
253 if ((FirstByte & 0xC0) == 0x80)
254 return ((FirstByte & 0x3F) << 8) | SecondByte;
255
257 return -1;
258
260
262 return -1;
263
265
266 if ((FirstByte & 0xE0) == 0xC0)
267 return ((FirstByte & 0x1F) << 24) | (SecondByte << 16) |
268 (ThirdByte << 8) | FourthByte;
269
270 return -1;
271 }
272
274 if (Operand & 1)
275 return -(Operand >> 1);
276 return Operand >> 1;
277 }
278
281 }
282
283 bool ParseCurrentAnnotation() {
284 if (Current)
285 return true;
286
287 Next = Data;
288 uint32_t Op = GetCompressedAnnotation(Next);
289 DecodedAnnotation Result;
291 switch (Result.OpCode) {
293 Result.Name = "Invalid";
294 Next = ArrayRef<uint8_t>();
295 break;
297 Result.Name = "CodeOffset";
298 Result.U1 = GetCompressedAnnotation(Next);
299 break;
301 Result.Name = "ChangeCodeOffsetBase";
302 Result.U1 = GetCompressedAnnotation(Next);
303 break;
305 Result.Name = "ChangeCodeOffset";
306 Result.U1 = GetCompressedAnnotation(Next);
307 break;
309 Result.Name = "ChangeCodeLength";
310 Result.U1 = GetCompressedAnnotation(Next);
311 break;
313 Result.Name = "ChangeFile";
314 Result.U1 = GetCompressedAnnotation(Next);
315 break;
317 Result.Name = "ChangeLineEndDelta";
318 Result.U1 = GetCompressedAnnotation(Next);
319 break;
321 Result.Name = "ChangeRangeKind";
322 Result.U1 = GetCompressedAnnotation(Next);
323 break;
325 Result.Name = "ChangeColumnStart";
326 Result.U1 = GetCompressedAnnotation(Next);
327 break;
329 Result.Name = "ChangeColumnEnd";
330 Result.U1 = GetCompressedAnnotation(Next);
331 break;
333 Result.Name = "ChangeLineOffset";
334 Result.S1 = DecodeSignedOperand(Next);
335 break;
337 Result.Name = "ChangeColumnEndDelta";
338 Result.S1 = DecodeSignedOperand(Next);
339 break;
341 Result.Name = "ChangeCodeOffsetAndLineOffset";
342 uint32_t Annotation = GetCompressedAnnotation(Next);
343 Result.S1 = DecodeSignedOperand(Annotation >> 4);
345 break;
346 }
348 Result.Name = "ChangeCodeLengthAndCodeOffset";
349 Result.U1 = GetCompressedAnnotation(Next);
350 Result.U2 = GetCompressedAnnotation(Next);
351 break;
352 }
353 }
354 Result.Bytes = Data.take_front(Data.size() - Next.size());
356 return true;
357 }
358
359 std::optional Current;
360 ArrayRef<uint8_t> Data;
361 ArrayRef<uint8_t> Next;
362};
363
364
366public:
371
376
381
383};
384
391
392
408
409
423
424
440
441
454
460
465
467
468
470 static constexpr uint32_t RelocationOffset = 8;
471
472public:
477
481
485
487};
488
489
491 static constexpr uint32_t RelocationOffset = 12;
492
493public:
498
502
507
509};
510
515
516
518public:
523
525
529
531};
532
538
539
541public:
547
549
553
555};
556
560
561
563 static constexpr uint32_t RelocationOffset = 8;
564
565public:
571
575
579
581};
582
588
589
591public:
596
597
598
599
600
604 };
605
608
610
614
616};
617
618
631
632
634 static constexpr uint32_t RelocationOffset = 16;
635
636public:
640
644
651
653};
654
655
657 static constexpr uint32_t RelocationOffset = 4;
658
659public:
663
667
672
674};
675
676
690
691
703
704
717
718
733
734
736public:
741
752
755
757};
758
759
761public:
767
779
783
790
795
797};
798
799
801public:
806
814
815
820
821
826
828
829private:
830};
831
832
834 static constexpr uint32_t RelocationOffset = 4;
835
836public:
840
844
848
850};
851
852
854 static constexpr uint32_t RelocationOffset = 4;
855
856public:
861
865
870
872};
873
874
876 static constexpr uint32_t RelocationOffset = 4;
877
878public:
882
886
891
893};
894
895
907
908
920
921
935
936
951
952
966
967
969 static constexpr uint32_t RelocationOffset = 8;
970
971public:
975
979
984
986};
987
988
990 static constexpr uint32_t RelocationOffset = 8;
991
992public:
997
1001
1006
1008};
1009
1010
1012public:
1017
1019
1021};
1022
1023
1025public:
1030
1034
1036};
1037
1040
1041}
1042}
1043
1044#endif
This file implements the APSInt class, which is a simple class that represents an arbitrary sized int...
static DecodeStatus DecodeSignedOperand(MCInst &Inst, unsigned InsnS, uint64_t Address=0, const MCDisassembler *Decoder=nullptr)
Lightweight arrays that are backed by an arbitrary BinaryStream.
An arbitrary precision integer that knows its signedness.
Annotations lets you mark points and ranges inside source code, for tests:
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
Tagged union holding either a T or a Error.
StringRef - Represent a constant reference to a string, i.e.
std::vector< StringRef > Strings
Definition SymbolRecord.h:1033
AnnotationSym(uint32_t RecordOffset)
Definition SymbolRecord.h:1027
AnnotationSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:1026
uint32_t CodeOffset
Definition SymbolRecord.h:1031
uint16_t Segment
Definition SymbolRecord.h:1032
uint32_t RecordOffset
Definition SymbolRecord.h:1035
int32_t Offset
Definition SymbolRecord.h:929
TypeIndex Type
Definition SymbolRecord.h:930
StringRef Name
Definition SymbolRecord.h:931
BPRelativeSym(uint32_t RecordOffset)
Definition SymbolRecord.h:925
BPRelativeSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:924
uint32_t RecordOffset
Definition SymbolRecord.h:933
uint32_t CodeOffset
Definition SymbolRecord.h:648
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:641
BlockSym(uint32_t RecordOffset)
Definition SymbolRecord.h:638
uint32_t CodeSize
Definition SymbolRecord.h:647
uint16_t Segment
Definition SymbolRecord.h:649
uint32_t End
Definition SymbolRecord.h:646
StringRef Name
Definition SymbolRecord.h:650
uint32_t Parent
Definition SymbolRecord.h:645
uint32_t RecordOffset
Definition SymbolRecord.h:652
BlockSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:637
BuildInfoSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:911
TypeIndex BuildId
Definition SymbolRecord.h:916
uint32_t RecordOffset
Definition SymbolRecord.h:918
BuildInfoSym(uint32_t RecordOffset)
Definition SymbolRecord.h:912
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:841
uint32_t RecordOffset
Definition SymbolRecord.h:849
CallSiteInfoSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:837
uint16_t Segment
Definition SymbolRecord.h:846
CallSiteInfoSym(uint32_t RecordOffset)
Definition SymbolRecord.h:838
uint32_t CodeOffset
Definition SymbolRecord.h:845
TypeIndex Type
Definition SymbolRecord.h:847
CallerSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:172
std::vector< TypeIndex > Indices
Definition SymbolRecord.h:175
uint32_t RecordOffset
Definition SymbolRecord.h:177
CallerSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:171
uint16_t Segment
Definition SymbolRecord.h:133
uint32_t RecordOffset
Definition SymbolRecord.h:136
StringRef Name
Definition SymbolRecord.h:134
CoffGroupSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:126
uint32_t Size
Definition SymbolRecord.h:130
CoffGroupSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:127
uint32_t Characteristics
Definition SymbolRecord.h:131
uint32_t Offset
Definition SymbolRecord.h:132
uint8_t getLanguage() const
Definition SymbolRecord.h:753
Compile2Sym(uint32_t RecordOffset)
Definition SymbolRecord.h:738
uint32_t getFlags() const
Definition SymbolRecord.h:754
Compile2Sym(SymbolRecordKind Kind)
Definition SymbolRecord.h:737
uint16_t VersionBackendMajor
Definition SymbolRecord.h:747
CompileSym2Flags Flags
Definition SymbolRecord.h:742
uint16_t VersionFrontendMajor
Definition SymbolRecord.h:744
uint16_t VersionBackendMinor
Definition SymbolRecord.h:748
uint16_t VersionFrontendMinor
Definition SymbolRecord.h:745
StringRef Version
Definition SymbolRecord.h:750
uint16_t VersionBackendBuild
Definition SymbolRecord.h:749
uint16_t VersionFrontendBuild
Definition SymbolRecord.h:746
std::vector< StringRef > ExtraStrings
Definition SymbolRecord.h:751
uint32_t RecordOffset
Definition SymbolRecord.h:756
CPUType Machine
Definition SymbolRecord.h:743
Compile3Sym()
Definition SymbolRecord.h:762
CompileSym3Flags getFlags() const
Definition SymbolRecord.h:787
uint16_t VersionBackendBuild
Definition SymbolRecord.h:776
Compile3Sym(SymbolRecordKind Kind)
Definition SymbolRecord.h:763
uint16_t VersionBackendQFE
Definition SymbolRecord.h:777
Compile3Sym(uint32_t RecordOffset)
Definition SymbolRecord.h:764
CompileSym3Flags Flags
Definition SymbolRecord.h:768
SourceLanguage getLanguage() const
Definition SymbolRecord.h:784
StringRef Version
Definition SymbolRecord.h:778
uint16_t VersionFrontendMajor
Definition SymbolRecord.h:770
void setLanguage(SourceLanguage Lang)
Definition SymbolRecord.h:780
bool hasOptimizations() const
Definition SymbolRecord.h:791
uint16_t VersionBackendMajor
Definition SymbolRecord.h:774
CPUType Machine
Definition SymbolRecord.h:769
uint16_t VersionBackendMinor
Definition SymbolRecord.h:775
uint16_t VersionFrontendBuild
Definition SymbolRecord.h:772
uint16_t VersionFrontendMinor
Definition SymbolRecord.h:771
uint16_t VersionFrontendQFE
Definition SymbolRecord.h:773
uint32_t RecordOffset
Definition SymbolRecord.h:796
APSInt Value
Definition SymbolRecord.h:961
StringRef Name
Definition SymbolRecord.h:962
ConstantSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:955
ConstantSym(uint32_t RecordOffset)
Definition SymbolRecord.h:956
TypeIndex Type
Definition SymbolRecord.h:960
uint32_t RecordOffset
Definition SymbolRecord.h:964
uint16_t Segment
Definition SymbolRecord.h:982
TypeIndex Type
Definition SymbolRecord.h:980
DataSym(uint32_t RecordOffset)
Definition SymbolRecord.h:973
uint32_t DataOffset
Definition SymbolRecord.h:981
StringRef Name
Definition SymbolRecord.h:983
uint32_t RecordOffset
Definition SymbolRecord.h:985
DataSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:972
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:976
uint32_t RecordOffset
Definition SymbolRecord.h:629
DefRangeFramePointerRelFullScopeSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:621
DefRangeFramePointerRelFullScopeSym(uint32_t RecordOffset)
Definition SymbolRecord.h:623
int32_t Offset
Definition SymbolRecord.h:627
DefRangeFramePointerRelSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:566
DefRangeFramePointerRelSym(uint32_t RecordOffset)
Definition SymbolRecord.h:568
DefRangeFramePointerRelHeader Hdr
Definition SymbolRecord.h:576
LocalVariableAddrRange Range
Definition SymbolRecord.h:577
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:572
uint32_t RecordOffset
Definition SymbolRecord.h:580
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:578
uint32_t RecordOffset
Definition SymbolRecord.h:615
DefRangeRegisterRelHeader Hdr
Definition SymbolRecord.h:611
bool hasSpilledUDTMember() const
Definition SymbolRecord.h:606
@ OffsetInParentShift
Definition SymbolRecord.h:603
@ IsSubfieldFlag
Definition SymbolRecord.h:602
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:609
uint16_t offsetInParent() const
Definition SymbolRecord.h:607
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:613
DefRangeRegisterRelSym(uint32_t RecordOffset)
Definition SymbolRecord.h:593
LocalVariableAddrRange Range
Definition SymbolRecord.h:612
DefRangeRegisterRelSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:592
uint32_t RecordOffset
Definition SymbolRecord.h:530
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:524
DefRangeRegisterSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:519
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:528
LocalVariableAddrRange Range
Definition SymbolRecord.h:527
DefRangeRegisterSym(uint32_t RecordOffset)
Definition SymbolRecord.h:520
DefRangeRegisterHeader Hdr
Definition SymbolRecord.h:526
uint32_t RecordOffset
Definition SymbolRecord.h:554
DefRangeSubfieldRegisterSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:542
LocalVariableAddrRange Range
Definition SymbolRecord.h:551
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:548
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:552
DefRangeSubfieldRegisterHeader Hdr
Definition SymbolRecord.h:550
DefRangeSubfieldRegisterSym(uint32_t RecordOffset)
Definition SymbolRecord.h:544
DefRangeSubfieldSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:494
uint32_t Program
Definition SymbolRecord.h:503
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:506
DefRangeSubfieldSym(uint32_t RecordOffset)
Definition SymbolRecord.h:495
uint32_t RecordOffset
Definition SymbolRecord.h:508
LocalVariableAddrRange Range
Definition SymbolRecord.h:505
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:499
uint16_t OffsetInParent
Definition SymbolRecord.h:504
DefRangeSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:473
std::vector< LocalVariableAddrGap > Gaps
Definition SymbolRecord.h:484
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:478
DefRangeSym(uint32_t RecordOffset)
Definition SymbolRecord.h:474
uint32_t RecordOffset
Definition SymbolRecord.h:486
LocalVariableAddrRange Range
Definition SymbolRecord.h:483
uint32_t Program
Definition SymbolRecord.h:482
uint32_t RecordOffset
Definition SymbolRecord.h:701
EnvBlockSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:694
std::vector< StringRef > Fields
Definition SymbolRecord.h:699
EnvBlockSym(uint32_t RecordOffset)
Definition SymbolRecord.h:695
ExportSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:707
uint32_t RecordOffset
Definition SymbolRecord.h:715
ExportSym(uint32_t RecordOffset)
Definition SymbolRecord.h:708
StringRef Name
Definition SymbolRecord.h:713
ExportFlags Flags
Definition SymbolRecord.h:712
uint16_t Ordinal
Definition SymbolRecord.h:711
StringRef Name
Definition SymbolRecord.h:729
uint32_t RecordOffset
Definition SymbolRecord.h:731
FileStaticSym(uint32_t RecordOffset)
Definition SymbolRecord.h:722
TypeIndex Index
Definition SymbolRecord.h:726
FileStaticSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:721
LocalSymFlags Flags
Definition SymbolRecord.h:728
uint32_t ModFilenameOffset
Definition SymbolRecord.h:727
uint32_t CodeOffset
Definition SymbolRecord.h:887
uint32_t RecordOffset
Definition SymbolRecord.h:892
uint8_t Flags
Definition SymbolRecord.h:890
FrameCookieSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:879
uint16_t Register
Definition SymbolRecord.h:888
FrameCookieKind CookieKind
Definition SymbolRecord.h:889
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:883
FrameCookieSym(uint32_t RecordOffset)
Definition SymbolRecord.h:880
uint32_t BytesOfCalleeSavedRegisters
Definition SymbolRecord.h:810
uint32_t TotalFrameBytes
Definition SymbolRecord.h:807
uint16_t SectionIdOfExceptionHandler
Definition SymbolRecord.h:812
uint32_t OffsetToPadding
Definition SymbolRecord.h:809
uint32_t PaddingFrameBytes
Definition SymbolRecord.h:808
FrameProcSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:802
FrameProcSym(uint32_t RecordOffset)
Definition SymbolRecord.h:803
RegisterId getLocalFramePtrReg(CPUType CPU) const
Extract the register this frame uses to refer to local variables.
Definition SymbolRecord.h:816
RegisterId getParamFramePtrReg(CPUType CPU) const
Extract the register this frame uses to refer to parameters.
Definition SymbolRecord.h:822
uint32_t OffsetOfExceptionHandler
Definition SymbolRecord.h:811
FrameProcedureOptions Flags
Definition SymbolRecord.h:813
uint32_t RecordOffset
Definition SymbolRecord.h:827
uint16_t CallInstructionSize
Definition SymbolRecord.h:868
uint32_t RecordOffset
Definition SymbolRecord.h:871
uint32_t CodeOffset
Definition SymbolRecord.h:866
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:862
uint16_t Segment
Definition SymbolRecord.h:867
HeapAllocationSiteSym(uint32_t RecordOffset)
Definition SymbolRecord.h:858
HeapAllocationSiteSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:857
TypeIndex Type
Definition SymbolRecord.h:869
HotPatchFuncSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:182
uint32_t RecordOffset
Definition SymbolRecord.h:192
HotPatchFuncSym(uint32_t RecordOffset)
Definition SymbolRecord.h:183
TypeIndex Function
Definition SymbolRecord.h:189
StringRef Name
Definition SymbolRecord.h:190
TypeIndex Inlinee
Definition SymbolRecord.h:379
uint32_t End
Definition SymbolRecord.h:378
std::vector< uint8_t > AnnotationData
Definition SymbolRecord.h:380
uint32_t RecordOffset
Definition SymbolRecord.h:382
uint32_t Parent
Definition SymbolRecord.h:377
InlineSiteSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:367
iterator_range< BinaryAnnotationIterator > annotations() const
Definition SymbolRecord.h:372
InlineSiteSym(uint32_t RecordOffset)
Definition SymbolRecord.h:368
JumpTableSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:150
uint16_t BaseSegment
Definition SymbolRecord.h:156
uint16_t TableSegment
Definition SymbolRecord.h:162
uint16_t BranchSegment
Definition SymbolRecord.h:161
uint32_t BaseOffset
Definition SymbolRecord.h:155
JumpTableEntrySize SwitchType
Definition SymbolRecord.h:158
uint32_t TableOffset
Definition SymbolRecord.h:160
JumpTableSym(uint32_t RecordOffset)
Definition SymbolRecord.h:151
uint32_t EntriesCount
Definition SymbolRecord.h:164
uint32_t RecordOffset
Definition SymbolRecord.h:166
uint32_t BranchOffset
Definition SymbolRecord.h:159
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:664
uint16_t Segment
Definition SymbolRecord.h:669
StringRef Name
Definition SymbolRecord.h:671
uint32_t CodeOffset
Definition SymbolRecord.h:668
LabelSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:660
LabelSym(uint32_t RecordOffset)
Definition SymbolRecord.h:661
uint32_t RecordOffset
Definition SymbolRecord.h:673
ProcSymFlags Flags
Definition SymbolRecord.h:670
StringRef Name
Definition SymbolRecord.h:450
TypeIndex Type
Definition SymbolRecord.h:448
LocalSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:444
LocalSymFlags Flags
Definition SymbolRecord.h:449
LocalSym(uint32_t RecordOffset)
Definition SymbolRecord.h:445
uint32_t RecordOffset
Definition SymbolRecord.h:452
ObjNameSym()
Definition SymbolRecord.h:679
ObjNameSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:680
uint32_t Signature
Definition SymbolRecord.h:685
uint32_t RecordOffset
Definition SymbolRecord.h:688
ObjNameSym(uint32_t RecordOffset)
Definition SymbolRecord.h:681
StringRef Name
Definition SymbolRecord.h:686
uint16_t Module
Definition SymbolRecord.h:434
ProcRefSym(uint32_t RecordOffset)
Definition SymbolRecord.h:428
uint32_t SumName
Definition SymbolRecord.h:432
ProcRefSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:427
uint32_t SymOffset
Definition SymbolRecord.h:433
StringRef Name
Definition SymbolRecord.h:435
uint32_t RecordOffset
Definition SymbolRecord.h:438
uint16_t modi() const
Definition SymbolRecord.h:437
uint32_t DbgStart
Definition SymbolRecord.h:58
ProcSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:47
uint32_t RecordOffset
Definition SymbolRecord.h:66
uint32_t End
Definition SymbolRecord.h:55
uint32_t Next
Definition SymbolRecord.h:56
TypeIndex FunctionType
Definition SymbolRecord.h:60
uint32_t CodeOffset
Definition SymbolRecord.h:61
StringRef Name
Definition SymbolRecord.h:64
uint16_t Segment
Definition SymbolRecord.h:62
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:50
uint32_t CodeSize
Definition SymbolRecord.h:57
ProcSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:46
uint32_t DbgEnd
Definition SymbolRecord.h:59
uint32_t Parent
Definition SymbolRecord.h:54
ProcSymFlags Flags
Definition SymbolRecord.h:63
PublicSym32(SymbolRecordKind Kind)
Definition SymbolRecord.h:396
PublicSymFlags Flags
Definition SymbolRecord.h:401
StringRef Name
Definition SymbolRecord.h:404
PublicSym32()
Definition SymbolRecord.h:395
uint16_t Segment
Definition SymbolRecord.h:403
PublicSym32(uint32_t RecordOffset)
Definition SymbolRecord.h:397
uint32_t Offset
Definition SymbolRecord.h:402
uint32_t RecordOffset
Definition SymbolRecord.h:406
RegRelativeSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:939
uint32_t RecordOffset
Definition SymbolRecord.h:949
TypeIndex Type
Definition SymbolRecord.h:945
StringRef Name
Definition SymbolRecord.h:947
uint32_t Offset
Definition SymbolRecord.h:944
RegRelativeSym(uint32_t RecordOffset)
Definition SymbolRecord.h:940
RegisterId Register
Definition SymbolRecord.h:946
uint32_t RecordOffset
Definition SymbolRecord.h:421
RegisterId Register
Definition SymbolRecord.h:418
StringRef Name
Definition SymbolRecord.h:419
RegisterSym(uint32_t RecordOffset)
Definition SymbolRecord.h:413
TypeIndex Index
Definition SymbolRecord.h:417
RegisterSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:412
uint32_t RecordOffset
Definition SymbolRecord.h:145
ScopeEndSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:142
ScopeEndSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:141
SectionSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:109
uint32_t Length
Definition SymbolRecord.h:116
uint32_t Rva
Definition SymbolRecord.h:115
uint16_t SectionNumber
Definition SymbolRecord.h:113
uint32_t Characteristics
Definition SymbolRecord.h:117
uint8_t Alignment
Definition SymbolRecord.h:114
uint32_t RecordOffset
Definition SymbolRecord.h:120
StringRef Name
Definition SymbolRecord.h:118
SectionSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:110
SymbolRecord(SymbolRecordKind Kind)
Definition SymbolRecord.h:32
SymbolRecordKind Kind
Definition SymbolRecord.h:37
SymbolRecordKind getKind() const
Definition SymbolRecord.h:35
ThreadLocalDataSym(uint32_t RecordOffset)
Definition SymbolRecord.h:994
uint32_t getRelocationOffset() const
Definition SymbolRecord.h:998
ThreadLocalDataSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:993
uint32_t DataOffset
Definition SymbolRecord.h:1003
TypeIndex Type
Definition SymbolRecord.h:1002
StringRef Name
Definition SymbolRecord.h:1005
uint16_t Segment
Definition SymbolRecord.h:1004
uint32_t RecordOffset
Definition SymbolRecord.h:1007
uint32_t RecordOffset
Definition SymbolRecord.h:86
uint32_t End
Definition SymbolRecord.h:77
uint16_t Segment
Definition SymbolRecord.h:80
StringRef Name
Definition SymbolRecord.h:83
ArrayRef< uint8_t > VariantData
Definition SymbolRecord.h:84
uint32_t Next
Definition SymbolRecord.h:78
uint32_t Parent
Definition SymbolRecord.h:76
uint16_t Length
Definition SymbolRecord.h:81
Thunk32Sym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:73
ThunkOrdinal Thunk
Definition SymbolRecord.h:82
uint32_t Offset
Definition SymbolRecord.h:79
Thunk32Sym(SymbolRecordKind Kind)
Definition SymbolRecord.h:72
uint16_t ThunkSection
Definition SymbolRecord.h:100
TrampolineSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition SymbolRecord.h:93
uint32_t TargetOffset
Definition SymbolRecord.h:99
uint32_t ThunkOffset
Definition SymbolRecord.h:98
TrampolineSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:92
TrampolineType Type
Definition SymbolRecord.h:96
uint32_t RecordOffset
Definition SymbolRecord.h:103
uint16_t TargetSection
Definition SymbolRecord.h:101
uint16_t Size
Definition SymbolRecord.h:97
UDTSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:898
TypeIndex Type
Definition SymbolRecord.h:902
StringRef Name
Definition SymbolRecord.h:903
uint32_t RecordOffset
Definition SymbolRecord.h:905
UDTSym(uint32_t RecordOffset)
Definition SymbolRecord.h:899
UsingNamespaceSym(uint32_t RecordOffset)
Definition SymbolRecord.h:1014
StringRef Name
Definition SymbolRecord.h:1018
UsingNamespaceSym(SymbolRecordKind Kind)
Definition SymbolRecord.h:1013
uint32_t RecordOffset
Definition SymbolRecord.h:1020
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
A range adaptor for a pair of iterators.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
@ ChangeCodeLengthAndCodeOffset
@ ChangeCodeOffsetAndLineOffset
ProcSymFlags
Corresponds to the CV_PROCFLAGS bitfield.
LocalSymFlags
Corresponds to CV_LVARFLAGS bitfield.
@ MaxDefRange
Definition SymbolRecord.h:466
CompileSym2Flags
Corresponds to COMPILESYM2::Flags bitfield.
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
CompileSym3Flags
Corresponds to COMPILESYM3::Flags bitfield.
SymbolRecordKind
Distinguishes individual records in the Symbols subsection of a .debug$S section.
ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration.
EncodedFramePtrReg
Two-bit value indicating which register is the designated frame pointer register.
LLVM_ABI RegisterId decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU)
PublicSymFlags
Corresponds to the CV_PUBSYMFLAGS bitfield.
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration in the Microsoft Debug Interface Access SDK,...
LLVM_ABI Expected< CVSymbol > readSymbolFromStream(BinaryStreamRef Stream, uint32_t Offset)
detail::packed_endian_specific_integral< uint32_t, llvm::endianness::little, unaligned > ulittle32_t
detail::packed_endian_specific_integral< uint16_t, llvm::endianness::little, unaligned > ulittle16_t
detail::packed_endian_specific_integral< int32_t, llvm::endianness::little, unaligned > little32_t
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
DWARFExpression::Operation Op
Definition SymbolRecord.h:207
BinaryAnnotationIterator & operator=(const BinaryAnnotationIterator Other)
Definition SymbolRecord.h:217
BinaryAnnotationIterator & operator++()
Definition SymbolRecord.h:222
BinaryAnnotationIterator(const BinaryAnnotationIterator &Other)
Definition SymbolRecord.h:210
const DecodedAnnotation & operator*()
Definition SymbolRecord.h:233
bool operator==(BinaryAnnotationIterator Other) const
Definition SymbolRecord.h:213
BinaryAnnotationIterator()=default
BinaryAnnotationIterator(ArrayRef< uint8_t > Annotations)
Definition SymbolRecord.h:209
Definition SymbolRecord.h:195
int32_t S1
Definition SymbolRecord.h:201
StringRef Name
Definition SymbolRecord.h:196
BinaryAnnotationsOpCode OpCode
Definition SymbolRecord.h:198
uint32_t U2
Definition SymbolRecord.h:200
uint32_t U1
Definition SymbolRecord.h:199
ArrayRef< uint8_t > Bytes
Definition SymbolRecord.h:197
Definition SymbolRecord.h:461
uint16_t Range
Definition SymbolRecord.h:463
uint16_t GapStartOffset
Definition SymbolRecord.h:462
Definition SymbolRecord.h:455
uint32_t OffsetStart
Definition SymbolRecord.h:456
uint16_t ISectStart
Definition SymbolRecord.h:457
uint16_t Range
Definition SymbolRecord.h:458