diff options
-rw-r--r-- | lld/test/COFF/Inputs/pdb1.yaml | 4 | ||||
-rw-r--r-- | llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp | 46 | ||||
-rw-r--r-- | llvm/test/DebugInfo/COFF/globals.ll | 38 | ||||
-rw-r--r-- | llvm/test/DebugInfo/PDB/pdb-yaml-symbols.test | 3 |
4 files changed, 62 insertions, 29 deletions
diff --git a/lld/test/COFF/Inputs/pdb1.yaml b/lld/test/COFF/Inputs/pdb1.yaml index 566f2da003c..90905ae191e 100644 --- a/lld/test/COFF/Inputs/pdb1.yaml +++ b/lld/test/COFF/Inputs/pdb1.yaml @@ -34,14 +34,10 @@ sections: Records: - Kind: S_GPROC32_ID ProcSym: - PtrParent: 0 - PtrEnd: 0 - PtrNext: 0 CodeSize: 14 DbgStart: 4 DbgEnd: 9 FunctionType: 4101 - Segment: 0 Flags: [ ] DisplayName: main - Kind: S_FRAMEPROC diff --git a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp b/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp index edabe415fd0..83f3d55b8e5 100644 --- a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp +++ b/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp @@ -286,16 +286,15 @@ template <> void SymbolRecordImpl<ExportSym>::map(IO &IO) { } template <> void SymbolRecordImpl<ProcSym>::map(IO &IO) { - // TODO: Print the linkage name - - IO.mapRequired("PtrParent", Symbol.Parent); - IO.mapRequired("PtrEnd", Symbol.End); - IO.mapRequired("PtrNext", Symbol.Next); + IO.mapOptional("PtrParent", Symbol.Parent, 0U); + IO.mapOptional("PtrEnd", Symbol.End, 0U); + IO.mapOptional("PtrNext", Symbol.Next, 0U); IO.mapRequired("CodeSize", Symbol.CodeSize); IO.mapRequired("DbgStart", Symbol.DbgStart); IO.mapRequired("DbgEnd", Symbol.DbgEnd); IO.mapRequired("FunctionType", Symbol.FunctionType); - IO.mapRequired("Segment", Symbol.Segment); + IO.mapOptional("Offset", Symbol.CodeOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("Flags", Symbol.Flags); IO.mapRequired("DisplayName", Symbol.Name); } @@ -308,8 +307,8 @@ template <> void SymbolRecordImpl<RegisterSym>::map(IO &IO) { template <> void SymbolRecordImpl<PublicSym32>::map(IO &IO) { IO.mapRequired("Flags", Symbol.Flags); - IO.mapRequired("Seg", Symbol.Segment); - IO.mapRequired("Off", Symbol.Offset); + IO.mapOptional("Offset", Symbol.Offset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("Name", Symbol.Name); } @@ -325,8 +324,8 @@ template <> void SymbolRecordImpl<EnvBlockSym>::map(IO &IO) { } template <> void SymbolRecordImpl<InlineSiteSym>::map(IO &IO) { - IO.mapRequired("PtrParent", Symbol.Parent); - IO.mapRequired("PtrEnd", Symbol.End); + IO.mapOptional("PtrParent", Symbol.Parent, 0U); + IO.mapOptional("PtrEnd", Symbol.End, 0U); IO.mapRequired("Inlinee", Symbol.Inlinee); // TODO: The binary annotations } @@ -368,17 +367,17 @@ template <> void SymbolRecordImpl<DefRangeRegisterRelSym>::map(IO &IO) { } template <> void SymbolRecordImpl<BlockSym>::map(IO &IO) { - // TODO: Print the linkage name - IO.mapRequired("PtrParent", Symbol.Parent); - IO.mapRequired("PtrEnd", Symbol.End); + IO.mapOptional("PtrParent", Symbol.Parent, 0U); + IO.mapOptional("PtrEnd", Symbol.End, 0U); IO.mapRequired("CodeSize", Symbol.CodeSize); - IO.mapRequired("Segment", Symbol.Segment); + IO.mapOptional("Offset", Symbol.CodeOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("BlockName", Symbol.Name); } template <> void SymbolRecordImpl<LabelSym>::map(IO &IO) { - // TODO: Print the linkage name - IO.mapRequired("Segment", Symbol.Segment); + IO.mapOptional("Offset", Symbol.CodeOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("Flags", Symbol.Flags); IO.mapRequired("Flags", Symbol.Flags); IO.mapRequired("DisplayName", Symbol.Name); @@ -428,8 +427,8 @@ template <> void SymbolRecordImpl<FrameProcSym>::map(IO &IO) { } template <> void SymbolRecordImpl<CallSiteInfoSym>::map(IO &IO) { - // TODO: Map Linkage Name - IO.mapRequired("Segment", Symbol.Segment); + IO.mapOptional("Offset", Symbol.CodeOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("Type", Symbol.Type); } @@ -441,14 +440,13 @@ template <> void SymbolRecordImpl<FileStaticSym>::map(IO &IO) { } template <> void SymbolRecordImpl<HeapAllocationSiteSym>::map(IO &IO) { - // TODO: Map Linkage Name - IO.mapRequired("Segment", Symbol.Segment); + IO.mapOptional("Offset", Symbol.CodeOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("CallInstructionSize", Symbol.CallInstructionSize); IO.mapRequired("Type", Symbol.Type); } template <> void SymbolRecordImpl<FrameCookieSym>::map(IO &IO) { - // TODO: Map Linkage Name IO.mapRequired("Register", Symbol.Register); IO.mapRequired("CookieKind", Symbol.CookieKind); IO.mapRequired("Flags", Symbol.Flags); @@ -487,16 +485,16 @@ template <> void SymbolRecordImpl<ConstantSym>::map(IO &IO) { } template <> void SymbolRecordImpl<DataSym>::map(IO &IO) { - // TODO: Map linkage name IO.mapRequired("Type", Symbol.Type); - IO.mapOptional("DataOffset", Symbol.DataOffset, 0U); + IO.mapOptional("Offset", Symbol.DataOffset, 0U); IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("DisplayName", Symbol.Name); } template <> void SymbolRecordImpl<ThreadLocalDataSym>::map(IO &IO) { - // TODO: Map linkage name IO.mapRequired("Type", Symbol.Type); + IO.mapOptional("Offset", Symbol.DataOffset, 0U); + IO.mapOptional("Segment", Symbol.Segment, uint16_t(0)); IO.mapRequired("DisplayName", Symbol.Name); } } diff --git a/llvm/test/DebugInfo/COFF/globals.ll b/llvm/test/DebugInfo/COFF/globals.ll index aadf6ab557f..0d1b9413e3d 100644 --- a/llvm/test/DebugInfo/COFF/globals.ll +++ b/llvm/test/DebugInfo/COFF/globals.ll @@ -1,5 +1,6 @@ ; RUN: llc < %s | FileCheck %s --check-prefix=ASM ; RUN: llc < %s -filetype=obj | llvm-readobj - -codeview | FileCheck %s --check-prefix=OBJ +; RUN: llc < %s -filetype=obj | obj2yaml | FileCheck %s --check-prefix=YAML ; C++ source to regenerate: ; $ cat t.cpp @@ -109,6 +110,43 @@ ; OBJ: ] ; OBJ: ] +; YAML-LABEL: - Name: '.debug$S' +; YAML: Subsections: +; YAML: - !Symbols +; YAML: Records: +; YAML: - Kind: S_COMPILE3 +; YAML: Compile3Sym: +; YAML: - !Symbols +; YAML: Records: +; YAML: - Kind: S_LDATA32 +; YAML: DataSym: +; YAML-NOT: Segment +; YAML: Type: 116 +; YAML-NOT: Segment +; YAML: DisplayName: first +; YAML-NOT: Segment +; YAML: - Kind: S_GTHREAD32 +; YAML: ThreadLocalDataSym: +; YAML: Type: 4097 +; YAML: DisplayName: middle +; YAML: - Kind: S_GDATA32 +; YAML: DataSym: +; YAML-NOT: Segment +; YAML: Type: 116 +; YAML-NOT: Offset +; YAML-NOT: Segment +; YAML: DisplayName: last +; YAML-NOT: Segment + +; The missing offsets are represented as relocations against this section. +; YAML: Relocations: +; YAML: - VirtualAddress: 92 +; YAML: SymbolName: '?first@@3HA' +; YAML: Type: IMAGE_REL_AMD64_SECREL +; YAML: - VirtualAddress: 96 +; YAML: SymbolName: '?first@@3HA' +; YAML: Type: IMAGE_REL_AMD64_SECTION + ; ModuleID = 't.cpp' source_filename = "t.cpp" target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" diff --git a/llvm/test/DebugInfo/PDB/pdb-yaml-symbols.test b/llvm/test/DebugInfo/PDB/pdb-yaml-symbols.test index 574065176b5..7afa1c3b2a7 100644 --- a/llvm/test/DebugInfo/PDB/pdb-yaml-symbols.test +++ b/llvm/test/DebugInfo/PDB/pdb-yaml-symbols.test @@ -55,6 +55,7 @@ YAML: CodeSize: 10 YAML: DbgStart: 3 YAML: DbgEnd: 8 YAML: FunctionType: 4097 +YAML: Offset: 16 YAML: Segment: 1 YAML: Flags: [ HasFP ] YAML: DisplayName: main @@ -178,4 +179,4 @@ YAML: Rva: 20480 YAML: Length: 8 YAML: Characteristics: 1107296320 YAML: Name: .reloc -YAML: ...
\ No newline at end of file +YAML: ... |