diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
| commit | 08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (patch) | |
| tree | 80108f0f128657f8623f8f66ad9735b4d88e7b47 /lib/ObjectYAML/CodeViewYAMLSymbols.cpp | |
| parent | 7c7aba6e5fef47a01a136be655b0a92cfd7090f6 (diff) | |
Notes
Diffstat (limited to 'lib/ObjectYAML/CodeViewYAMLSymbols.cpp')
| -rw-r--r-- | lib/ObjectYAML/CodeViewYAMLSymbols.cpp | 57 | 
1 files changed, 33 insertions, 24 deletions
diff --git a/lib/ObjectYAML/CodeViewYAMLSymbols.cpp b/lib/ObjectYAML/CodeViewYAMLSymbols.cpp index ba3a2abe2097..83f3d55b8e55 100644 --- a/lib/ObjectYAML/CodeViewYAMLSymbols.cpp +++ b/lib/ObjectYAML/CodeViewYAMLSymbols.cpp @@ -40,6 +40,7 @@ LLVM_YAML_DECLARE_ENUM_TRAITS(FrameCookieKind)  LLVM_YAML_DECLARE_BITSET_TRAITS(CompileSym2Flags)  LLVM_YAML_DECLARE_BITSET_TRAITS(CompileSym3Flags)  LLVM_YAML_DECLARE_BITSET_TRAITS(ExportFlags) +LLVM_YAML_DECLARE_BITSET_TRAITS(PublicSymFlags)  LLVM_YAML_DECLARE_BITSET_TRAITS(LocalSymFlags)  LLVM_YAML_DECLARE_BITSET_TRAITS(ProcSymFlags)  LLVM_YAML_DECLARE_BITSET_TRAITS(FrameProcedureOptions) @@ -93,6 +94,14 @@ void ScalarBitSetTraits<ExportFlags>::bitset(IO &io, ExportFlags &Flags) {    }  } +void ScalarBitSetTraits<PublicSymFlags>::bitset(IO &io, PublicSymFlags &Flags) { +  auto FlagNames = getProcSymFlagNames(); +  for (const auto &E : FlagNames) { +    io.bitSetCase(Flags, E.Name.str().c_str(), +                  static_cast<PublicSymFlags>(E.Value)); +  } +} +  void ScalarBitSetTraits<LocalSymFlags>::bitset(IO &io, LocalSymFlags &Flags) {    auto FlagNames = getLocalFlagNames();    for (const auto &E : FlagNames) { @@ -277,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);  } @@ -298,9 +306,9 @@ template <> void SymbolRecordImpl<RegisterSym>::map(IO &IO) {  }  template <> void SymbolRecordImpl<PublicSym32>::map(IO &IO) { -  IO.mapRequired("Type", Symbol.Index); -  IO.mapRequired("Seg", Symbol.Segment); -  IO.mapRequired("Off", Symbol.Offset); +  IO.mapRequired("Flags", Symbol.Flags); +  IO.mapOptional("Offset", Symbol.Offset, 0U); +  IO.mapOptional("Segment", Symbol.Segment, uint16_t(0));    IO.mapRequired("Name", Symbol.Name);  } @@ -316,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  } @@ -359,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); @@ -419,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);  } @@ -432,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); @@ -478,14 +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("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);  }  }  | 
