[dsymutil] Upstream unobfuscation logic.
The unobufscation support for BCSymbolMaps was the last piece of code
that hasn't been upstreamed yet. This patch contains a reworked version
of the existing code and relevant tests.
Differential revision: https://reviews.llvm.org/D56346
llvm-svn: 350580
diff --git a/llvm/tools/dsymutil/NonRelocatableStringpool.cpp b/llvm/tools/dsymutil/NonRelocatableStringpool.cpp
index d82ff84..b8392a1 100644
--- a/llvm/tools/dsymutil/NonRelocatableStringpool.cpp
+++ b/llvm/tools/dsymutil/NonRelocatableStringpool.cpp
@@ -16,6 +16,8 @@
if (S.empty() && !Strings.empty())
return EmptyString;
+ if (Translator)
+ S = Translator(S);
auto I = Strings.insert({S, DwarfStringPoolEntry()});
auto &Entry = I.first->second;
if (I.second || !Entry.isIndexed()) {
@@ -29,6 +31,10 @@
StringRef NonRelocatableStringpool::internString(StringRef S) {
DwarfStringPoolEntry Entry{nullptr, 0, DwarfStringPoolEntry::NotIndexed};
+
+ if (Translator)
+ S = Translator(S);
+
auto InsertResult = Strings.insert({S, Entry});
return InsertResult.first->getKey();
}