diff options
author | Reid Kleckner <rnk@google.com> | 2017-06-19 16:54:51 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-06-19 16:54:51 +0000 |
commit | 18d90e17ad8ac9d570e3d93df0a38a1e2dd1c08a (patch) | |
tree | bf4f2cee827c30212b07e2aec43fdf323ff6325c /llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp | |
parent | daa9c0e403d5e5e64a1a7d062bab8d3e0ee7edbd (diff) | |
download | llvm-18d90e17ad8ac9d570e3d93df0a38a1e2dd1c08a.zip llvm-18d90e17ad8ac9d570e3d93df0a38a1e2dd1c08a.tar.gz llvm-18d90e17ad8ac9d570e3d93df0a38a1e2dd1c08a.tar.bz2 |
[CodeView] Fix dumping of public symbol record flags
I noticed nonsensical type information while dumping PDBs produced by
MSVC.
llvm-svn: 305708
Diffstat (limited to 'llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp')
-rw-r--r-- | llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp b/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp index ba3a2ab..2f78676 100644 --- a/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp +++ b/llvm/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) { @@ -298,7 +307,7 @@ template <> void SymbolRecordImpl<RegisterSym>::map(IO &IO) { } template <> void SymbolRecordImpl<PublicSym32>::map(IO &IO) { - IO.mapRequired("Type", Symbol.Index); + IO.mapRequired("Flags", Symbol.Flags); IO.mapRequired("Seg", Symbol.Segment); IO.mapRequired("Off", Symbol.Offset); IO.mapRequired("Name", Symbol.Name); |