aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-06-19 16:54:51 +0000
committerReid Kleckner <rnk@google.com>2017-06-19 16:54:51 +0000
commit18d90e17ad8ac9d570e3d93df0a38a1e2dd1c08a (patch)
treebf4f2cee827c30212b07e2aec43fdf323ff6325c /llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
parentdaa9c0e403d5e5e64a1a7d062bab8d3e0ee7edbd (diff)
downloadllvm-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.cpp11
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);