From: Rafael Espindola Date: Thu, 8 Dec 2016 15:56:33 +0000 (+0000) Subject: Add two helper functions. NFC. X-Git-Tag: llvmorg-4.0.0-rc1~2639 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c65aee64ec010aaf25487fd18aa021132bb6fd72;p=platform%2Fupstream%2Fllvm.git Add two helper functions. NFC. llvm-svn: 289064 --- diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 1927f7a..d49824ca 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -594,6 +594,15 @@ ArrayRef SymbolTable::findDemangled(StringRef Name) { } template +std::vector SymbolTable::find(SymbolVersion Ver) { + if (Ver.IsExternCpp) + return findDemangled(Ver.Name); + std::vector Syms; + Syms.push_back(find(Ver.Name)); + return Syms; +} + +template std::vector SymbolTable::findAllDemangled(StringRef GlobPat) { initDemangledSyms(); @@ -607,6 +616,11 @@ SymbolTable::findAllDemangled(StringRef GlobPat) { return Res; } +template +std::vector SymbolTable::findAll(SymbolVersion Ver) { + return Ver.IsExternCpp ? findAllDemangled(Ver.Name) : findAll(Ver.Name); +} + // If there's only one anonymous version definition in a version // script file, the script does not actually define any symbol version, // but just specifies symbols visibilities. We assume that the script was @@ -633,11 +647,7 @@ void SymbolTable::assignExactVersion(SymbolVersion Ver, uint16_t VersionId return; // Get a list of symbols which we need to assign the version to. - std::vector Syms; - if (Ver.IsExternCpp) - Syms = findDemangled(Ver.Name); - else - Syms.push_back(find(Ver.Name)); + std::vector Syms = find(Ver); // Assign the version. for (SymbolBody *B : Syms) { @@ -659,8 +669,7 @@ void SymbolTable::assignWildcardVersion(SymbolVersion Ver, uint16_t VersionId) { if (!Ver.HasWildcard) return; - std::vector Syms = - Ver.IsExternCpp ? findAllDemangled(Ver.Name) : findAll(Ver.Name); + std::vector Syms = findAll(Ver); // Exact matching takes precendence over fuzzy matching, // so we set a version to a symbol only if no version has been assigned diff --git a/lld/ELF/SymbolTable.h b/lld/ELF/SymbolTable.h index 8c97a00..5f72624 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -99,7 +99,9 @@ private: InputFile *File); ArrayRef findDemangled(StringRef Name); + std::vector find(SymbolVersion Ver); std::vector findAllDemangled(StringRef GlobPat); + std::vector findAll(SymbolVersion Ver); void initDemangledSyms(); void handleAnonymousVersion();