Lines Matching defs:sym
32 void SymbolTable::wrap(Symbol *sym, Symbol *real, Symbol *wrap) {
34 int &idx1 = symMap[CachedHashStringRef(sym->getName())];
42 if (sym->isUsedInRegularObj)
45 sym->isUsedInRegularObj = true;
46 else if (!sym->isDefined())
47 // Now that all references to sym have been redirected to wrap, if there are
48 // no references to real (which has been redirected to sym), we only need to
49 // keep sym if it was defined, otherwise it's unused and can be dropped.
50 sym->isUsedInRegularObj = false;
56 // alias for sym, but that could degrade the user experience of some tools
57 // that can print out only one symbol for each location: sym is a preferred
59 memcpy(static_cast<void *>(real), sym, sizeof(SymbolUnion));
78 Symbol *sym = symVector[p.first->second];
80 sym->setName(name);
81 sym->hasVersionSuffix = true;
83 return sym;
86 Symbol *sym = reinterpret_cast<Symbol *>(make<SymbolUnion>());
87 symVector.push_back(sym);
89 // *sym was not initialized by a constructor. Initialize all Symbol fields.
90 memset(static_cast<void *>(sym), 0, sizeof(Symbol));
91 sym->setName(name);
92 sym->partition = 1;
93 sym->versionId = VER_NDX_GLOBAL;
95 sym->hasVersionSuffix = true;
96 return sym;
102 Symbol *sym = insert(newSym.getName());
103 if (sym->isDefined())
104 sym->checkDuplicate(ctx, newSym);
105 sym->resolve(ctx, newSym);
106 sym->isUsedInRegularObj = true;
107 return sym;
120 static bool canBeVersioned(const Symbol &sym) {
121 return sym.isDefined() || sym.isCommon() || sym.isLazy();
141 for (Symbol *sym : symVector)
142 if (canBeVersioned(*sym)) {
143 StringRef name = sym->getName();
155 (*demangledSyms)[demangled].push_back(sym);
164 if (Symbol *sym = find(ver.name))
165 if (canBeVersioned(*sym))
166 return {sym};
174 auto check = [&](const Symbol &sym) -> bool {
176 return !sym.hasVersionSuffix;
177 StringRef name = sym.getName();
185 for (Symbol *sym : p.second)
186 if (check(*sym))
187 res.push_back(sym);
191 for (Symbol *sym : symVector)
192 if (canBeVersioned(*sym) && check(*sym) && m.match(sym->getName()))
193 res.push_back(sym);
205 for (Symbol *sym : syms)
206 sym->exportDynamic = sym->inDynamicList = true;
227 for (Symbol *sym : syms) {
232 sym->getName().contains('@'))
236 if (!sym->versionScriptAssigned) {
237 sym->versionScriptAssigned = true;
238 sym->versionId = versionId;
240 if (sym->versionId == versionId)
244 << getName(sym->versionId) << " to " << getName(versionId);
254 for (Symbol *sym : findAllByVersion(ver, includeNonDefault))
255 if (!sym->versionScriptAssigned) {
256 sym->versionScriptAssigned = true;
257 sym->versionId = versionId;