LLVM  14.0.0git
SymbolRecord.h
Go to the documentation of this file.
1 //===- SymbolRecord.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 #ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORD_H
10 #define LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORD_H
11 
12 #include "llvm/ADT/APSInt.h"
13 #include "llvm/ADT/ArrayRef.h"
14 #include "llvm/ADT/Optional.h"
15 #include "llvm/ADT/StringRef.h"
16 #include "llvm/ADT/iterator.h"
23 #include "llvm/Support/Endian.h"
24 #include <cstdint>
25 #include <vector>
26 
27 namespace llvm {
28 namespace codeview {
29 
30 class SymbolRecord {
31 protected:
33 
34 public:
35  SymbolRecordKind getKind() const { return Kind; }
36 
38 };
39 
40 // S_GPROC32, S_LPROC32, S_GPROC32_ID, S_LPROC32_ID, S_LPROC32_DPC or
41 // S_LPROC32_DPC_ID
42 class ProcSym : public SymbolRecord {
43  static constexpr uint32_t RelocationOffset = 32;
44 
45 public:
49 
51  return RecordOffset + RelocationOffset;
52  }
53 
65 
67 };
68 
69 // S_THUNK32
70 class Thunk32Sym : public SymbolRecord {
71 public:
75 
85 
87 };
88 
89 // S_TRAMPOLINE
90 class TrampolineSym : public SymbolRecord {
91 public:
95 
102 
104 };
105 
106 // S_SECTION
107 class SectionSym : public SymbolRecord {
108 public:
112 
114  uint8_t Alignment = 0;
119 
121 };
122 
123 // S_COFFGROUP
124 class CoffGroupSym : public SymbolRecord {
125 public:
129 
135 
137 };
138 
139 class ScopeEndSym : public SymbolRecord {
140 public:
144 
146 };
147 
148 class CallerSym : public SymbolRecord {
149 public:
153 
154  std::vector<TypeIndex> Indices;
155 
157 };
158 
165  int32_t S1 = 0;
166 };
167 
169  : public iterator_facade_base<BinaryAnnotationIterator,
170  std::forward_iterator_tag,
171  DecodedAnnotation> {
172  BinaryAnnotationIterator() = default;
175  : Data(Other.Data) {}
176 
178  return Data == Other.Data;
179  }
180 
182  Data = Other.Data;
183  return *this;
184  }
185 
187  if (!ParseCurrentAnnotation()) {
188  *this = BinaryAnnotationIterator();
189  return *this;
190  }
191  Data = Next;
192  Next = ArrayRef<uint8_t>();
193  Current.reset();
194  return *this;
195  }
196 
198  ParseCurrentAnnotation();
199  return Current.getValue();
200  }
201 
202 private:
203  static uint32_t GetCompressedAnnotation(ArrayRef<uint8_t> &Annotations) {
204  if (Annotations.empty())
205  return -1;
206 
207  uint8_t FirstByte = Annotations.front();
208  Annotations = Annotations.drop_front();
209 
210  if ((FirstByte & 0x80) == 0x00)
211  return FirstByte;
212 
213  if (Annotations.empty())
214  return -1;
215 
216  uint8_t SecondByte = Annotations.front();
217  Annotations = Annotations.drop_front();
218 
219  if ((FirstByte & 0xC0) == 0x80)
220  return ((FirstByte & 0x3F) << 8) | SecondByte;
221 
222  if (Annotations.empty())
223  return -1;
224 
225  uint8_t ThirdByte = Annotations.front();
226  Annotations = Annotations.drop_front();
227 
228  if (Annotations.empty())
229  return -1;
230 
231  uint8_t FourthByte = Annotations.front();
232  Annotations = Annotations.drop_front();
233 
234  if ((FirstByte & 0xE0) == 0xC0)
235  return ((FirstByte & 0x1F) << 24) | (SecondByte << 16) |
236  (ThirdByte << 8) | FourthByte;
237 
238  return -1;
239  }
240 
241  static int32_t DecodeSignedOperand(uint32_t Operand) {
242  if (Operand & 1)
243  return -(Operand >> 1);
244  return Operand >> 1;
245  }
246 
247  static int32_t DecodeSignedOperand(ArrayRef<uint8_t> &Annotations) {
248  return DecodeSignedOperand(GetCompressedAnnotation(Annotations));
249  }
250 
251  bool ParseCurrentAnnotation() {
252  if (Current.hasValue())
253  return true;
254 
255  Next = Data;
256  uint32_t Op = GetCompressedAnnotation(Next);
257  DecodedAnnotation Result;
258  Result.OpCode = static_cast<BinaryAnnotationsOpCode>(Op);
259  switch (Result.OpCode) {
261  Result.Name = "Invalid";
262  Next = ArrayRef<uint8_t>();
263  break;
265  Result.Name = "CodeOffset";
266  Result.U1 = GetCompressedAnnotation(Next);
267  break;
269  Result.Name = "ChangeCodeOffsetBase";
270  Result.U1 = GetCompressedAnnotation(Next);
271  break;
273  Result.Name = "ChangeCodeOffset";
274  Result.U1 = GetCompressedAnnotation(Next);
275  break;
277  Result.Name = "ChangeCodeLength";
278  Result.U1 = GetCompressedAnnotation(Next);
279  break;
281  Result.Name = "ChangeFile";
282  Result.U1 = GetCompressedAnnotation(Next);
283  break;
285  Result.Name = "ChangeLineEndDelta";
286  Result.U1 = GetCompressedAnnotation(Next);
287  break;
289  Result.Name = "ChangeRangeKind";
290  Result.U1 = GetCompressedAnnotation(Next);
291  break;
293  Result.Name = "ChangeColumnStart";
294  Result.U1 = GetCompressedAnnotation(Next);
295  break;
297  Result.Name = "ChangeColumnEnd";
298  Result.U1 = GetCompressedAnnotation(Next);
299  break;
301  Result.Name = "ChangeLineOffset";
302  Result.S1 = DecodeSignedOperand(Next);
303  break;
305  Result.Name = "ChangeColumnEndDelta";
306  Result.S1 = DecodeSignedOperand(Next);
307  break;
309  Result.Name = "ChangeCodeOffsetAndLineOffset";
310  uint32_t Annotation = GetCompressedAnnotation(Next);
311  Result.S1 = DecodeSignedOperand(Annotation >> 4);
312  Result.U1 = Annotation & 0xf;
313  break;
314  }
316  Result.Name = "ChangeCodeLengthAndCodeOffset";
317  Result.U1 = GetCompressedAnnotation(Next);
318  Result.U2 = GetCompressedAnnotation(Next);
319  break;
320  }
321  }
322  Result.Bytes = Data.take_front(Data.size() - Next.size());
323  Current = Result;
324  return true;
325  }
326 
327  Optional<DecodedAnnotation> Current;
328  ArrayRef<uint8_t> Data;
329  ArrayRef<uint8_t> Next;
330 };
331 
332 // S_INLINESITE
333 class InlineSiteSym : public SymbolRecord {
334 public:
339 
343  }
344 
348  std::vector<uint8_t> AnnotationData;
349 
351 };
352 
357  // char Name[];
358 };
359 
360 // S_PUB32
361 class PublicSym32 : public SymbolRecord {
362 public:
368 
373 
375 };
376 
377 // S_REGISTER
378 class RegisterSym : public SymbolRecord {
379 public:
384 
388 
390 };
391 
392 // S_PROCREF, S_LPROCREF
393 class ProcRefSym : public SymbolRecord {
394 public:
398  }
399 
404 
405  uint16_t modi() const { return Module - 1; }
407 };
408 
409 // S_LOCAL
410 class LocalSym : public SymbolRecord {
411 public:
415 
419 
421 };
422 
427 };
428 
432 };
433 
434 enum : uint16_t { MaxDefRange = 0xf000 };
435 
436 // S_DEFRANGE
437 class DefRangeSym : public SymbolRecord {
438  static constexpr uint32_t RelocationOffset = 8;
439 
440 public:
445 
447  return RecordOffset + RelocationOffset;
448  }
449 
452  std::vector<LocalVariableAddrGap> Gaps;
453 
455 };
456 
457 // S_DEFRANGE_SUBFIELD
459  static constexpr uint32_t RelocationOffset = 12;
460 
461 public:
466 
468  return RecordOffset + RelocationOffset;
469  }
470 
474  std::vector<LocalVariableAddrGap> Gaps;
475 
477 };
478 
482 };
483 
484 // S_DEFRANGE_REGISTER
486 public:
491 
493 
496  std::vector<LocalVariableAddrGap> Gaps;
497 
499 };
500 
505 };
506 
507 // S_DEFRANGE_SUBFIELD_REGISTER
509 public:
511  : SymbolRecord(Kind) {}
515 
517 
520  std::vector<LocalVariableAddrGap> Gaps;
521 
523 };
524 
527 };
528 
529 // S_DEFRANGE_FRAMEPOINTER_REL
531  static constexpr uint32_t RelocationOffset = 8;
532 
533 public:
535  : SymbolRecord(Kind) {}
539 
541  return RecordOffset + RelocationOffset;
542  }
543 
546  std::vector<LocalVariableAddrGap> Gaps;
547 
549 };
550 
555 };
556 
557 // S_DEFRANGE_REGISTER_REL
559 public:
564 
565  // The flags implement this notional bitfield:
566  // uint16_t IsSubfield : 1;
567  // uint16_t Padding : 3;
568  // uint16_t OffsetInParent : 12;
569  enum : uint16_t {
572  };
573 
574  bool hasSpilledUDTMember() const { return Hdr.Flags & IsSubfieldFlag; }
576 
578 
581  std::vector<LocalVariableAddrGap> Gaps;
582 
584 };
585 
586 // S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE
588 public:
590  : SymbolRecord(Kind) {}
594 
595  int32_t Offset = 0;
596 
598 };
599 
600 // S_BLOCK32
601 class BlockSym : public SymbolRecord {
602  static constexpr uint32_t RelocationOffset = 16;
603 
604 public:
608 
610  return RecordOffset + RelocationOffset;
611  }
612 
619 
621 };
622 
623 // S_LABEL32
624 class LabelSym : public SymbolRecord {
625  static constexpr uint32_t RelocationOffset = 4;
626 
627 public:
631 
633  return RecordOffset + RelocationOffset;
634  }
635 
640 
642 };
643 
644 // S_OBJNAME
645 class ObjNameSym : public SymbolRecord {
646 public:
651  }
652 
655 
657 };
658 
659 // S_ENVBLOCK
660 class EnvBlockSym : public SymbolRecord {
661 public:
666 
667  std::vector<StringRef> Fields;
668 
670 };
671 
672 // S_EXPORT
673 class ExportSym : public SymbolRecord {
674 public:
678 
682 
684 };
685 
686 // S_FILESTATIC
687 class FileStaticSym : public SymbolRecord {
688 public:
693 
698 
700 };
701 
702 // S_COMPILE2
703 class Compile2Sym : public SymbolRecord {
704 public:
709 
719  std::vector<StringRef> ExtraStrings;
720 
721  uint8_t getLanguage() const { return static_cast<uint32_t>(Flags) & 0xFF; }
722  uint32_t getFlags() const { return static_cast<uint32_t>(Flags) & ~0xFF; }
723 
725 };
726 
727 // S_COMPILE3
728 class Compile3Sym : public SymbolRecord {
729 public:
735 
747 
749  Flags = CompileSym3Flags((uint32_t(Flags) & 0xFFFFFF00) | uint32_t(Lang));
750  }
751 
753  return static_cast<SourceLanguage>(static_cast<uint32_t>(Flags) & 0xFF);
754  }
756  return static_cast<CompileSym3Flags>(static_cast<uint32_t>(Flags) & ~0xFF);
757  }
758 
759  bool hasOptimizations() const {
760  return CompileSym3Flags::None !=
762  }
763 
765 };
766 
767 // S_FRAMEPROC
768 class FrameProcSym : public SymbolRecord {
769 public:
774 
782 
783  /// Extract the register this frame uses to refer to local variables.
785  return decodeFramePtrReg(
786  EncodedFramePtrReg((uint32_t(Flags) >> 14U) & 0x3U), CPU);
787  }
788 
789  /// Extract the register this frame uses to refer to parameters.
791  return decodeFramePtrReg(
792  EncodedFramePtrReg((uint32_t(Flags) >> 16U) & 0x3U), CPU);
793  }
794 
796 
797 private:
798 };
799 
800 // S_CALLSITEINFO
802  static constexpr uint32_t RelocationOffset = 4;
803 
804 public:
808 
810  return RecordOffset + RelocationOffset;
811  }
812 
816 
818 };
819 
820 // S_HEAPALLOCSITE
822  static constexpr uint32_t RelocationOffset = 4;
823 
824 public:
829 
831  return RecordOffset + RelocationOffset;
832  }
833 
838 
840 };
841 
842 // S_FRAMECOOKIE
843 class FrameCookieSym : public SymbolRecord {
844  static constexpr uint32_t RelocationOffset = 4;
845 
846 public:
850 
852  return RecordOffset + RelocationOffset;
853  }
854 
858  uint8_t Flags = 0;
859 
861 };
862 
863 // S_UDT, S_COBOLUDT
864 class UDTSym : public SymbolRecord {
865 public:
869 
872 
874 };
875 
876 // S_BUILDINFO
877 class BuildInfoSym : public SymbolRecord {
878 public:
883 
885 
887 };
888 
889 // S_BPREL32
890 class BPRelativeSym : public SymbolRecord {
891 public:
896 
897  int32_t Offset = 0;
900 
902 };
903 
904 // S_REGREL32
905 class RegRelativeSym : public SymbolRecord {
906 public:
911 
916 
918 };
919 
920 // S_CONSTANT, S_MANCONSTANT
921 class ConstantSym : public SymbolRecord {
922 public:
927 
931 
933 };
934 
935 // S_LDATA32, S_GDATA32, S_LMANDATA, S_GMANDATA
936 class DataSym : public SymbolRecord {
937  static constexpr uint32_t RelocationOffset = 8;
938 
939 public:
943 
945  return RecordOffset + RelocationOffset;
946  }
947 
952 
954 };
955 
956 // S_LTHREAD32, S_GTHREAD32
958  static constexpr uint32_t RelocationOffset = 8;
959 
960 public:
965 
967  return RecordOffset + RelocationOffset;
968  }
969 
974 
976 };
977 
978 // S_UNAMESPACE
980 public:
985 
987 
989 };
990 
991 // S_ANNOTATION
992 class AnnotationSym : public SymbolRecord {
993 public:
998 
1001  std::vector<StringRef> Strings;
1002 
1004 };
1005 
1007  uint32_t Offset);
1008 
1009 } // end namespace codeview
1010 } // end namespace llvm
1011 
1012 #endif // LLVM_DEBUGINFO_CODEVIEW_SYMBOLRECORD_H
llvm::codeview::RegisterSym
Definition: SymbolRecord.h:378
llvm::codeview::CoffGroupSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:133
llvm::codeview::DataSym::Name
StringRef Name
Definition: SymbolRecord.h:951
llvm::codeview::TrampolineSym::Size
uint16_t Size
Definition: SymbolRecord.h:97
llvm::codeview::FrameCookieSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:860
llvm::codeview::ProcRefSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:406
llvm::codeview::DefRangeFramePointerRelSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:548
llvm::codeview::LabelSym::Name
StringRef Name
Definition: SymbolRecord.h:639
llvm::codeview::DefRangeRegisterRelSym::DefRangeRegisterRelSym
DefRangeRegisterRelSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:561
llvm::codeview::DecodedAnnotation::U2
uint32_t U2
Definition: SymbolRecord.h:164
llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffsetBase
@ ChangeCodeOffsetBase
llvm::codeview::DefRangeRegisterHeader::MayHaveNoName
ulittle16_t MayHaveNoName
Definition: SymbolRecord.h:481
llvm::codeview::DefRangeSubfieldRegisterSym::DefRangeSubfieldRegisterSym
DefRangeSubfieldRegisterSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:512
llvm::codeview::AnnotationSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:1000
llvm::codeview::FrameCookieSym::CookieKind
FrameCookieKind CookieKind
Definition: SymbolRecord.h:857
llvm::codeview::InlineSiteSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:350
llvm::codeview::TrampolineSym::TrampolineSym
TrampolineSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:93
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AllocatorList.h:23
llvm::codeview::Compile2Sym::VersionFrontendMajor
uint16_t VersionFrontendMajor
Definition: SymbolRecord.h:712
llvm::codeview::CoffGroupSym::CoffGroupSym
CoffGroupSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:126
llvm::codeview::EnvBlockSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:669
llvm::codeview::Thunk32Sym::VariantData
ArrayRef< uint8_t > VariantData
Definition: SymbolRecord.h:84
llvm::codeview::DefRangeSubfieldRegisterSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:522
llvm::make_range
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
Definition: iterator_range.h:53
Optional.h
llvm::codeview::HeapAllocationSiteSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:830
llvm::codeview::DefRangeSubfieldRegisterSym::DefRangeSubfieldRegisterSym
DefRangeSubfieldRegisterSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:510
llvm::codeview::BPRelativeSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:901
llvm::codeview::BlockSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:617
llvm::codeview::Thunk32Sym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:86
llvm::codeview::DefRangeSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:451
llvm::codeview::LocalVariableAddrRange::Range
uint16_t Range
Definition: SymbolRecord.h:426
llvm::codeview::ProcRefSym::Name
StringRef Name
Definition: SymbolRecord.h:403
RecordSerialization.h
llvm::codeview::BuildInfoSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:886
llvm::codeview::ExportSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:683
llvm::codeview::FrameProcSym::Flags
FrameProcedureOptions Flags
Definition: SymbolRecord.h:781
llvm::codeview::UsingNamespaceSym::UsingNamespaceSym
UsingNamespaceSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:981
llvm::codeview::SectionSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:120
llvm::codeview::FileStaticSym::FileStaticSym
FileStaticSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:690
llvm::codeview::SectionSym::Rva
uint32_t Rva
Definition: SymbolRecord.h:115
llvm::codeview::RegisterSym::RegisterSym
RegisterSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:380
StringRef.h
llvm::codeview::RegisterSym::Index
TypeIndex Index
Definition: SymbolRecord.h:385
llvm::codeview::ExportSym
Definition: SymbolRecord.h:673
llvm::codeview::SectionSym
Definition: SymbolRecord.h:107
llvm::codeview::ProcSymFlags
ProcSymFlags
Corresponds to the CV_PROCFLAGS bitfield.
Definition: CodeView.h:431
llvm::codeview::PublicSym32
Definition: SymbolRecord.h:361
llvm::codeview::BinaryAnnotationIterator
Definition: SymbolRecord.h:168
llvm::codeview::SectionSym::Name
StringRef Name
Definition: SymbolRecord.h:118
llvm::codeview::UsingNamespaceSym::UsingNamespaceSym
UsingNamespaceSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:982
llvm::codeview::ProcSym::Flags
ProcSymFlags Flags
Definition: SymbolRecord.h:63
llvm::codeview::TrampolineSym
Definition: SymbolRecord.h:90
llvm::codeview::DefRangeFramePointerRelHeader
Definition: SymbolRecord.h:525
llvm::codeview::RegRelativeSym::Type
TypeIndex Type
Definition: SymbolRecord.h:913
llvm::codeview::DefRangeSubfieldSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:474
llvm::codeview::DefRangeRegisterRelSym::IsSubfieldFlag
@ IsSubfieldFlag
Definition: SymbolRecord.h:570
llvm::codeview::CallerSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:156
llvm::codeview::DecodedAnnotation
Definition: SymbolRecord.h:159
llvm::codeview::DefRangeSubfieldRegisterSym::Hdr
DefRangeSubfieldRegisterHeader Hdr
Definition: SymbolRecord.h:518
llvm::codeview::DataSym
Definition: SymbolRecord.h:936
llvm::codeview::LabelSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:637
llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffset
@ ChangeCodeOffset
llvm::codeview::HeapAllocationSiteSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:834
llvm::codeview::ThreadLocalDataSym::Name
StringRef Name
Definition: SymbolRecord.h:973
llvm::codeview::BinaryAnnotationIterator::BinaryAnnotationIterator
BinaryAnnotationIterator()=default
llvm::codeview::LocalSym::Type
TypeIndex Type
Definition: SymbolRecord.h:416
llvm::codeview::ConstantSym::ConstantSym
ConstantSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:923
llvm::codeview::HeapAllocationSiteSym::Type
TypeIndex Type
Definition: SymbolRecord.h:837
llvm::codeview::ObjNameSym::ObjNameSym
ObjNameSym()
Definition: SymbolRecord.h:647
llvm::codeview::LabelSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:636
llvm::codeview::ExportSym::ExportSym
ExportSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:675
llvm::codeview::ProcSym::FunctionType
TypeIndex FunctionType
Definition: SymbolRecord.h:60
llvm::codeview::CoffGroupSym::CoffGroupSym
CoffGroupSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:127
llvm::codeview::BlockSym::Parent
uint32_t Parent
Definition: SymbolRecord.h:613
llvm::codeview::ProcSym::Parent
uint32_t Parent
Definition: SymbolRecord.h:54
llvm::codeview::DefRangeSubfieldRegisterHeader::MayHaveNoName
ulittle16_t MayHaveNoName
Definition: SymbolRecord.h:503
llvm::codeview::PublicSymFlags::None
@ None
llvm::codeview::DefRangeFramePointerRelFullScopeSym::Offset
int32_t Offset
Definition: SymbolRecord.h:595
llvm::codeview::DefRangeRegisterSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:492
llvm::codeview::Compile2Sym::VersionBackendBuild
uint16_t VersionBackendBuild
Definition: SymbolRecord.h:717
llvm::codeview::ObjNameSym
Definition: SymbolRecord.h:645
llvm::codeview::AnnotationSym::AnnotationSym
AnnotationSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:994
llvm::codeview::UsingNamespaceSym
Definition: SymbolRecord.h:979
llvm::codeview::UDTSym::UDTSym
UDTSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:866
llvm::codeview::ConstantSym::Value
APSInt Value
Definition: SymbolRecord.h:929
llvm::codeview::PublicSym32::Segment
uint16_t Segment
Definition: SymbolRecord.h:371
llvm::codeview::SectionSym::Length
uint32_t Length
Definition: SymbolRecord.h:116
llvm::codeview::CallerSym::CallerSym
CallerSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:151
llvm::codeview::PublicSym32::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:374
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:81
llvm::codeview::ProcSym::ProcSym
ProcSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:47
llvm::codeview::DefRangeRegisterSym::DefRangeRegisterSym
DefRangeRegisterSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:487
llvm::codeview::TrampolineSym::TrampolineSym
TrampolineSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:92
llvm::codeview::InlineSiteSym::Parent
uint32_t Parent
Definition: SymbolRecord.h:345
llvm::codeview::SymbolRecord::getKind
SymbolRecordKind getKind() const
Definition: SymbolRecord.h:35
llvm::codeview::Thunk32Sym::Thunk
ThunkOrdinal Thunk
Definition: SymbolRecord.h:82
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:42
llvm::codeview::FrameProcSym::FrameProcSym
FrameProcSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:770
llvm::codeview::AnnotationSym::AnnotationSym
AnnotationSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:995
llvm::codeview::BuildInfoSym
Definition: SymbolRecord.h:877
llvm::codeview::PublicSym32::Name
StringRef Name
Definition: SymbolRecord.h:372
llvm::codeview::ScopeEndSym::ScopeEndSym
ScopeEndSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:141
llvm::codeview::TrampolineSym::ThunkSection
uint16_t ThunkSection
Definition: SymbolRecord.h:100
llvm::codeview::Compile3Sym::hasOptimizations
bool hasOptimizations() const
Definition: SymbolRecord.h:759
llvm::codeview::LocalVariableAddrGap
Definition: SymbolRecord.h:429
llvm::codeview::DefRangeRegisterSym::Hdr
DefRangeRegisterHeader Hdr
Definition: SymbolRecord.h:494
llvm::codeview::ThreadLocalDataSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:966
llvm::codeview::BlockSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:620
llvm::codeview::UsingNamespaceSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:988
llvm::codeview::Compile2Sym::getLanguage
uint8_t getLanguage() const
Definition: SymbolRecord.h:721
llvm::Annotations
Annotations lets you mark points and ranges inside source code, for tests:
Definition: Annotations.h:46
llvm::codeview::CoffGroupSym
Definition: SymbolRecord.h:124
llvm::codeview::FrameProcSym::OffsetToPadding
uint32_t OffsetToPadding
Definition: SymbolRecord.h:777
llvm::codeview::BinaryAnnotationIterator::operator=
BinaryAnnotationIterator & operator=(const BinaryAnnotationIterator Other)
Definition: SymbolRecord.h:181
llvm::codeview::LabelSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:632
llvm::codeview::ObjNameSym::Name
StringRef Name
Definition: SymbolRecord.h:654
llvm::codeview::BinaryAnnotationsOpCode::ChangeLineOffset
@ ChangeLineOffset
llvm::codeview::LocalSymFlags::None
@ None
llvm::codeview::UDTSym::Name
StringRef Name
Definition: SymbolRecord.h:871
llvm::codeview::ScopeEndSym
Definition: SymbolRecord.h:139
llvm::codeview::HeapAllocationSiteSym::HeapAllocationSiteSym
HeapAllocationSiteSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:826
llvm::codeview::DecodedAnnotation::Name
StringRef Name
Definition: SymbolRecord.h:160
llvm::codeview::DecodedAnnotation::OpCode
BinaryAnnotationsOpCode OpCode
Definition: SymbolRecord.h:162
llvm::codeview::EncodedFramePtrReg
EncodedFramePtrReg
Two-bit value indicating which register is the designated frame pointer register.
Definition: CodeView.h:539
llvm::codeview::Compile3Sym::VersionFrontendMajor
uint16_t VersionFrontendMajor
Definition: SymbolRecord.h:738
llvm::codeview::ConstantSym::Name
StringRef Name
Definition: SymbolRecord.h:930
llvm::codeview::DefRangeSym::Program
uint32_t Program
Definition: SymbolRecord.h:450
llvm::codeview::LocalVariableAddrGap::GapStartOffset
uint16_t GapStartOffset
Definition: SymbolRecord.h:430
llvm::codeview::Compile2Sym::VersionFrontendMinor
uint16_t VersionFrontendMinor
Definition: SymbolRecord.h:713
llvm::codeview::CompileSym3Flags::PGO
@ PGO
llvm::codeview::BlockSym::CodeSize
uint32_t CodeSize
Definition: SymbolRecord.h:615
llvm::codeview::Compile3Sym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:764
llvm::codeview::ConstantSym
Definition: SymbolRecord.h:921
llvm::codeview::PublicSym32::Offset
uint32_t Offset
Definition: SymbolRecord.h:370
llvm::codeview::Compile3Sym::VersionBackendBuild
uint16_t VersionBackendBuild
Definition: SymbolRecord.h:744
llvm::codeview::DefRangeRegisterRelHeader::BasePointerOffset
little32_t BasePointerOffset
Definition: SymbolRecord.h:554
llvm::codeview::ProcSym::End
uint32_t End
Definition: SymbolRecord.h:55
llvm::codeview::BinaryAnnotationsOpCode::ChangeRangeKind
@ ChangeRangeKind
llvm::codeview::UDTSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:873
llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnEndDelta
@ ChangeColumnEndDelta
llvm::codeview::Compile2Sym::Machine
CPUType Machine
Definition: SymbolRecord.h:711
llvm::codeview::DefRangeSubfieldSym::DefRangeSubfieldSym
DefRangeSubfieldSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:462
llvm::codeview::Compile3Sym::VersionFrontendMinor
uint16_t VersionFrontendMinor
Definition: SymbolRecord.h:739
llvm::codeview::InlineSiteSym
Definition: SymbolRecord.h:333
llvm::codeview::CallSiteInfoSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:814
llvm::codeview::HeapAllocationSiteSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:835
llvm::codeview::RegRelativeSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:917
llvm::codeview::EnvBlockSym
Definition: SymbolRecord.h:660
llvm::codeview::ObjNameSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:656
llvm::codeview::LocalSym::Name
StringRef Name
Definition: SymbolRecord.h:418
llvm::codeview::Thunk32Sym::Next
uint32_t Next
Definition: SymbolRecord.h:78
llvm::codeview::EnvBlockSym::Fields
std::vector< StringRef > Fields
Definition: SymbolRecord.h:667
llvm::codeview::RegRelativeSym::Offset
uint32_t Offset
Definition: SymbolRecord.h:912
llvm::codeview::LocalSym::LocalSym
LocalSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:413
llvm::codeview::ConstantSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:932
llvm::codeview::Compile3Sym::Compile3Sym
Compile3Sym()
Definition: SymbolRecord.h:730
llvm::codeview::ThreadLocalDataSym
Definition: SymbolRecord.h:957
llvm::codeview::FileStaticSym::ModFilenameOffset
uint32_t ModFilenameOffset
Definition: SymbolRecord.h:695
llvm::codeview::CallSiteInfoSym::CallSiteInfoSym
CallSiteInfoSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:806
llvm::ms_demangle::QualifierMangleMode::Result
@ Result
llvm::codeview::LocalVariableAddrRange
Definition: SymbolRecord.h:423
llvm::codeview::FrameCookieSym::FrameCookieSym
FrameCookieSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:848
llvm::codeview::CallSiteInfoSym::Type
TypeIndex Type
Definition: SymbolRecord.h:815
llvm::codeview::Compile3Sym::getFlags
CompileSym3Flags getFlags() const
Definition: SymbolRecord.h:755
llvm::codeview::LocalVariableAddrRange::ISectStart
uint16_t ISectStart
Definition: SymbolRecord.h:425
llvm::codeview::LabelSym::LabelSym
LabelSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:629
llvm::codeview::UDTSym::UDTSym
UDTSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:867
llvm::codeview::Compile3Sym::Version
StringRef Version
Definition: SymbolRecord.h:746
llvm::codeview::PublicSym32::PublicSym32
PublicSym32(SymbolRecordKind Kind)
Definition: SymbolRecord.h:364
llvm::codeview::CompileSym3Flags::None
@ None
llvm::codeview::CallSiteInfoSym
Definition: SymbolRecord.h:801
llvm::codeview::Compile3Sym::VersionFrontendQFE
uint16_t VersionFrontendQFE
Definition: SymbolRecord.h:741
llvm::codeview::PublicSym32Header::Flags
ulittle32_t Flags
Definition: SymbolRecord.h:354
llvm::codeview::ScopeEndSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:145
llvm::codeview::BuildInfoSym::BuildInfoSym
BuildInfoSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:880
llvm::codeview::DecodedAnnotation::U1
uint32_t U1
Definition: SymbolRecord.h:163
llvm::codeview::BPRelativeSym::BPRelativeSym
BPRelativeSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:893
llvm::codeview::FileStaticSym::Index
TypeIndex Index
Definition: SymbolRecord.h:694
llvm::codeview::EnvBlockSym::EnvBlockSym
EnvBlockSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:663
llvm::codeview::DefRangeRegisterRelSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:581
llvm::APSInt
An arbitrary precision integer that knows its signedness.
Definition: APSInt.h:22
llvm::codeview::FrameCookieKind
FrameCookieKind
Definition: CodeView.h:509
llvm::codeview::BlockSym::End
uint32_t End
Definition: SymbolRecord.h:614
llvm::codeview::SymbolRecord
Definition: SymbolRecord.h:30
llvm::codeview::DefRangeSubfieldRegisterSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:519
llvm::codeview::Compile3Sym::Compile3Sym
Compile3Sym(uint32_t RecordOffset)
Definition: SymbolRecord.h:732
llvm::codeview::DefRangeSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:454
llvm::codeview::CallerSym
Definition: SymbolRecord.h:148
llvm::codeview::Thunk32Sym
Definition: SymbolRecord.h:70
llvm::codeview::FrameProcSym::OffsetOfExceptionHandler
uint32_t OffsetOfExceptionHandler
Definition: SymbolRecord.h:779
llvm::codeview::DefRangeRegisterHeader::Register
ulittle16_t Register
Definition: SymbolRecord.h:480
llvm::codeview::Thunk32Sym::Name
StringRef Name
Definition: SymbolRecord.h:83
llvm::codeview::BinaryAnnotationsOpCode::CodeOffset
@ CodeOffset
llvm::codeview::DefRangeRegisterRelSym::DefRangeRegisterRelSym
DefRangeRegisterRelSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:560
llvm::codeview::HeapAllocationSiteSym::HeapAllocationSiteSym
HeapAllocationSiteSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:825
llvm::codeview::DefRangeFramePointerRelSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:545
CodeView.h
llvm::codeview::LabelSym::Flags
ProcSymFlags Flags
Definition: SymbolRecord.h:638
llvm::codeview::CoffGroupSym::Size
uint32_t Size
Definition: SymbolRecord.h:130
llvm::codeview::ThreadLocalDataSym::ThreadLocalDataSym
ThreadLocalDataSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:961
llvm::codeview::LocalSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:420
llvm::codeview::InlineSiteSym::End
uint32_t End
Definition: SymbolRecord.h:346
llvm::codeview::Compile3Sym::Compile3Sym
Compile3Sym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:731
llvm::codeview::BinaryAnnotationsOpCode::Invalid
@ Invalid
llvm::codeview::DataSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:944
llvm::codeview::readSymbolFromStream
Expected< CVSymbol > readSymbolFromStream(BinaryStreamRef Stream, uint32_t Offset)
Definition: RecordSerialization.cpp:151
llvm::codeview::Compile2Sym::Compile2Sym
Compile2Sym(uint32_t RecordOffset)
Definition: SymbolRecord.h:706
llvm::codeview::LocalSym
Definition: SymbolRecord.h:410
llvm::codeview::FrameProcedureOptions
FrameProcedureOptions
Definition: CodeView.h:221
llvm::support::ulittle32_t
detail::packed_endian_specific_integral< uint32_t, little, unaligned > ulittle32_t
Definition: Endian.h:272
llvm::codeview::EnvBlockSym::EnvBlockSym
EnvBlockSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:662
llvm::codeview::TrampolineSym::Type
TrampolineType Type
Definition: SymbolRecord.h:96
llvm::codeview::ThreadLocalDataSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:972
llvm::codeview::UsingNamespaceSym::Name
StringRef Name
Definition: SymbolRecord.h:986
llvm::codeview::ProcSym
Definition: SymbolRecord.h:42
llvm::codeview::DefRangeSubfieldSym::DefRangeSubfieldSym
DefRangeSubfieldSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:463
llvm::codeview::FrameProcSym::BytesOfCalleeSavedRegisters
uint32_t BytesOfCalleeSavedRegisters
Definition: SymbolRecord.h:778
llvm::codeview::SectionSym::SectionSym
SectionSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:109
llvm::codeview::Compile2Sym::getFlags
uint32_t getFlags() const
Definition: SymbolRecord.h:722
llvm::codeview::DefRangeSubfieldRegisterHeader
Definition: SymbolRecord.h:501
llvm::codeview::DefRangeSubfieldSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:476
llvm::codeview::PublicSym32::PublicSym32
PublicSym32(uint32_t RecordOffset)
Definition: SymbolRecord.h:365
llvm::codeview::DefRangeSubfieldRegisterHeader::Register
ulittle16_t Register
Definition: SymbolRecord.h:502
llvm::codeview::DefRangeSubfieldRegisterSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:520
llvm::codeview::AnnotationSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:1003
llvm::codeview::TrampolineType
TrampolineType
Definition: CodeView.h:561
llvm::support::ulittle16_t
detail::packed_endian_specific_integral< uint16_t, little, unaligned > ulittle16_t
Definition: Endian.h:270
llvm::codeview::LabelSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:641
llvm::codeview::ProcSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:66
llvm::codeview::ProcRefSym::SymOffset
uint32_t SymOffset
Definition: SymbolRecord.h:401
llvm::codeview::Compile3Sym::getLanguage
SourceLanguage getLanguage() const
Definition: SymbolRecord.h:752
llvm::codeview::DefRangeRegisterSym
Definition: SymbolRecord.h:485
llvm::codeview::RegisterSym::Name
StringRef Name
Definition: SymbolRecord.h:387
llvm::codeview::ObjNameSym::ObjNameSym
ObjNameSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:649
llvm::codeview::Compile2Sym::Version
StringRef Version
Definition: SymbolRecord.h:718
llvm::codeview::ProcSym::Name
StringRef Name
Definition: SymbolRecord.h:64
llvm::codeview::DefRangeFramePointerRelFullScopeSym::DefRangeFramePointerRelFullScopeSym
DefRangeFramePointerRelFullScopeSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:591
llvm::codeview::PublicSymFlags
PublicSymFlags
Corresponds to the CV_PUBSYMFLAGS bitfield.
Definition: CodeView.h:421
llvm::codeview::Thunk32Sym::Segment
uint16_t Segment
Definition: SymbolRecord.h:80
llvm::codeview::ExportSym::Flags
ExportFlags Flags
Definition: SymbolRecord.h:680
llvm::codeview::InlineSiteSym::Inlinee
TypeIndex Inlinee
Definition: SymbolRecord.h:347
llvm::codeview::Compile3Sym::VersionFrontendBuild
uint16_t VersionFrontendBuild
Definition: SymbolRecord.h:740
llvm::codeview::DecodedAnnotation::S1
int32_t S1
Definition: SymbolRecord.h:165
llvm::codeview::ProcSym::DbgEnd
uint32_t DbgEnd
Definition: SymbolRecord.h:59
llvm::codeview::BinaryAnnotationIterator::operator*
const DecodedAnnotation & operator*()
Definition: SymbolRecord.h:197
llvm::codeview::ProcSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:62
llvm::codeview::FrameProcSym::FrameProcSym
FrameProcSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:771
iterator.h
llvm::codeview::TrampolineSym::ThunkOffset
uint32_t ThunkOffset
Definition: SymbolRecord.h:98
llvm::iterator_facade_base
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
Definition: iterator.h:80
llvm::codeview::ScopeEndSym::ScopeEndSym
ScopeEndSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:142
llvm::codeview::HeapAllocationSiteSym::CallInstructionSize
uint16_t CallInstructionSize
Definition: SymbolRecord.h:836
llvm::codeview::DefRangeFramePointerRelFullScopeSym
Definition: SymbolRecord.h:587
llvm::codeview::DefRangeRegisterRelSym::Hdr
DefRangeRegisterRelHeader Hdr
Definition: SymbolRecord.h:579
llvm::codeview::LocalVariableAddrRange::OffsetStart
uint32_t OffsetStart
Definition: SymbolRecord.h:424
llvm::codeview::DefRangeSubfieldRegisterSym
Definition: SymbolRecord.h:508
llvm::codeview::DataSym::Segment
uint16_t Segment
Definition: SymbolRecord.h:950
llvm::codeview::DefRangeRegisterHeader
Definition: SymbolRecord.h:479
llvm::codeview::Compile3Sym::Machine
CPUType Machine
Definition: SymbolRecord.h:737
ArrayRef.h
BinaryStreamArray.h
llvm::codeview::BPRelativeSym::Offset
int32_t Offset
Definition: SymbolRecord.h:897
llvm::codeview::DataSym::Type
TypeIndex Type
Definition: SymbolRecord.h:948
llvm::codeview::CallSiteInfoSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:809
llvm::codeview::Compile3Sym::VersionBackendMinor
uint16_t VersionBackendMinor
Definition: SymbolRecord.h:743
llvm::codeview::CallSiteInfoSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:817
llvm::codeview::FileStaticSym::Name
StringRef Name
Definition: SymbolRecord.h:697
llvm::codeview::TrampolineSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:103
llvm::codeview::DefRangeRegisterRelSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:580
llvm::codeview::ThreadLocalDataSym::Type
TypeIndex Type
Definition: SymbolRecord.h:970
llvm::codeview::FileStaticSym
Definition: SymbolRecord.h:687
llvm::codeview::ThreadLocalDataSym::DataOffset
uint32_t DataOffset
Definition: SymbolRecord.h:971
llvm::codeview::BuildInfoSym::BuildInfoSym
BuildInfoSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:879
llvm::codeview::FrameCookieSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:855
llvm::codeview::ThunkOrdinal::Standard
@ Standard
llvm::codeview::AnnotationSym
Definition: SymbolRecord.h:992
iterator_range.h
llvm::codeview::ThreadLocalDataSym::ThreadLocalDataSym
ThreadLocalDataSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:962
llvm::codeview::RegisterSym::RegisterSym
RegisterSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:381
APSInt.h
llvm::codeview::RegRelativeSym::RegRelativeSym
RegRelativeSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:907
llvm::codeview::RegisterId
RegisterId
Definition: CodeView.h:517
llvm::codeview::TrampolineSym::TargetSection
uint16_t TargetSection
Definition: SymbolRecord.h:101
llvm::codeview::DataSym::DataOffset
uint32_t DataOffset
Definition: SymbolRecord.h:949
llvm::codeview::SectionSym::SectionSym
SectionSym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:110
llvm::Module
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:67
llvm::codeview::SectionSym::Alignment
uint8_t Alignment
Definition: SymbolRecord.h:114
llvm::codeview::DefRangeSubfieldSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:467
llvm::codeview::DefRangeFramePointerRelFullScopeSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:597
llvm::codeview::BlockSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:609
llvm::codeview::BlockSym::Name
StringRef Name
Definition: SymbolRecord.h:618
llvm::codeview::CallerSym::CallerSym
CallerSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:150
llvm::codeview::BinaryAnnotationIterator::operator==
bool operator==(BinaryAnnotationIterator Other) const
Definition: SymbolRecord.h:177
llvm::codeview::DecodedAnnotation::Bytes
ArrayRef< uint8_t > Bytes
Definition: SymbolRecord.h:161
llvm::codeview::DefRangeRegisterRelHeader
Definition: SymbolRecord.h:551
llvm::codeview::FrameCookieSym
Definition: SymbolRecord.h:843
llvm::codeview::FrameProcSym
Definition: SymbolRecord.h:768
llvm::codeview::Thunk32Sym::End
uint32_t End
Definition: SymbolRecord.h:77
llvm::codeview::SourceLanguage
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....
Definition: CodeView.h:146
llvm::codeview::CompileSym2Flags::None
@ None
llvm::codeview::AnnotationSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:999
llvm::ArrayRef< uint8_t >
llvm::codeview::CallerSym::Indices
std::vector< TypeIndex > Indices
Definition: SymbolRecord.h:154
llvm::codeview::DefRangeSym::DefRangeSym
DefRangeSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:442
llvm::codeview::PublicSym32Header::Segment
ulittle16_t Segment
Definition: SymbolRecord.h:356
llvm::codeview::BinaryAnnotationsOpCode::ChangeLineEndDelta
@ ChangeLineEndDelta
llvm::codeview::Compile3Sym::VersionBackendMajor
uint16_t VersionBackendMajor
Definition: SymbolRecord.h:742
llvm::codeview::ObjNameSym::Signature
uint32_t Signature
Definition: SymbolRecord.h:653
llvm::codeview::Thunk32Sym::Thunk32Sym
Thunk32Sym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:72
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:57
llvm::codeview::RegRelativeSym::RegRelativeSym
RegRelativeSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:908
llvm::codeview::Compile2Sym::ExtraStrings
std::vector< StringRef > ExtraStrings
Definition: SymbolRecord.h:719
llvm::codeview::Compile3Sym::Flags
CompileSym3Flags Flags
Definition: SymbolRecord.h:736
llvm::codeview::DefRangeRegisterSym::DefRangeRegisterSym
DefRangeRegisterSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:488
llvm::codeview::SectionSym::SectionNumber
uint16_t SectionNumber
Definition: SymbolRecord.h:113
llvm::codeview::LabelSym
Definition: SymbolRecord.h:624
llvm::codeview::DefRangeRegisterSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:498
llvm::codeview::DefRangeRegisterSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:496
llvm::codeview::HeapAllocationSiteSym
Definition: SymbolRecord.h:821
llvm::codeview::BlockSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:616
llvm::codeview::SectionSym::Characteristics
uint32_t Characteristics
Definition: SymbolRecord.h:117
llvm::codeview::DataSym::DataSym
DataSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:941
llvm::codeview::Compile2Sym::VersionBackendMinor
uint16_t VersionBackendMinor
Definition: SymbolRecord.h:716
llvm::codeview::PublicSym32::PublicSym32
PublicSym32()
Definition: SymbolRecord.h:363
uint32_t
llvm::codeview::DefRangeFramePointerRelSym
Definition: SymbolRecord.h:530
llvm::codeview::BPRelativeSym::Name
StringRef Name
Definition: SymbolRecord.h:899
llvm::codeview::ProcRefSym::SumName
uint32_t SumName
Definition: SymbolRecord.h:400
llvm::codeview::FrameCookieSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:851
llvm::codeview::DefRangeSubfieldRegisterSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:516
llvm::codeview::DefRangeRegisterRelSym
Definition: SymbolRecord.h:558
llvm::codeview::FrameProcSym::PaddingFrameBytes
uint32_t PaddingFrameBytes
Definition: SymbolRecord.h:776
llvm::codeview::FileStaticSym::Flags
LocalSymFlags Flags
Definition: SymbolRecord.h:696
llvm::codeview::DefRangeSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:452
llvm::codeview::Compile2Sym::Flags
CompileSym2Flags Flags
Definition: SymbolRecord.h:710
llvm::codeview::FrameProcSym::getParamFramePtrReg
RegisterId getParamFramePtrReg(CPUType CPU) const
Extract the register this frame uses to refer to parameters.
Definition: SymbolRecord.h:790
llvm::codeview::CoffGroupSym::Characteristics
uint32_t Characteristics
Definition: SymbolRecord.h:131
llvm::codeview::RegisterSym::Register
RegisterId Register
Definition: SymbolRecord.h:386
llvm::codeview::DefRangeSubfieldSym::Program
uint32_t Program
Definition: SymbolRecord.h:471
llvm::codeview::PublicSym32Header::Offset
ulittle32_t Offset
Definition: SymbolRecord.h:355
llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeLengthAndCodeOffset
@ ChangeCodeLengthAndCodeOffset
llvm::codeview::MaxDefRange
@ MaxDefRange
Definition: SymbolRecord.h:434
llvm::codeview::ConstantSym::ConstantSym
ConstantSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:924
llvm::codeview::LocalSym::LocalSym
LocalSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:412
llvm::codeview::InlineSiteSym::AnnotationData
std::vector< uint8_t > AnnotationData
Definition: SymbolRecord.h:348
llvm::codeview::ConstantSym::Type
TypeIndex Type
Definition: SymbolRecord.h:928
llvm::codeview::CompileSym2Flags
CompileSym2Flags
Corresponds to COMPILESYM2::Flags bitfield.
Definition: CodeView.h:445
llvm::codeview::BinaryAnnotationIterator::operator++
BinaryAnnotationIterator & operator++()
Definition: SymbolRecord.h:186
llvm::Register
Wrapper class representing virtual and physical registers.
Definition: Register.h:19
llvm::codeview::BinaryAnnotationIterator::BinaryAnnotationIterator
BinaryAnnotationIterator(const BinaryAnnotationIterator &Other)
Definition: SymbolRecord.h:174
llvm::codeview::CallSiteInfoSym::CallSiteInfoSym
CallSiteInfoSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:805
llvm::codeview::DefRangeSubfieldSym
Definition: SymbolRecord.h:458
llvm::codeview::BinaryAnnotationIterator::BinaryAnnotationIterator
BinaryAnnotationIterator(ArrayRef< uint8_t > Annotations)
Definition: SymbolRecord.h:173
llvm::codeview::FileStaticSym::FileStaticSym
FileStaticSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:689
llvm::pdb::PDB_SymType::Annotation
@ Annotation
llvm::codeview::UDTSym::Type
TypeIndex Type
Definition: SymbolRecord.h:870
llvm::codeview::DefRangeSym::DefRangeSym
DefRangeSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:441
llvm::codeview::ProcSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:61
llvm::codeview::BinaryAnnotationsOpCode::ChangeFile
@ ChangeFile
llvm::codeview::ProcSymFlags::None
@ None
llvm::codeview::ProcRefSym::ProcRefSym
ProcRefSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:395
llvm::codeview::CoffGroupSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:136
llvm::codeview::ObjNameSym::ObjNameSym
ObjNameSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:648
llvm::codeview::AnnotationSym::Strings
std::vector< StringRef > Strings
Definition: SymbolRecord.h:1001
llvm::codeview::CoffGroupSym::Name
StringRef Name
Definition: SymbolRecord.h:134
llvm::codeview::DefRangeFramePointerRelSym::DefRangeFramePointerRelSym
DefRangeFramePointerRelSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:534
uint16_t
llvm::codeview::BinaryAnnotationsOpCode
BinaryAnnotationsOpCode
Definition: CodeView.h:491
llvm::codeview::DefRangeRegisterRelSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:583
llvm::codeview::DefRangeRegisterRelSym::OffsetInParentShift
@ OffsetInParentShift
Definition: SymbolRecord.h:571
llvm::codeview::DefRangeRegisterRelSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:577
llvm::AMDGPU::SendMsg::Op
Op
Definition: SIDefines.h:325
llvm::codeview::Compile3Sym
Definition: SymbolRecord.h:728
llvm::codeview::ProcRefSym::ProcRefSym
ProcRefSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:396
llvm::ArrayRef::take_front
ArrayRef< T > take_front(size_t N=1) const
Return a copy of *this with only the first N elements.
Definition: ArrayRef.h:226
llvm::codeview::FrameProcSym::getLocalFramePtrReg
RegisterId getLocalFramePtrReg(CPUType CPU) const
Extract the register this frame uses to refer to local variables.
Definition: SymbolRecord.h:784
llvm::support::little32_t
detail::packed_endian_specific_integral< int32_t, little, unaligned > little32_t
Definition: Endian.h:279
llvm::codeview::DefRangeRegisterRelHeader::Flags
ulittle16_t Flags
Definition: SymbolRecord.h:553
CVRecord.h
llvm::codeview::Thunk32Sym::Thunk32Sym
Thunk32Sym(SymbolRecordKind Kind, uint32_t RecordOffset)
Definition: SymbolRecord.h:73
llvm::codeview::ProcSym::DbgStart
uint32_t DbgStart
Definition: SymbolRecord.h:58
llvm::codeview::CPUType
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
Definition: CodeView.h:78
llvm::codeview::DefRangeFramePointerRelSym::DefRangeFramePointerRelSym
DefRangeFramePointerRelSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:536
llvm::codeview::ExportFlags::None
@ None
llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnEnd
@ ChangeColumnEnd
llvm::codeview::RegRelativeSym::Name
StringRef Name
Definition: SymbolRecord.h:915
llvm::codeview::Compile3Sym::VersionBackendQFE
uint16_t VersionBackendQFE
Definition: SymbolRecord.h:745
llvm::codeview::CoffGroupSym::Offset
uint32_t Offset
Definition: SymbolRecord.h:132
llvm::codeview::LabelSym::LabelSym
LabelSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:628
llvm::codeview::DefRangeRegisterRelSym::offsetInParent
uint16_t offsetInParent() const
Definition: SymbolRecord.h:575
llvm::codeview::BPRelativeSym::Type
TypeIndex Type
Definition: SymbolRecord.h:898
TypeIndex.h
llvm::codeview::SymbolRecordKind
SymbolRecordKind
Distinguishes individual records in the Symbols subsection of a .debug$S section.
Definition: CodeView.h:40
llvm::codeview::BinaryAnnotationsOpCode::ChangeColumnStart
@ ChangeColumnStart
llvm::codeview::InlineSiteSym::InlineSiteSym
InlineSiteSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:336
llvm::codeview::PublicSym32Header
Definition: SymbolRecord.h:353
llvm::codeview::RegRelativeSym::Register
RegisterId Register
Definition: SymbolRecord.h:914
llvm::codeview::BPRelativeSym
Definition: SymbolRecord.h:890
llvm::codeview::SymbolRecord::SymbolRecord
SymbolRecord(SymbolRecordKind Kind)
Definition: SymbolRecord.h:32
llvm::codeview::BlockSym::BlockSym
BlockSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:605
llvm::codeview::BlockSym
Definition: SymbolRecord.h:601
llvm::codeview::DefRangeFramePointerRelSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition: SymbolRecord.h:546
llvm::codeview::DefRangeSubfieldRegisterHeader::OffsetInParent
ulittle32_t OffsetInParent
Definition: SymbolRecord.h:504
llvm::codeview::DefRangeFramePointerRelSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:540
llvm::codeview::TrampolineSym::TargetOffset
uint32_t TargetOffset
Definition: SymbolRecord.h:99
llvm::codeview::ThunkOrdinal
ThunkOrdinal
These values correspond to the THUNK_ORDINAL enumeration.
Definition: CodeView.h:551
llvm::codeview::LocalSymFlags
LocalSymFlags
Corresponds to CV_LVARFLAGS bitfield.
Definition: CodeView.h:404
llvm::codeview::Compile2Sym::Compile2Sym
Compile2Sym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:705
llvm::codeview::RegisterSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:389
llvm::codeview::FileStaticSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:699
llvm::codeview::RegRelativeSym
Definition: SymbolRecord.h:905
llvm::codeview::FrameProcSym::SectionIdOfExceptionHandler
uint16_t SectionIdOfExceptionHandler
Definition: SymbolRecord.h:780
llvm::codeview::CompileSym3Flags::LTCG
@ LTCG
llvm::codeview::FrameProcSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:795
llvm::codeview::DefRangeRegisterRelSym::hasSpilledUDTMember
bool hasSpilledUDTMember() const
Definition: SymbolRecord.h:574
llvm::codeview::ThreadLocalDataSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:975
llvm::codeview::Compile2Sym::VersionFrontendBuild
uint16_t VersionFrontendBuild
Definition: SymbolRecord.h:714
llvm::codeview::DefRangeFramePointerRelSym::Hdr
DefRangeFramePointerRelHeader Hdr
Definition: SymbolRecord.h:544
llvm::ArrayRef::size
size_t size() const
size - Get the array size.
Definition: ArrayRef.h:163
llvm::codeview::Compile2Sym::VersionBackendMajor
uint16_t VersionBackendMajor
Definition: SymbolRecord.h:715
llvm::iterator_range
A range adaptor for a pair of iterators.
Definition: iterator_range.h:30
llvm::codeview::DefRangeSym
Definition: SymbolRecord.h:437
llvm::codeview::ProcSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:50
llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeOffsetAndLineOffset
@ ChangeCodeOffsetAndLineOffset
llvm::codeview::Compile3Sym::setLanguage
void setLanguage(SourceLanguage Lang)
Definition: SymbolRecord.h:748
llvm::codeview::Compile2Sym
Definition: SymbolRecord.h:703
llvm::codeview::ProcRefSym::modi
uint16_t modi() const
Definition: SymbolRecord.h:405
llvm::codeview::DataSym::DataSym
DataSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:940
llvm::codeview::TypeIndex
A 32-bit type reference.
Definition: TypeIndex.h:96
llvm::codeview::Thunk32Sym::Offset
uint32_t Offset
Definition: SymbolRecord.h:79
llvm::codeview::ProcSym::ProcSym
ProcSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:46
llvm::codeview::ProcSym::Next
uint32_t Next
Definition: SymbolRecord.h:56
llvm::codeview::DefRangeSym::getRelocationOffset
uint32_t getRelocationOffset() const
Definition: SymbolRecord.h:446
llvm::codeview::CompileSym3Flags
CompileSym3Flags
Corresponds to COMPILESYM3::Flags bitfield.
Definition: CodeView.h:461
llvm::codeview::BlockSym::BlockSym
BlockSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:606
llvm::codeview::DefRangeRegisterSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:495
llvm::codeview::ExportSym::Ordinal
uint16_t Ordinal
Definition: SymbolRecord.h:679
llvm::codeview::HeapAllocationSiteSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:839
llvm::codeview::ExportFlags
ExportFlags
Definition: CodeView.h:479
llvm::codeview::ProcRefSym
Definition: SymbolRecord.h:393
llvm::codeview::PublicSym32::Flags
PublicSymFlags Flags
Definition: SymbolRecord.h:369
llvm::codeview::FrameProcSym::TotalFrameBytes
uint32_t TotalFrameBytes
Definition: SymbolRecord.h:775
llvm::codeview::CallSiteInfoSym::CodeOffset
uint32_t CodeOffset
Definition: SymbolRecord.h:813
llvm::codeview::LocalSym::Flags
LocalSymFlags Flags
Definition: SymbolRecord.h:417
llvm::codeview::ExportSym::ExportSym
ExportSym(uint32_t RecordOffset)
Definition: SymbolRecord.h:676
Endian.h
llvm::codeview::SymbolRecord::Kind
SymbolRecordKind Kind
Definition: SymbolRecord.h:37
llvm::codeview::BuildInfoSym::BuildId
TypeIndex BuildId
Definition: SymbolRecord.h:884
llvm::codeview::DefRangeRegisterRelHeader::Register
ulittle16_t Register
Definition: SymbolRecord.h:552
llvm::codeview::InlineSiteSym::InlineSiteSym
InlineSiteSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:335
llvm::codeview::FrameProcedureOptions::None
@ None
llvm::codeview::DefRangeFramePointerRelHeader::Offset
little32_t Offset
Definition: SymbolRecord.h:526
llvm::codeview::DefRangeSubfieldSym::Range
LocalVariableAddrRange Range
Definition: SymbolRecord.h:473
llvm::codeview::ProcSym::CodeSize
uint32_t CodeSize
Definition: SymbolRecord.h:57
llvm::codeview::BinaryAnnotationsOpCode::ChangeCodeLength
@ ChangeCodeLength
llvm::codeview::LocalVariableAddrGap::Range
uint16_t Range
Definition: SymbolRecord.h:431
llvm::codeview::InlineSiteSym::annotations
iterator_range< BinaryAnnotationIterator > annotations() const
Definition: SymbolRecord.h:340
llvm::codeview::DataSym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:953
llvm::codeview::BPRelativeSym::BPRelativeSym
BPRelativeSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:892
llvm::codeview::Thunk32Sym::Parent
uint32_t Parent
Definition: SymbolRecord.h:76
llvm::codeview::UDTSym
Definition: SymbolRecord.h:864
llvm::codeview::FrameCookieSym::Flags
uint8_t Flags
Definition: SymbolRecord.h:858
llvm::codeview::ExportSym::Name
StringRef Name
Definition: SymbolRecord.h:681
llvm::BinaryStreamRef
BinaryStreamRef is to BinaryStream what ArrayRef is to an Array.
Definition: BinaryStreamRef.h:156
Other
Optional< std::vector< StOtherPiece > > Other
Definition: ELFYAML.cpp:1195
llvm::codeview::decodeFramePtrReg
RegisterId decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU)
Definition: SymbolRecordMapping.cpp:486
llvm::codeview::Compile2Sym::RecordOffset
uint32_t RecordOffset
Definition: SymbolRecord.h:724
llvm::codeview::Thunk32Sym::Length
uint16_t Length
Definition: SymbolRecord.h:81
llvm::codeview::DefRangeFramePointerRelFullScopeSym::DefRangeFramePointerRelFullScopeSym
DefRangeFramePointerRelFullScopeSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:589
llvm::codeview::DefRangeSubfieldSym::OffsetInParent
uint16_t OffsetInParent
Definition: SymbolRecord.h:472
llvm::codeview::FrameCookieSym::FrameCookieSym
FrameCookieSym(SymbolRecordKind Kind)
Definition: SymbolRecord.h:847