summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-12-08 15:56:33 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-12-08 15:56:33 +0000
commitc65aee64ec010aaf25487fd18aa021132bb6fd72 (patch)
tree15f6edb143359bdd051f27e433456528a13b8c6e
parent58ee3b786db033d9564dbc5601fed071bada382f (diff)
downloadbcm5719-llvm-c65aee64ec010aaf25487fd18aa021132bb6fd72.tar.gz
bcm5719-llvm-c65aee64ec010aaf25487fd18aa021132bb6fd72.zip
Add two helper functions. NFC.
llvm-svn: 289064
-rw-r--r--lld/ELF/SymbolTable.cpp23
-rw-r--r--lld/ELF/SymbolTable.h2
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();
OpenPOWER on IntegriCloud