Movatterモバイル変換


[0]ホーム

URL:


LLVM 20.0.0git
SymbolRecordMapping.cpp
Go to the documentation of this file.
1//===- SymbolRecordMapping.cpp -----------------------------------*- 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#include "llvm/DebugInfo/CodeView/SymbolRecordMapping.h"
10
11using namespacellvm;
12using namespacellvm::codeview;
13
14#define error(X) \
15 if (auto EC = X) \
16 return EC;
17
18namespace{
19structMapGap {
20Error operator()(CodeViewRecordIO &IO,LocalVariableAddrGap &Gap) const{
21error(IO.mapInteger(Gap.GapStartOffset));
22error(IO.mapInteger(Gap.Range));
23returnError::success();
24 }
25};
26}
27
28staticErrormapLocalVariableAddrRange(CodeViewRecordIO &IO,
29LocalVariableAddrRange &Range) {
30error(IO.mapInteger(Range.OffsetStart));
31error(IO.mapInteger(Range.ISectStart));
32error(IO.mapInteger(Range.Range));
33returnError::success();
34}
35
36ErrorSymbolRecordMapping::visitSymbolBegin(CVSymbol &Record) {
37error(IO.beginRecord(MaxRecordLength -sizeof(RecordPrefix)));
38returnError::success();
39}
40
41ErrorSymbolRecordMapping::visitSymbolEnd(CVSymbol &Record) {
42error(IO.padToAlignment(alignOf(Container)));
43error(IO.endRecord());
44returnError::success();
45}
46
47Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,BlockSym &Block) {
48
49error(IO.mapInteger(Block.Parent));
50error(IO.mapInteger(Block.End));
51error(IO.mapInteger(Block.CodeSize));
52error(IO.mapInteger(Block.CodeOffset));
53error(IO.mapInteger(Block.Segment));
54error(IO.mapStringZ(Block.Name));
55
56returnError::success();
57}
58
59Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,Thunk32Sym &Thunk) {
60
61error(IO.mapInteger(Thunk.Parent));
62error(IO.mapInteger(Thunk.End));
63error(IO.mapInteger(Thunk.Next));
64error(IO.mapInteger(Thunk.Offset));
65error(IO.mapInteger(Thunk.Segment));
66error(IO.mapInteger(Thunk.Length));
67error(IO.mapEnum(Thunk.Thunk));
68error(IO.mapStringZ(Thunk.Name));
69error(IO.mapByteVectorTail(Thunk.VariantData));
70
71returnError::success();
72}
73
74Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
75TrampolineSym &Tramp) {
76
77error(IO.mapEnum(Tramp.Type));
78error(IO.mapInteger(Tramp.Size));
79error(IO.mapInteger(Tramp.ThunkOffset));
80error(IO.mapInteger(Tramp.TargetOffset));
81error(IO.mapInteger(Tramp.ThunkSection));
82error(IO.mapInteger(Tramp.TargetSection));
83
84returnError::success();
85}
86
87Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
88SectionSym &Section) {
89uint8_tPadding = 0;
90
91error(IO.mapInteger(Section.SectionNumber));
92error(IO.mapInteger(Section.Alignment));
93error(IO.mapInteger(Padding));
94error(IO.mapInteger(Section.Rva));
95error(IO.mapInteger(Section.Length));
96error(IO.mapInteger(Section.Characteristics));
97error(IO.mapStringZ(Section.Name));
98
99returnError::success();
100}
101
102Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
103CoffGroupSym &CoffGroup) {
104
105error(IO.mapInteger(CoffGroup.Size));
106error(IO.mapInteger(CoffGroup.Characteristics));
107error(IO.mapInteger(CoffGroup.Offset));
108error(IO.mapInteger(CoffGroup.Segment));
109error(IO.mapStringZ(CoffGroup.Name));
110
111returnError::success();
112}
113
114Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
115BPRelativeSym &BPRel) {
116
117error(IO.mapInteger(BPRel.Offset));
118error(IO.mapInteger(BPRel.Type));
119error(IO.mapStringZ(BPRel.Name));
120
121returnError::success();
122}
123
124Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
125BuildInfoSym &BuildInfo) {
126
127error(IO.mapInteger(BuildInfo.BuildId));
128
129returnError::success();
130}
131
132Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
133CallSiteInfoSym &CallSiteInfo) {
134uint16_tPadding = 0;
135
136error(IO.mapInteger(CallSiteInfo.CodeOffset));
137error(IO.mapInteger(CallSiteInfo.Segment));
138error(IO.mapInteger(Padding));
139error(IO.mapInteger(CallSiteInfo.Type));
140
141returnError::success();
142}
143
144Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
145EnvBlockSym &EnvBlock) {
146
147uint8_tReserved = 0;
148error(IO.mapInteger(Reserved));
149error(IO.mapStringZVectorZ(EnvBlock.Fields));
150
151returnError::success();
152}
153
154Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
155FileStaticSym &FileStatic) {
156
157error(IO.mapInteger(FileStatic.Index));
158error(IO.mapInteger(FileStatic.ModFilenameOffset));
159error(IO.mapEnum(FileStatic.Flags));
160error(IO.mapStringZ(FileStatic.Name));
161
162returnError::success();
163}
164
165Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,ExportSym &Export) {
166
167error(IO.mapInteger(Export.Ordinal));
168error(IO.mapEnum(Export.Flags));
169error(IO.mapStringZ(Export.Name));
170
171returnError::success();
172}
173
174Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
175Compile2Sym &Compile2) {
176
177error(IO.mapEnum(Compile2.Flags));
178error(IO.mapEnum(Compile2.Machine));
179error(IO.mapInteger(Compile2.VersionFrontendMajor));
180error(IO.mapInteger(Compile2.VersionFrontendMinor));
181error(IO.mapInteger(Compile2.VersionFrontendBuild));
182error(IO.mapInteger(Compile2.VersionBackendMajor));
183error(IO.mapInteger(Compile2.VersionBackendMinor));
184error(IO.mapInteger(Compile2.VersionBackendBuild));
185error(IO.mapStringZ(Compile2.Version));
186error(IO.mapStringZVectorZ(Compile2.ExtraStrings));
187
188returnError::success();
189}
190
191Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
192Compile3Sym &Compile3) {
193
194error(IO.mapEnum(Compile3.Flags));
195error(IO.mapEnum(Compile3.Machine));
196error(IO.mapInteger(Compile3.VersionFrontendMajor));
197error(IO.mapInteger(Compile3.VersionFrontendMinor));
198error(IO.mapInteger(Compile3.VersionFrontendBuild));
199error(IO.mapInteger(Compile3.VersionFrontendQFE));
200error(IO.mapInteger(Compile3.VersionBackendMajor));
201error(IO.mapInteger(Compile3.VersionBackendMinor));
202error(IO.mapInteger(Compile3.VersionBackendBuild));
203error(IO.mapInteger(Compile3.VersionBackendQFE));
204error(IO.mapStringZ(Compile3.Version));
205
206returnError::success();
207}
208
209Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
210ConstantSym &Constant) {
211
212error(IO.mapInteger(Constant.Type));
213error(IO.mapEncodedInteger(Constant.Value));
214error(IO.mapStringZ(Constant.Name));
215
216returnError::success();
217}
218
219Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,DataSym &Data) {
220
221error(IO.mapInteger(Data.Type));
222error(IO.mapInteger(Data.DataOffset));
223error(IO.mapInteger(Data.Segment));
224error(IO.mapStringZ(Data.Name));
225
226returnError::success();
227}
228
229Error SymbolRecordMapping::visitKnownRecord(
230CVSymbol &CVR,DefRangeFramePointerRelSym &DefRangeFramePointerRel) {
231
232error(IO.mapObject(DefRangeFramePointerRel.Hdr.Offset));
233error(mapLocalVariableAddrRange(IO, DefRangeFramePointerRel.Range));
234error(IO.mapVectorTail(DefRangeFramePointerRel.Gaps, MapGap()));
235
236returnError::success();
237}
238
239Error SymbolRecordMapping::visitKnownRecord(
240CVSymbol &CVR,
241DefRangeFramePointerRelFullScopeSym &DefRangeFramePointerRelFullScope) {
242
243error(IO.mapInteger(DefRangeFramePointerRelFullScope.Offset));
244
245returnError::success();
246}
247
248Error SymbolRecordMapping::visitKnownRecord(
249CVSymbol &CVR,DefRangeRegisterRelSym &DefRangeRegisterRel) {
250
251error(IO.mapObject(DefRangeRegisterRel.Hdr.Register));
252error(IO.mapObject(DefRangeRegisterRel.Hdr.Flags));
253error(IO.mapObject(DefRangeRegisterRel.Hdr.BasePointerOffset));
254error(mapLocalVariableAddrRange(IO, DefRangeRegisterRel.Range));
255error(IO.mapVectorTail(DefRangeRegisterRel.Gaps, MapGap()));
256
257returnError::success();
258}
259
260Error SymbolRecordMapping::visitKnownRecord(
261CVSymbol &CVR,DefRangeRegisterSym &DefRangeRegister) {
262
263error(IO.mapObject(DefRangeRegister.Hdr.Register));
264error(IO.mapObject(DefRangeRegister.Hdr.MayHaveNoName));
265error(mapLocalVariableAddrRange(IO, DefRangeRegister.Range));
266error(IO.mapVectorTail(DefRangeRegister.Gaps, MapGap()));
267
268returnError::success();
269}
270
271Error SymbolRecordMapping::visitKnownRecord(
272CVSymbol &CVR,DefRangeSubfieldRegisterSym &DefRangeSubfieldRegister) {
273
274error(IO.mapObject(DefRangeSubfieldRegister.Hdr.Register));
275error(IO.mapObject(DefRangeSubfieldRegister.Hdr.MayHaveNoName));
276error(IO.mapObject(DefRangeSubfieldRegister.Hdr.OffsetInParent));
277error(mapLocalVariableAddrRange(IO, DefRangeSubfieldRegister.Range));
278error(IO.mapVectorTail(DefRangeSubfieldRegister.Gaps, MapGap()));
279
280returnError::success();
281}
282
283Error SymbolRecordMapping::visitKnownRecord(
284CVSymbol &CVR,DefRangeSubfieldSym &DefRangeSubfield) {
285
286error(IO.mapInteger(DefRangeSubfield.Program));
287error(IO.mapInteger(DefRangeSubfield.OffsetInParent));
288error(mapLocalVariableAddrRange(IO, DefRangeSubfield.Range));
289error(IO.mapVectorTail(DefRangeSubfield.Gaps, MapGap()));
290
291returnError::success();
292}
293
294Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
295DefRangeSym &DefRange) {
296
297error(IO.mapInteger(DefRange.Program));
298error(mapLocalVariableAddrRange(IO, DefRange.Range));
299error(IO.mapVectorTail(DefRange.Gaps, MapGap()));
300
301returnError::success();
302}
303
304Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
305FrameCookieSym &FrameCookie) {
306
307error(IO.mapInteger(FrameCookie.CodeOffset));
308error(IO.mapInteger(FrameCookie.Register));
309error(IO.mapEnum(FrameCookie.CookieKind));
310error(IO.mapInteger(FrameCookie.Flags));
311
312returnError::success();
313}
314
315Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
316FrameProcSym &FrameProc) {
317error(IO.mapInteger(FrameProc.TotalFrameBytes));
318error(IO.mapInteger(FrameProc.PaddingFrameBytes));
319error(IO.mapInteger(FrameProc.OffsetToPadding));
320error(IO.mapInteger(FrameProc.BytesOfCalleeSavedRegisters));
321error(IO.mapInteger(FrameProc.OffsetOfExceptionHandler));
322error(IO.mapInteger(FrameProc.SectionIdOfExceptionHandler));
323error(IO.mapEnum(FrameProc.Flags));
324
325returnError::success();
326}
327
328Error SymbolRecordMapping::visitKnownRecord(
329CVSymbol &CVR,HeapAllocationSiteSym &HeapAllocSite) {
330
331error(IO.mapInteger(HeapAllocSite.CodeOffset));
332error(IO.mapInteger(HeapAllocSite.Segment));
333error(IO.mapInteger(HeapAllocSite.CallInstructionSize));
334error(IO.mapInteger(HeapAllocSite.Type));
335
336returnError::success();
337}
338
339Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
340InlineSiteSym &InlineSite) {
341
342error(IO.mapInteger(InlineSite.Parent));
343error(IO.mapInteger(InlineSite.End));
344error(IO.mapInteger(InlineSite.Inlinee));
345error(IO.mapByteVectorTail(InlineSite.AnnotationData));
346
347returnError::success();
348}
349
350Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
351RegisterSym &Register) {
352
353error(IO.mapInteger(Register.Index));
354error(IO.mapEnum(Register.Register));
355error(IO.mapStringZ(Register.Name));
356
357returnError::success();
358}
359
360Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
361PublicSym32 &Public) {
362
363error(IO.mapEnum(Public.Flags));
364error(IO.mapInteger(Public.Offset));
365error(IO.mapInteger(Public.Segment));
366error(IO.mapStringZ(Public.Name));
367
368returnError::success();
369}
370
371Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
372ProcRefSym &ProcRef) {
373
374error(IO.mapInteger(ProcRef.SumName));
375error(IO.mapInteger(ProcRef.SymOffset));
376error(IO.mapInteger(ProcRef.Module));
377error(IO.mapStringZ(ProcRef.Name));
378
379returnError::success();
380}
381
382Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,LabelSym &Label) {
383
384error(IO.mapInteger(Label.CodeOffset));
385error(IO.mapInteger(Label.Segment));
386error(IO.mapEnum(Label.Flags));
387error(IO.mapStringZ(Label.Name));
388
389returnError::success();
390}
391
392Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,LocalSym &Local) {
393error(IO.mapInteger(Local.Type));
394error(IO.mapEnum(Local.Flags));
395error(IO.mapStringZ(Local.Name));
396
397returnError::success();
398}
399
400Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
401ObjNameSym &ObjName) {
402
403error(IO.mapInteger(ObjName.Signature));
404error(IO.mapStringZ(ObjName.Name));
405
406returnError::success();
407}
408
409Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,ProcSym &Proc) {
410error(IO.mapInteger(Proc.Parent));
411error(IO.mapInteger(Proc.End));
412error(IO.mapInteger(Proc.Next));
413error(IO.mapInteger(Proc.CodeSize));
414error(IO.mapInteger(Proc.DbgStart));
415error(IO.mapInteger(Proc.DbgEnd));
416error(IO.mapInteger(Proc.FunctionType));
417error(IO.mapInteger(Proc.CodeOffset));
418error(IO.mapInteger(Proc.Segment));
419error(IO.mapEnum(Proc.Flags));
420error(IO.mapStringZ(Proc.Name));
421returnError::success();
422}
423
424Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
425ScopeEndSym &ScopeEnd) {
426returnError::success();
427}
428
429Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,CallerSym &Caller) {
430error(IO.mapVectorN<uint32_t>(
431Caller.Indices,
432 [](CodeViewRecordIO &IO,TypeIndex &N) { return IO.mapInteger(N); }));
433returnError::success();
434}
435
436Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
437RegRelativeSym &RegRel) {
438
439error(IO.mapInteger(RegRel.Offset));
440error(IO.mapInteger(RegRel.Type));
441error(IO.mapEnum(RegRel.Register));
442error(IO.mapStringZ(RegRel.Name));
443
444returnError::success();
445}
446
447Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
448ThreadLocalDataSym &Data) {
449
450error(IO.mapInteger(Data.Type));
451error(IO.mapInteger(Data.DataOffset));
452error(IO.mapInteger(Data.Segment));
453error(IO.mapStringZ(Data.Name));
454
455returnError::success();
456}
457
458Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,UDTSym &UDT) {
459
460error(IO.mapInteger(UDT.Type));
461error(IO.mapStringZ(UDT.Name));
462
463returnError::success();
464}
465
466Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
467UsingNamespaceSym &UN) {
468
469error(IO.mapStringZ(UN.Name));
470
471returnError::success();
472}
473
474Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
475AnnotationSym &Annot) {
476
477error(IO.mapInteger(Annot.CodeOffset));
478error(IO.mapInteger(Annot.Segment));
479error(IO.mapVectorN<uint16_t>(
480 Annot.Strings,
481 [](CodeViewRecordIO &IO,StringRef &S) { return IO.mapStringZ(S); }));
482
483returnError::success();
484}
485
486Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,
487JumpTableSym &JumpTable) {
488error(IO.mapInteger(JumpTable.BaseOffset));
489error(IO.mapInteger(JumpTable.BaseSegment));
490error(IO.mapEnum(JumpTable.SwitchType));
491error(IO.mapInteger(JumpTable.BranchOffset));
492error(IO.mapInteger(JumpTable.TableOffset));
493error(IO.mapInteger(JumpTable.BranchSegment));
494error(IO.mapInteger(JumpTable.TableSegment));
495error(IO.mapInteger(JumpTable.EntriesCount));
496returnError::success();
497}
498
499RegisterIdcodeview::decodeFramePtrReg(EncodedFramePtrReg EncodedReg,
500CPUType CPU) {
501assert(unsigned(EncodedReg) < 4);
502switch (CPU) {
503// FIXME: Add ARM and AArch64 variants here.
504default:
505break;
506caseCPUType::Intel8080:
507caseCPUType::Intel8086:
508caseCPUType::Intel80286:
509caseCPUType::Intel80386:
510caseCPUType::Intel80486:
511caseCPUType::Pentium:
512caseCPUType::PentiumPro:
513caseCPUType::Pentium3:
514switch (EncodedReg) {
515caseEncodedFramePtrReg::None:return RegisterId::NONE;
516caseEncodedFramePtrReg::StackPtr:return RegisterId::VFRAME;
517caseEncodedFramePtrReg::FramePtr:return RegisterId::EBP;
518caseEncodedFramePtrReg::BasePtr:return RegisterId::EBX;
519 }
520llvm_unreachable("bad encoding");
521caseCPUType::X64:
522switch (EncodedReg) {
523caseEncodedFramePtrReg::None:return RegisterId::NONE;
524caseEncodedFramePtrReg::StackPtr:return RegisterId::RSP;
525caseEncodedFramePtrReg::FramePtr:return RegisterId::RBP;
526caseEncodedFramePtrReg::BasePtr:return RegisterId::R13;
527 }
528llvm_unreachable("bad encoding");
529 }
530return RegisterId::NONE;
531}
532
533EncodedFramePtrRegcodeview::encodeFramePtrReg(RegisterId Reg,CPUType CPU) {
534switch (CPU) {
535// FIXME: Add ARM and AArch64 variants here.
536default:
537break;
538caseCPUType::Intel8080:
539caseCPUType::Intel8086:
540caseCPUType::Intel80286:
541caseCPUType::Intel80386:
542caseCPUType::Intel80486:
543caseCPUType::Pentium:
544caseCPUType::PentiumPro:
545caseCPUType::Pentium3:
546switch (Reg) {
547case RegisterId::VFRAME:
548returnEncodedFramePtrReg::StackPtr;
549case RegisterId::EBP:
550returnEncodedFramePtrReg::FramePtr;
551case RegisterId::EBX:
552returnEncodedFramePtrReg::BasePtr;
553default:
554break;
555 }
556break;
557caseCPUType::X64:
558switch (Reg) {
559case RegisterId::RSP:
560returnEncodedFramePtrReg::StackPtr;
561case RegisterId::RBP:
562returnEncodedFramePtrReg::FramePtr;
563case RegisterId::R13:
564returnEncodedFramePtrReg::BasePtr;
565default:
566break;
567 }
568break;
569 }
570returnEncodedFramePtrReg::None;
571}
CallSiteInfo
@ CallSiteInfo
Definition:FunctionInfo.cpp:27
HashFunctionMode::Local
@ Local
Range
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
mapLocalVariableAddrRange
static Error mapLocalVariableAddrRange(CodeViewRecordIO &IO, LocalVariableAddrRange &Range)
Definition:SymbolRecordMapping.cpp:28
error
#define error(X)
Definition:SymbolRecordMapping.cpp:14
SymbolRecordMapping.h
llvm::Constant
This is an important base class in LLVM.
Definition:Constant.h:42
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition:Error.h:160
llvm::Error::success
static ErrorSuccess success()
Create a success value.
Definition:Error.h:337
llvm::Record
Definition:Record.h:1596
llvm::Register
Wrapper class representing virtual and physical registers.
Definition:Register.h:19
llvm::Register::Register
constexpr Register(unsigned Val=0)
Definition:Register.h:23
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:StringRef.h:51
llvm::Value::Value
Value(Type *Ty, unsigned scid)
Definition:Value.cpp:53
llvm::codeview::AnnotationSym
Definition:SymbolRecord.h:1012
llvm::codeview::AnnotationSym::Strings
std::vector< StringRef > Strings
Definition:SymbolRecord.h:1021
llvm::codeview::AnnotationSym::CodeOffset
uint32_t CodeOffset
Definition:SymbolRecord.h:1019
llvm::codeview::AnnotationSym::Segment
uint16_t Segment
Definition:SymbolRecord.h:1020
llvm::codeview::BPRelativeSym
Definition:SymbolRecord.h:910
llvm::codeview::BPRelativeSym::Offset
int32_t Offset
Definition:SymbolRecord.h:917
llvm::codeview::BPRelativeSym::Type
TypeIndex Type
Definition:SymbolRecord.h:918
llvm::codeview::BPRelativeSym::Name
StringRef Name
Definition:SymbolRecord.h:919
llvm::codeview::BlockSym
Definition:SymbolRecord.h:621
llvm::codeview::BuildInfoSym
Definition:SymbolRecord.h:897
llvm::codeview::BuildInfoSym::BuildId
TypeIndex BuildId
Definition:SymbolRecord.h:904
llvm::codeview::CVRecord
CVRecord is a fat pointer (base + size pair) to a symbol or type record.
Definition:CVRecord.h:29
llvm::codeview::CallSiteInfoSym
Definition:SymbolRecord.h:821
llvm::codeview::CallerSym
Definition:SymbolRecord.h:168
llvm::codeview::CodeViewRecordIO
Definition:CodeViewRecordIO.h:43
llvm::codeview::CodeViewRecordIO::mapVectorTail
Error mapVectorTail(T &Items, const ElementMapper &Mapper, const Twine &Comment="")
Definition:CodeViewRecordIO.h:180
llvm::codeview::CodeViewRecordIO::padToAlignment
Error padToAlignment(uint32_t Align)
Definition:CodeViewRecordIO.cpp:82
llvm::codeview::CodeViewRecordIO::mapVectorN
Error mapVectorN(T &Items, const ElementMapper &Mapper, const Twine &Comment="")
Definition:CodeViewRecordIO.h:143
llvm::codeview::CodeViewRecordIO::endRecord
Error endRecord()
Definition:CodeViewRecordIO.cpp:29
llvm::codeview::CodeViewRecordIO::mapInteger
Error mapInteger(TypeIndex &TypeInd, const Twine &Comment="")
Definition:CodeViewRecordIO.cpp:130
llvm::codeview::CodeViewRecordIO::mapStringZVectorZ
Error mapStringZVectorZ(std::vector< StringRef > &Value, const Twine &Comment="")
Definition:CodeViewRecordIO.cpp:255
llvm::codeview::CodeViewRecordIO::mapStringZ
Error mapStringZ(StringRef &Value, const Twine &Comment="")
Definition:CodeViewRecordIO.cpp:210
llvm::codeview::CodeViewRecordIO::mapObject
Error mapObject(T &Value)
Definition:CodeViewRecordIO.h:81
llvm::codeview::CodeViewRecordIO::mapEnum
Error mapEnum(T &Value, const Twine &Comment="")
Definition:CodeViewRecordIO.h:114
llvm::codeview::CodeViewRecordIO::mapEncodedInteger
Error mapEncodedInteger(int64_t &Value, const Twine &Comment="")
Definition:CodeViewRecordIO.cpp:151
llvm::codeview::CodeViewRecordIO::beginRecord
Error beginRecord(std::optional< uint32_t > MaxLength)
Definition:CodeViewRecordIO.cpp:21
llvm::codeview::CodeViewRecordIO::mapByteVectorTail
Error mapByteVectorTail(ArrayRef< uint8_t > &Bytes, const Twine &Comment="")
Definition:CodeViewRecordIO.cpp:103
llvm::codeview::CoffGroupSym
Definition:SymbolRecord.h:123
llvm::codeview::Compile2Sym
Definition:SymbolRecord.h:723
llvm::codeview::Compile2Sym::VersionBackendMajor
uint16_t VersionBackendMajor
Definition:SymbolRecord.h:735
llvm::codeview::Compile2Sym::Flags
CompileSym2Flags Flags
Definition:SymbolRecord.h:730
llvm::codeview::Compile2Sym::VersionFrontendMajor
uint16_t VersionFrontendMajor
Definition:SymbolRecord.h:732
llvm::codeview::Compile2Sym::VersionBackendMinor
uint16_t VersionBackendMinor
Definition:SymbolRecord.h:736
llvm::codeview::Compile2Sym::VersionFrontendMinor
uint16_t VersionFrontendMinor
Definition:SymbolRecord.h:733
llvm::codeview::Compile2Sym::Version
StringRef Version
Definition:SymbolRecord.h:738
llvm::codeview::Compile2Sym::VersionBackendBuild
uint16_t VersionBackendBuild
Definition:SymbolRecord.h:737
llvm::codeview::Compile2Sym::VersionFrontendBuild
uint16_t VersionFrontendBuild
Definition:SymbolRecord.h:734
llvm::codeview::Compile2Sym::ExtraStrings
std::vector< StringRef > ExtraStrings
Definition:SymbolRecord.h:739
llvm::codeview::Compile2Sym::Machine
CPUType Machine
Definition:SymbolRecord.h:731
llvm::codeview::Compile3Sym
Definition:SymbolRecord.h:748
llvm::codeview::Compile3Sym::VersionBackendBuild
uint16_t VersionBackendBuild
Definition:SymbolRecord.h:764
llvm::codeview::Compile3Sym::VersionBackendQFE
uint16_t VersionBackendQFE
Definition:SymbolRecord.h:765
llvm::codeview::Compile3Sym::Flags
CompileSym3Flags Flags
Definition:SymbolRecord.h:756
llvm::codeview::Compile3Sym::Version
StringRef Version
Definition:SymbolRecord.h:766
llvm::codeview::Compile3Sym::VersionFrontendMajor
uint16_t VersionFrontendMajor
Definition:SymbolRecord.h:758
llvm::codeview::Compile3Sym::VersionBackendMajor
uint16_t VersionBackendMajor
Definition:SymbolRecord.h:762
llvm::codeview::Compile3Sym::Machine
CPUType Machine
Definition:SymbolRecord.h:757
llvm::codeview::Compile3Sym::VersionBackendMinor
uint16_t VersionBackendMinor
Definition:SymbolRecord.h:763
llvm::codeview::Compile3Sym::VersionFrontendBuild
uint16_t VersionFrontendBuild
Definition:SymbolRecord.h:760
llvm::codeview::Compile3Sym::VersionFrontendMinor
uint16_t VersionFrontendMinor
Definition:SymbolRecord.h:759
llvm::codeview::Compile3Sym::VersionFrontendQFE
uint16_t VersionFrontendQFE
Definition:SymbolRecord.h:761
llvm::codeview::ConstantSym
Definition:SymbolRecord.h:941
llvm::codeview::DataSym
Definition:SymbolRecord.h:956
llvm::codeview::DefRangeFramePointerRelFullScopeSym
Definition:SymbolRecord.h:607
llvm::codeview::DefRangeFramePointerRelFullScopeSym::Offset
int32_t Offset
Definition:SymbolRecord.h:615
llvm::codeview::DefRangeFramePointerRelSym
Definition:SymbolRecord.h:550
llvm::codeview::DefRangeFramePointerRelSym::Hdr
DefRangeFramePointerRelHeader Hdr
Definition:SymbolRecord.h:564
llvm::codeview::DefRangeFramePointerRelSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:565
llvm::codeview::DefRangeFramePointerRelSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:566
llvm::codeview::DefRangeRegisterRelSym
Definition:SymbolRecord.h:578
llvm::codeview::DefRangeRegisterRelSym::Hdr
DefRangeRegisterRelHeader Hdr
Definition:SymbolRecord.h:599
llvm::codeview::DefRangeRegisterRelSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:601
llvm::codeview::DefRangeRegisterRelSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:600
llvm::codeview::DefRangeRegisterSym
Definition:SymbolRecord.h:505
llvm::codeview::DefRangeRegisterSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:516
llvm::codeview::DefRangeRegisterSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:515
llvm::codeview::DefRangeRegisterSym::Hdr
DefRangeRegisterHeader Hdr
Definition:SymbolRecord.h:514
llvm::codeview::DefRangeSubfieldRegisterSym
Definition:SymbolRecord.h:528
llvm::codeview::DefRangeSubfieldRegisterSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:539
llvm::codeview::DefRangeSubfieldRegisterSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:540
llvm::codeview::DefRangeSubfieldRegisterSym::Hdr
DefRangeSubfieldRegisterHeader Hdr
Definition:SymbolRecord.h:538
llvm::codeview::DefRangeSubfieldSym
Definition:SymbolRecord.h:478
llvm::codeview::DefRangeSubfieldSym::Program
uint32_t Program
Definition:SymbolRecord.h:491
llvm::codeview::DefRangeSubfieldSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:494
llvm::codeview::DefRangeSubfieldSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:493
llvm::codeview::DefRangeSubfieldSym::OffsetInParent
uint16_t OffsetInParent
Definition:SymbolRecord.h:492
llvm::codeview::DefRangeSym
Definition:SymbolRecord.h:457
llvm::codeview::DefRangeSym::Gaps
std::vector< LocalVariableAddrGap > Gaps
Definition:SymbolRecord.h:472
llvm::codeview::DefRangeSym::Range
LocalVariableAddrRange Range
Definition:SymbolRecord.h:471
llvm::codeview::DefRangeSym::Program
uint32_t Program
Definition:SymbolRecord.h:470
llvm::codeview::EnvBlockSym
Definition:SymbolRecord.h:680
llvm::codeview::EnvBlockSym::Fields
std::vector< StringRef > Fields
Definition:SymbolRecord.h:687
llvm::codeview::ExportSym
Definition:SymbolRecord.h:693
llvm::codeview::FileStaticSym
Definition:SymbolRecord.h:707
llvm::codeview::FrameCookieSym
Definition:SymbolRecord.h:863
llvm::codeview::FrameCookieSym::CodeOffset
uint32_t CodeOffset
Definition:SymbolRecord.h:875
llvm::codeview::FrameCookieSym::Flags
uint8_t Flags
Definition:SymbolRecord.h:878
llvm::codeview::FrameCookieSym::Register
uint16_t Register
Definition:SymbolRecord.h:876
llvm::codeview::FrameCookieSym::CookieKind
FrameCookieKind CookieKind
Definition:SymbolRecord.h:877
llvm::codeview::FrameProcSym
Definition:SymbolRecord.h:788
llvm::codeview::FrameProcSym::BytesOfCalleeSavedRegisters
uint32_t BytesOfCalleeSavedRegisters
Definition:SymbolRecord.h:798
llvm::codeview::FrameProcSym::TotalFrameBytes
uint32_t TotalFrameBytes
Definition:SymbolRecord.h:795
llvm::codeview::FrameProcSym::SectionIdOfExceptionHandler
uint16_t SectionIdOfExceptionHandler
Definition:SymbolRecord.h:800
llvm::codeview::FrameProcSym::OffsetToPadding
uint32_t OffsetToPadding
Definition:SymbolRecord.h:797
llvm::codeview::FrameProcSym::PaddingFrameBytes
uint32_t PaddingFrameBytes
Definition:SymbolRecord.h:796
llvm::codeview::FrameProcSym::OffsetOfExceptionHandler
uint32_t OffsetOfExceptionHandler
Definition:SymbolRecord.h:799
llvm::codeview::FrameProcSym::Flags
FrameProcedureOptions Flags
Definition:SymbolRecord.h:801
llvm::codeview::HeapAllocationSiteSym
Definition:SymbolRecord.h:841
llvm::codeview::HeapAllocationSiteSym::CallInstructionSize
uint16_t CallInstructionSize
Definition:SymbolRecord.h:856
llvm::codeview::HeapAllocationSiteSym::CodeOffset
uint32_t CodeOffset
Definition:SymbolRecord.h:854
llvm::codeview::HeapAllocationSiteSym::Segment
uint16_t Segment
Definition:SymbolRecord.h:855
llvm::codeview::HeapAllocationSiteSym::Type
TypeIndex Type
Definition:SymbolRecord.h:857
llvm::codeview::InlineSiteSym
Definition:SymbolRecord.h:353
llvm::codeview::JumpTableSym
Definition:SymbolRecord.h:147
llvm::codeview::LabelSym
Definition:SymbolRecord.h:644
llvm::codeview::LocalSym
Definition:SymbolRecord.h:430
llvm::codeview::ObjNameSym
Definition:SymbolRecord.h:665
llvm::codeview::ObjNameSym::Signature
uint32_t Signature
Definition:SymbolRecord.h:673
llvm::codeview::ObjNameSym::Name
StringRef Name
Definition:SymbolRecord.h:674
llvm::codeview::ProcRefSym
Definition:SymbolRecord.h:413
llvm::codeview::ProcRefSym::Module
uint16_t Module
Definition:SymbolRecord.h:422
llvm::codeview::ProcRefSym::SumName
uint32_t SumName
Definition:SymbolRecord.h:420
llvm::codeview::ProcRefSym::SymOffset
uint32_t SymOffset
Definition:SymbolRecord.h:421
llvm::codeview::ProcRefSym::Name
StringRef Name
Definition:SymbolRecord.h:423
llvm::codeview::ProcSym
Definition:SymbolRecord.h:41
llvm::codeview::ProcSym::DbgStart
uint32_t DbgStart
Definition:SymbolRecord.h:57
llvm::codeview::ProcSym::End
uint32_t End
Definition:SymbolRecord.h:54
llvm::codeview::ProcSym::Next
uint32_t Next
Definition:SymbolRecord.h:55
llvm::codeview::ProcSym::FunctionType
TypeIndex FunctionType
Definition:SymbolRecord.h:59
llvm::codeview::ProcSym::CodeOffset
uint32_t CodeOffset
Definition:SymbolRecord.h:60
llvm::codeview::ProcSym::Name
StringRef Name
Definition:SymbolRecord.h:63
llvm::codeview::ProcSym::Segment
uint16_t Segment
Definition:SymbolRecord.h:61
llvm::codeview::ProcSym::CodeSize
uint32_t CodeSize
Definition:SymbolRecord.h:56
llvm::codeview::ProcSym::DbgEnd
uint32_t DbgEnd
Definition:SymbolRecord.h:58
llvm::codeview::ProcSym::Parent
uint32_t Parent
Definition:SymbolRecord.h:53
llvm::codeview::ProcSym::Flags
ProcSymFlags Flags
Definition:SymbolRecord.h:62
llvm::codeview::PublicSym32
Definition:SymbolRecord.h:381
llvm::codeview::RegRelativeSym
Definition:SymbolRecord.h:925
llvm::codeview::RegisterSym
Definition:SymbolRecord.h:398
llvm::codeview::ScopeEndSym
Definition:SymbolRecord.h:138
llvm::codeview::SectionSym
Definition:SymbolRecord.h:106
llvm::codeview::SymbolRecordMapping::visitSymbolEnd
Error visitSymbolEnd(CVSymbol &Record) override
Definition:SymbolRecordMapping.cpp:41
llvm::codeview::SymbolRecordMapping::visitSymbolBegin
Error visitSymbolBegin(CVSymbol &Record) override
Definition:SymbolRecordMapping.cpp:36
llvm::codeview::ThreadLocalDataSym
Definition:SymbolRecord.h:977
llvm::codeview::Thunk32Sym
Definition:SymbolRecord.h:69
llvm::codeview::TrampolineSym
Definition:SymbolRecord.h:89
llvm::codeview::TrampolineSym::ThunkSection
uint16_t ThunkSection
Definition:SymbolRecord.h:99
llvm::codeview::TrampolineSym::TargetOffset
uint32_t TargetOffset
Definition:SymbolRecord.h:98
llvm::codeview::TrampolineSym::ThunkOffset
uint32_t ThunkOffset
Definition:SymbolRecord.h:97
llvm::codeview::TrampolineSym::Type
TrampolineType Type
Definition:SymbolRecord.h:95
llvm::codeview::TrampolineSym::TargetSection
uint16_t TargetSection
Definition:SymbolRecord.h:100
llvm::codeview::TrampolineSym::Size
uint16_t Size
Definition:SymbolRecord.h:96
llvm::codeview::TypeIndex
A 32-bit type reference.
Definition:TypeIndex.h:96
llvm::codeview::UDTSym
Definition:SymbolRecord.h:884
llvm::codeview::UsingNamespaceSym
Definition:SymbolRecord.h:999
llvm::codeview::UsingNamespaceSym::Name
StringRef Name
Definition:SymbolRecord.h:1006
uint16_t
uint32_t
uint8_t
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:ErrorHandling.h:143
llvm::ARMBuildAttrs::Section
@ Section
Legacy Tags.
Definition:ARMBuildAttributes.h:82
llvm::ISD::JumpTable
@ JumpTable
Definition:ISDOpcodes.h:81
llvm::codeview
Definition:AppendingTypeTableBuilder.h:22
llvm::codeview::RegisterId
RegisterId
Definition:CodeView.h:529
llvm::codeview::MaxRecordLength
@ MaxRecordLength
Definition:RecordSerialization.h:30
llvm::codeview::CPUType
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
Definition:CodeView.h:76
llvm::codeview::CPUType::Pentium
@ Pentium
llvm::codeview::CPUType::Intel80486
@ Intel80486
llvm::codeview::CPUType::Intel8086
@ Intel8086
llvm::codeview::CPUType::Intel8080
@ Intel8080
llvm::codeview::CPUType::Intel80286
@ Intel80286
llvm::codeview::CPUType::PentiumPro
@ PentiumPro
llvm::codeview::CPUType::Pentium3
@ Pentium3
llvm::codeview::CPUType::Intel80386
@ Intel80386
llvm::codeview::CPUType::X64
@ X64
llvm::codeview::alignOf
uint32_t alignOf(CodeViewContainer Container)
Definition:CodeView.h:621
llvm::codeview::MemberAccess::Public
@ Public
llvm::codeview::EncodedFramePtrReg
EncodedFramePtrReg
Two-bit value indicating which register is the designated frame pointer register.
Definition:CodeView.h:551
llvm::codeview::EncodedFramePtrReg::FramePtr
@ FramePtr
llvm::codeview::EncodedFramePtrReg::BasePtr
@ BasePtr
llvm::codeview::EncodedFramePtrReg::None
@ None
llvm::codeview::EncodedFramePtrReg::StackPtr
@ StackPtr
llvm::codeview::decodeFramePtrReg
RegisterId decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU)
Definition:SymbolRecordMapping.cpp:499
llvm::codeview::encodeFramePtrReg
EncodedFramePtrReg encodeFramePtrReg(RegisterId Reg, CPUType CPU)
Definition:SymbolRecordMapping.cpp:533
llvm::pdb::PDB_SymType::Caller
@ Caller
llvm::pdb::PDB_SymType::UDT
@ UDT
llvm::pdb::PDB_SymType::CoffGroup
@ CoffGroup
llvm::pdb::PDB_SymType::Label
@ Label
llvm::pdb::PDB_LocType::RegRel
@ RegRel
llvm::pdb::PDB_DataKind::FileStatic
@ FileStatic
llvm::pdb::PDB_ColorItem::Padding
@ Padding
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:AddressRanges.h:18
llvm::PseudoProbeType::Block
@ Block
llvm::InlineSite
std::tuple< uint64_t, uint32_t > InlineSite
Definition:MCPseudoProbe.h:101
llvm::PassSummaryAction::Export
@ Export
Export information to summary.
llvm::VariableID::Reserved
@ Reserved
llvm::Data
@ Data
Definition:SIMachineScheduler.h:55
N
#define N
llvm::codeview::DefRangeFramePointerRelHeader::Offset
little32_t Offset
Definition:SymbolRecord.h:546
llvm::codeview::DefRangeRegisterHeader::Register
ulittle16_t Register
Definition:SymbolRecord.h:500
llvm::codeview::DefRangeRegisterHeader::MayHaveNoName
ulittle16_t MayHaveNoName
Definition:SymbolRecord.h:501
llvm::codeview::DefRangeRegisterRelHeader::Flags
ulittle16_t Flags
Definition:SymbolRecord.h:573
llvm::codeview::DefRangeRegisterRelHeader::Register
ulittle16_t Register
Definition:SymbolRecord.h:572
llvm::codeview::DefRangeRegisterRelHeader::BasePointerOffset
little32_t BasePointerOffset
Definition:SymbolRecord.h:574
llvm::codeview::DefRangeSubfieldRegisterHeader::MayHaveNoName
ulittle16_t MayHaveNoName
Definition:SymbolRecord.h:523
llvm::codeview::DefRangeSubfieldRegisterHeader::Register
ulittle16_t Register
Definition:SymbolRecord.h:522
llvm::codeview::DefRangeSubfieldRegisterHeader::OffsetInParent
ulittle32_t OffsetInParent
Definition:SymbolRecord.h:524
llvm::codeview::LocalVariableAddrGap
Definition:SymbolRecord.h:449
llvm::codeview::LocalVariableAddrGap::Range
uint16_t Range
Definition:SymbolRecord.h:451
llvm::codeview::LocalVariableAddrGap::GapStartOffset
uint16_t GapStartOffset
Definition:SymbolRecord.h:450
llvm::codeview::LocalVariableAddrRange
Definition:SymbolRecord.h:443
llvm::codeview::RecordPrefix
Definition:RecordSerialization.h:32

Generated on Thu Jul 17 2025 11:55:26 for LLVM by doxygen 1.9.6
[8]ページ先頭

©2009-2025 Movatter.jp