}
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();
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
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) {
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
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();