diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-12-08 15:56:33 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-12-08 15:56:33 +0000 |
commit | c65aee64ec010aaf25487fd18aa021132bb6fd72 (patch) | |
tree | 15f6edb143359bdd051f27e433456528a13b8c6e | |
parent | 58ee3b786db033d9564dbc5601fed071bada382f (diff) | |
download | bcm5719-llvm-c65aee64ec010aaf25487fd18aa021132bb6fd72.tar.gz bcm5719-llvm-c65aee64ec010aaf25487fd18aa021132bb6fd72.zip |
Add two helper functions. NFC.
llvm-svn: 289064
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 23 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.h | 2 |
2 files changed, 18 insertions, 7 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 1927f7aae8c..d49824cae40 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -594,6 +594,15 @@ ArrayRef<SymbolBody *> SymbolTable<ELFT>::findDemangled(StringRef Name) { } template <class ELFT> +std::vector<SymbolBody *> SymbolTable<ELFT>::find(SymbolVersion Ver) { + if (Ver.IsExternCpp) + return findDemangled(Ver.Name); + std::vector<SymbolBody *> Syms; + Syms.push_back(find(Ver.Name)); + return Syms; +} + +template <class ELFT> std::vector<SymbolBody *> SymbolTable<ELFT>::findAllDemangled(StringRef GlobPat) { initDemangledSyms(); @@ -607,6 +616,11 @@ SymbolTable<ELFT>::findAllDemangled(StringRef GlobPat) { return Res; } +template <class ELFT> +std::vector<SymbolBody *> SymbolTable<ELFT>::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<ELFT>::assignExactVersion(SymbolVersion Ver, uint16_t VersionId return; // Get a list of symbols which we need to assign the version to. - std::vector<SymbolBody *> Syms; - if (Ver.IsExternCpp) - Syms = findDemangled(Ver.Name); - else - Syms.push_back(find(Ver.Name)); + std::vector<SymbolBody *> Syms = find(Ver); // Assign the version. for (SymbolBody *B : Syms) { @@ -659,8 +669,7 @@ void SymbolTable<ELFT>::assignWildcardVersion(SymbolVersion Ver, uint16_t VersionId) { if (!Ver.HasWildcard) return; - std::vector<SymbolBody *> Syms = - Ver.IsExternCpp ? findAllDemangled(Ver.Name) : findAll(Ver.Name); + std::vector<SymbolBody *> 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 8c97a00b4a0..5f72624c6f2 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -99,7 +99,9 @@ private: InputFile *File); ArrayRef<SymbolBody *> findDemangled(StringRef Name); + std::vector<SymbolBody *> find(SymbolVersion Ver); std::vector<SymbolBody *> findAllDemangled(StringRef GlobPat); + std::vector<SymbolBody *> findAll(SymbolVersion Ver); void initDemangledSyms(); void handleAnonymousVersion(); |