ALL: Hash Adjusters:
ALL: Public Symbols
ALL-NEXT: ============================================================
-ALL-NEXT: - S_PUB32 [size = 36] `?__purecall@@3PAXA`
+ALL-NEXT: 0 | S_PUB32 [size = 36] `?__purecall@@3PAXA`
ALL-NEXT: flags = none, addr = 0003:0000
-ALL-NEXT: - S_PUB32 [size = 20] `_main`
+ALL-NEXT: 36 | S_PUB32 [size = 20] `_main`
ALL-NEXT: flags = function, addr = 0001:0016
-ALL-NEXT: - S_PROCREF [size = 20] `main`
+ALL-NEXT: 56 | S_PROCREF [size = 20] `main`
ALL-NEXT: module = 1, sum name = 0, offset = 120
-ALL-NEXT: - S_GDATA32 [size = 28] `__purecall`
+ALL-NEXT: 76 | S_GDATA32 [size = 28] `__purecall`
ALL-NEXT: type = 0x0403 (void*), addr = 0003:0000
ALL: Symbols
ALL-NEXT: ============================================================
ALL-NEXT: Mod 0000 | `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`:
-ALL-NEXT: - S_OBJNAME [size = 56] sig=0, `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`
-ALL-NEXT: - S_COMPILE3 [size = 60]
-ALL-NEXT: machine = intel pentium 3, Ver = Microsoft (R) Optimizing Compiler, language = c++
-ALL-NEXT: frontend = 18.0.31101.0, backend = 18.0.31101.0
-ALL-NEXT: flags = security checks
-ALL-NEXT: - S_GPROC32 [size = 44] `main`
-ALL-NEXT: parent = 0, addr = 0001:0016, code size = 10, end = 196
-ALL-NEXT: debug start = 3, debug end = 8, flags = has fp
-ALL-NEXT: - S_FRAMEPROC [size = 32]
-ALL-NEXT: size = 0, padding size = 0, offset to padding = 0
-ALL-NEXT: bytes of callee saved registers = 0, exception handler addr = 0000:0000
-ALL-NEXT: flags = has async eh | opt speed
-ALL-NEXT: - S_END [size = 4]
-ALL-NEXT: - S_BUILDINFO [size = 8] BuildId = `4110`
+ALL-NEXT: 4 | S_OBJNAME [size = 56] sig=0, `d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj`
+ALL-NEXT: 60 | S_COMPILE3 [size = 60]
+ALL-NEXT: machine = intel pentium 3, Ver = Microsoft (R) Optimizing Compiler, language = c++
+ALL-NEXT: frontend = 18.0.31101.0, backend = 18.0.31101.0
+ALL-NEXT: flags = security checks
+ALL-NEXT: 120 | S_GPROC32 [size = 44] `main`
+ALL-NEXT: parent = 0, end = 196, addr = 0001:0016, code size = 10
+ALL-NEXT: debug start = 3, debug end = 8, flags = has fp
+ALL-NEXT: 164 | S_FRAMEPROC [size = 32]
+ALL-NEXT: size = 0, padding size = 0, offset to padding = 0
+ALL-NEXT: bytes of callee saved registers = 0, exception handler addr = 0000:0000
+ALL-NEXT: flags = has async eh | opt speed
+ALL-NEXT: 196 | S_END [size = 4]
+ALL-NEXT: 200 | S_BUILDINFO [size = 8] BuildId = `4110`
ALL-NEXT: Mod 0001 | `* Linker *`:
-ALL-NEXT: - S_OBJNAME [size = 20] sig=0, `* Linker *`
-ALL-NEXT: - S_COMPILE3 [size = 48]
-ALL-NEXT: machine = intel 80386, Ver = Microsoft (R) LINK, language = link
-ALL-NEXT: frontend = 0.0.0.0, backend = 12.0.31101.0
-ALL-NEXT: flags = none
-ALL-NEXT: - S_ENVBLOCK [size = 172]
-ALL-NEXT: - cwd
-ALL-NEXT: - d:\src\llvm\test\DebugInfo\PDB\Inputs
-ALL-NEXT: - exe
-ALL-NEXT: - C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.exe
-ALL-NEXT: - pdb
-ALL-NEXT: - d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.pdb
-ALL-NEXT: - S_TRAMPOLINE [size = 20]
-ALL-NEXT: type = tramp incremental, size = 5, source = 0001:0005, target = 0001:0005
-ALL-NEXT: - S_SECTION [size = 28] `.text`
-ALL-NEXT: length = 4122, alignment = 12, rva = 4096, section # = 1, characteristics = 1610612768
-ALL-NEXT: - S_COFFGROUP [size = 28] `.text$mn`
-ALL-NEXT: length = 4122, addr = 0001:0000, characteristics = 1610612768
-ALL-NEXT: - S_SECTION [size = 28] `.rdata`
-ALL-NEXT: length = 690, alignment = 12, rva = 12288, section # = 2, characteristics = 1073741888
-ALL-NEXT: - S_COFFGROUP [size = 28] `.rdata`
-ALL-NEXT: length = 323, addr = 0002:0000, characteristics = 1073741888
-ALL-NEXT: - S_COFFGROUP [size = 28] `.edata`
-ALL-NEXT: length = 0, addr = 0002:0323, characteristics = 1073741888
-ALL-NEXT: - S_COFFGROUP [size = 32] `.rdata$debug`
-ALL-NEXT: length = 366, addr = 0002:0324, characteristics = 1073741888
-ALL-NEXT: - S_SECTION [size = 28] `.data`
-ALL-NEXT: length = 4, alignment = 12, rva = 16384, section # = 3, characteristics = 3221225536
-ALL-NEXT: - S_COFFGROUP [size = 24] `.bss`
-ALL-NEXT: length = 4, addr = 0003:0000, characteristics = 3221225600
-ALL-NEXT: - S_SECTION [size = 28] `.reloc`
-ALL-NEXT: length = 8, alignment = 12, rva = 20480, section # = 4, characteristics = 1107296320
+ALL-NEXT: 4 | S_OBJNAME [size = 20] sig=0, `* Linker *`
+ALL-NEXT: 24 | S_COMPILE3 [size = 48]
+ALL-NEXT: machine = intel 80386, Ver = Microsoft (R) LINK, language = link
+ALL-NEXT: frontend = 0.0.0.0, backend = 12.0.31101.0
+ALL-NEXT: flags = none
+ALL-NEXT: 72 | S_ENVBLOCK [size = 172]
+ALL-NEXT: - cwd
+ALL-NEXT: - d:\src\llvm\test\DebugInfo\PDB\Inputs
+ALL-NEXT: - exe
+ALL-NEXT: - C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.exe
+ALL-NEXT: - pdb
+ALL-NEXT: - d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.pdb
+ALL-NEXT: 244 | S_TRAMPOLINE [size = 20]
+ALL-NEXT: type = tramp incremental, size = 5, source = 0001:0005, target = 0001:0005
+ALL-NEXT: 264 | S_SECTION [size = 28] `.text`
+ALL-NEXT: length = 4122, alignment = 12, rva = 4096, section # = 1, characteristics = 1610612768
+ALL-NEXT: 292 | S_COFFGROUP [size = 28] `.text$mn`
+ALL-NEXT: length = 4122, addr = 0001:0000, characteristics = 1610612768
+ALL-NEXT: 320 | S_SECTION [size = 28] `.rdata`
+ALL-NEXT: length = 690, alignment = 12, rva = 12288, section # = 2, characteristics = 1073741888
+ALL-NEXT: 348 | S_COFFGROUP [size = 28] `.rdata`
+ALL-NEXT: length = 323, addr = 0002:0000, characteristics = 1073741888
+ALL-NEXT: 376 | S_COFFGROUP [size = 28] `.edata`
+ALL-NEXT: length = 0, addr = 0002:0323, characteristics = 1073741888
+ALL-NEXT: 404 | S_COFFGROUP [size = 32] `.rdata$debug`
+ALL-NEXT: length = 366, addr = 0002:0324, characteristics = 1073741888
+ALL-NEXT: 436 | S_SECTION [size = 28] `.data`
+ALL-NEXT: length = 4, alignment = 12, rva = 16384, section # = 3, characteristics = 3221225536
+ALL-NEXT: 464 | S_COFFGROUP [size = 24] `.bss`
+ALL-NEXT: length = 4, addr = 0003:0000, characteristics = 3221225600
+ALL-NEXT: 488 | S_SECTION [size = 28] `.reloc`
+ALL-NEXT: length = 8, alignment = 12, rva = 20480, section # = 4, characteristics = 1107296320
ALL: Section Contributions
ALL-NEXT: ============================================================
ALL-NEXT: SC | mod = 1, 0001:0000, size = 10, data crc = 0, reloc crc = 0
}
Error MinimalSymbolDumper::visitSymbolBegin(codeview::CVSymbol &Record) {
+ return visitSymbolBegin(Record, 0);
+}
+
+Error MinimalSymbolDumper::visitSymbolBegin(codeview::CVSymbol &Record,
+ uint32_t Offset) {
// formatLine puts the newline at the beginning, so we use formatLine here
// to start a new line, and then individual visit methods use format to
// append to the existing line.
- P.formatLine("- {0} [size = {1}]", getSymbolKindName(Record.Type),
- Record.length());
+ P.formatLine("{0} | {1} [size = {2}]",
+ fmt_align(Offset, AlignStyle::Right, 6),
+ getSymbolKindName(Record.Type), Record.length());
P.Indent();
return Error::success();
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, BlockSym &Block) {
P.format(" `{0}`", Block.Name);
- AutoIndent Indent(P);
- P.formatLine("parent = {0}, addr = {1}", Block.Parent,
+ AutoIndent Indent(P, 7);
+ ;
+ P.formatLine("parent = {0}, end = {1}", Block.Parent, Block.End);
+ P.formatLine("code size = {0}, addr = {1}", Block.CodeSize,
formatSegmentOffset(Block.Segment, Block.CodeOffset));
- P.formatLine("code size = {0}, end = {1}", Block.CodeSize, Block.End);
return Error::success();
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, Thunk32Sym &Thunk) {
P.format(" `{0}`", Thunk.Name);
- AutoIndent Indent(P);
- P.formatLine("parent = {0}, addr = {1}", Thunk.Parent,
- formatSegmentOffset(Thunk.Segment, Thunk.Offset));
- P.formatLine("kind = {0}, size = {1}, end = {2}, next = {3}",
- formatThunkOrdinal(Thunk.Thunk), Thunk.Length, Thunk.End,
+ AutoIndent Indent(P, 7);
+ ;
+ P.formatLine("parent = {0}, end = {1}, next = {2}", Thunk.Parent, Thunk.End,
Thunk.Next);
+ P.formatLine("kind = {0}, size = {1}, addr = {2}",
+ formatThunkOrdinal(Thunk.Thunk), Thunk.Length,
+ formatSegmentOffset(Thunk.Segment, Thunk.Offset));
return Error::success();
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
TrampolineSym &Tramp) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, size = {1}, source = {2}, target = {3}",
formatTrampolineType(Tramp.Type), Tramp.Size,
formatSegmentOffset(Tramp.ThunkSection, Tramp.ThunkOffset),
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
SectionSym &Section) {
P.format(" `{0}`", Section.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("length = {0}, alignment = {1}, rva = {2}, section # = {3}, "
"characteristics = {4}",
Section.Length, Section.Alignment, Section.Rva,
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, CoffGroupSym &CG) {
P.format(" `{0}`", CG.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("length = {0}, addr = {1}, characteristics = {2}", CG.Size,
formatSegmentOffset(CG.Segment, CG.Offset), CG.Characteristics);
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
BPRelativeSym &BPRel) {
P.format(" `{0}`", BPRel.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, offset = {1}", typeIndex(BPRel.Type), BPRel.Offset);
return Error::success();
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
CallSiteInfoSym &CSI) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, addr = {1}", typeIndex(CSI.Type),
formatSegmentOffset(CSI.Segment, CSI.CodeOffset));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
EnvBlockSym &EnvBlock) {
+ AutoIndent Indent(P, 7);
+ ;
for (const auto &Entry : EnvBlock.Fields) {
P.formatLine("- {0}", Entry);
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, FileStaticSym &FS) {
P.format(" `{0}`", FS.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, file name offset = {1}, flags = {2}",
typeIndex(FS.Index), FS.ModFilenameOffset,
formatLocalSymFlags(P.getIndentLevel() + 9, FS.Flags));
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, ExportSym &Export) {
P.format(" `{0}`", Export.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("ordinal = {0}, flags = {1}", Export.Ordinal,
formatExportFlags(P.getIndentLevel() + 9, Export.Flags));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
Compile2Sym &Compile2) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
SourceLanguage Lang = static_cast<SourceLanguage>(
Compile2.Flags & CompileSym2Flags::SourceLanguageMask);
P.formatLine("machine = {0}, ver = {1}, language = {2}",
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
Compile3Sym &Compile3) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
SourceLanguage Lang = static_cast<SourceLanguage>(
Compile3.Flags & CompileSym3Flags::SourceLanguageMask);
P.formatLine("machine = {0}, Ver = {1}, language = {2}",
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
ConstantSym &Constant) {
P.format(" `{0}`", Constant.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, value = {1}", typeIndex(Constant.Type),
Constant.Value.toString(10));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, DataSym &Data) {
P.format(" `{0}`", Data.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, addr = {1}", typeIndex(Data.Type),
formatSegmentOffset(Data.Segment, Data.DataOffset));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
DefRangeFramePointerRelSym &Def) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("offset = {0}, range = {1}", Def.Offset, formatRange(Def.Range));
P.formatLine("gaps = {2}", Def.Offset,
formatGaps(P.getIndentLevel() + 9, Def.Gaps));
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
DefRangeRegisterRelSym &Def) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("register = {0}, base ptr = {1}, offset in parent = {2}, has "
"spilled udt = {3}",
uint16_t(Def.Hdr.Register), int32_t(Def.Hdr.BasePointerOffset),
Error MinimalSymbolDumper::visitKnownRecord(
CVSymbol &CVR, DefRangeRegisterSym &DefRangeRegister) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("register = {0}, may have no name = {1}, range start = "
"{2}, length = {3}",
uint16_t(DefRangeRegister.Hdr.Register),
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
DefRangeSubfieldRegisterSym &Def) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
bool NoName = !!(Def.Hdr.MayHaveNoName == 0);
P.formatLine("register = {0}, may have no name = {1}, offset in parent = {2}",
uint16_t(Def.Hdr.Register), NoName,
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
DefRangeSubfieldSym &Def) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("program = {0}, offset in parent = {1}, range = {2}",
Def.Program, Def.OffsetInParent, formatRange(Def.Range));
P.formatLine("gaps = {0}", formatGaps(P.getIndentLevel() + 9, Def.Gaps));
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, DefRangeSym &Def) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("program = {0}, range = {1}", Def.Program,
formatRange(Def.Range));
P.formatLine("gaps = {0}", formatGaps(P.getIndentLevel() + 9, Def.Gaps));
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, FrameCookieSym &FC) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("code offset = {0}, Register = {1}, kind = {2}, flags = {3}",
FC.CodeOffset, FC.Register, formatCookieKind(FC.CookieKind),
FC.Flags);
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, FrameProcSym &FP) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("size = {0}, padding size = {1}, offset to padding = {2}",
FP.TotalFrameBytes, FP.PaddingFrameBytes, FP.OffsetToPadding);
P.formatLine("bytes of callee saved registers = {0}, exception handler addr "
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
HeapAllocationSiteSym &HAS) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, addr = {1} call size = {2}", typeIndex(HAS.Type),
formatSegmentOffset(HAS.Segment, HAS.CodeOffset),
HAS.CallInstructionSize);
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, InlineSiteSym &IS) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
auto Bytes = makeArrayRef(IS.AnnotationData);
StringRef Annotations(reinterpret_cast<const char *>(Bytes.begin()),
Bytes.size());
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
RegisterSym &Register) {
P.format(" `{0}`", Register.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("register = {0}, type = {1}",
formatRegisterId(Register.Register), typeIndex(Register.Index));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
PublicSym32 &Public) {
P.format(" `{0}`", Public.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("flags = {0}, addr = {1}",
formatPublicSymFlags(P.getIndentLevel() + 9, Public.Flags),
formatSegmentOffset(Public.Segment, Public.Offset));
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, ProcRefSym &PR) {
P.format(" `{0}`", PR.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("module = {0}, sum name = {1}, offset = {2}", PR.Module,
PR.SumName, PR.SymOffset);
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, LabelSym &Label) {
P.format(" `{0}` (addr = {1})", Label.Name,
formatSegmentOffset(Label.Segment, Label.CodeOffset));
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("flags = {0}",
formatProcSymFlags(P.getIndentLevel() + 9, Label.Flags));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, LocalSym &Local) {
P.format(" `{0}`", Local.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
std::string FlagStr =
formatLocalSymFlags(P.getIndentLevel() + 9, Local.Flags);
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, ProcSym &Proc) {
P.format(" `{0}`", Proc.Name);
- AutoIndent Indent(P);
- P.formatLine("parent = {0}, addr = {1}, code size = {2}, end = {3}",
- Proc.Parent, formatSegmentOffset(Proc.Segment, Proc.CodeOffset),
- Proc.CodeSize, Proc.End);
+ AutoIndent Indent(P, 7);
+ ;
+ P.formatLine("parent = {0}, end = {1}, addr = {2}, code size = {3}",
+ Proc.Parent, Proc.End,
+ formatSegmentOffset(Proc.Segment, Proc.CodeOffset),
+ Proc.CodeSize);
P.formatLine("debug start = {0}, debug end = {1}, flags = {2}", Proc.DbgStart,
Proc.DbgEnd,
formatProcSymFlags(P.getIndentLevel() + 9, Proc.Flags));
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, CallerSym &Caller) {
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
for (const auto &I : Caller.Indices) {
P.formatLine("callee: {0}", typeIndex(I));
}
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
RegRelativeSym &RegRel) {
P.format(" `{0}`", RegRel.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, register = {1}, offset = {2}",
typeIndex(RegRel.Type), formatRegisterId(RegRel.Register),
RegRel.Offset);
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR,
ThreadLocalDataSym &Data) {
P.format(" `{0}`", Data.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("type = {0}, addr = {1}", typeIndex(Data.Type),
formatSegmentOffset(Data.Segment, Data.DataOffset));
return Error::success();
Error MinimalSymbolDumper::visitKnownRecord(CVSymbol &CVR, UDTSym &UDT) {
P.format(" `{0}`", UDT.Name);
- AutoIndent Indent(P);
+ AutoIndent Indent(P, 7);
+ ;
P.formatLine("original type = {0}", UDT.Type);
return Error::success();
}