aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/BinaryFormat/Dwarf.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-03-21 11:46:37 +0000
committerPavel Labath <labath@google.com>2018-03-21 11:46:37 +0000
commit9025f9559d778f425dbcc7f55917a6dccbb7d2f1 (patch)
treeb8dcc62f78e306eced611a27b9b0365daa6172b8 /llvm/lib/BinaryFormat/Dwarf.cpp
parentecc8aee652d66dd2a9db575a66d13b477582bcb2 (diff)
downloadllvm-9025f9559d778f425dbcc7f55917a6dccbb7d2f1.zip
llvm-9025f9559d778f425dbcc7f55917a6dccbb7d2f1.tar.gz
llvm-9025f9559d778f425dbcc7f55917a6dccbb7d2f1.tar.bz2
[dwarf] Unify unknown dwarf enum formatting code
Summary: We have had at least three pieces of code (in DWARFAbbreviationDeclaration, DWARFAcceleratorTable and DWARFDie) that have hand-rolled support for dumping unknown dwarf enum values. While not terrible, they are a bit distracting and enable small differences to creep in (Unknown_ffff vs. Unknown_0xffff). I ended up needing to add a fourth place (DWARFVerifier), so it seems it would be a good time to centralize. This patch creates an alternative to the XXXString dumping functions in the BinaryFormat library, which formats an unknown value as DW_TYPE_unknown_1234, instead of just an empty string. It is based on the formatv function, as that allows us to avoid materializing the string for unknown values (and because this way I don't have to invent a name for the new functions :P). In this patch I add formatters for dwarf attributes, forms, tags, and index attributes as these are the ones in use currently, but adding other enums is straight-forward. Reviewers: dblaikie, JDevlieghere, aprantl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D44570 llvm-svn: 328090
Diffstat (limited to 'llvm/lib/BinaryFormat/Dwarf.cpp')
-rw-r--r--llvm/lib/BinaryFormat/Dwarf.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/BinaryFormat/Dwarf.cpp b/llvm/lib/BinaryFormat/Dwarf.cpp
index 1a809a1..3a97dde 100644
--- a/llvm/lib/BinaryFormat/Dwarf.cpp
+++ b/llvm/lib/BinaryFormat/Dwarf.cpp
@@ -675,3 +675,8 @@ bool llvm::dwarf::isValidFormForVersion(Form F, unsigned Version,
}
return ExtensionsOk;
}
+
+const char llvm::dwarf::EnumTraits<Attribute>::Type[];
+const char llvm::dwarf::EnumTraits<Form>::Type[];
+const char llvm::dwarf::EnumTraits<Index>::Type[];
+const char llvm::dwarf::EnumTraits<Tag>::Type[];