Lines Matching defs:sym

34 void SymbolTable::wrap(Symbol *sym, Symbol *real, Symbol *wrap) {
36 int &idx1 = symMap[CachedHashStringRef(sym->getName())];
44 if (sym->isUsedInRegularObj)
47 sym->isUsedInRegularObj = true;
48 else if (!sym->isDefined())
49 // Now that all references to sym have been redirected to wrap, if there are
50 // no references to real (which has been redirected to sym), we only need to
51 // keep sym if it was defined, otherwise it's unused and can be dropped.
52 sym->isUsedInRegularObj = false;
58 // alias for sym, but that could degrade the user experience of some tools
59 // that can print out only one symbol for each location: sym is a preferred
61 memcpy(real, sym, sizeof(SymbolUnion));
80 Symbol *sym = symVector[p.first->second];
82 sym->setName(name);
83 sym->hasVersionSuffix = true;
85 return sym;
88 Symbol *sym = reinterpret_cast<Symbol *>(make<SymbolUnion>());
89 symVector.push_back(sym);
91 // *sym was not initialized by a constructor. Initialize all Symbol fields.
92 memset(sym, 0, sizeof(Symbol));
93 sym->setName(name);
94 sym->partition = 1;
95 sym->versionId = VER_NDX_GLOBAL;
97 sym->hasVersionSuffix = true;
98 return sym;
104 Symbol *sym = insert(newSym.getName());
105 if (sym->isDefined())
106 sym->checkDuplicate(newSym);
107 sym->resolve(newSym);
108 sym->isUsedInRegularObj = true;
109 return sym;
122 static bool canBeVersioned(const Symbol &sym) {
123 return sym.isDefined() || sym.isCommon() || sym.isLazy();
143 for (Symbol *sym : symVector)
144 if (canBeVersioned(*sym)) {
145 StringRef name = sym->getName();
157 (*demangledSyms)[demangled].push_back(sym);
166 if (Symbol *sym = find(ver.name))
167 if (canBeVersioned(*sym))
168 return {sym};
176 auto check = [&](const Symbol &sym) -> bool {
178 return !sym.hasVersionSuffix;
179 StringRef name = sym.getName();
187 for (Symbol *sym : p.second)
188 if (check(*sym))
189 res.push_back(sym);
193 for (Symbol *sym : symVector)
194 if (canBeVersioned(*sym) && check(*sym) && m.match(sym->getName()))
195 res.push_back(sym);
207 for (Symbol *sym : syms)
208 sym->inDynamicList = true;
229 for (Symbol *sym : syms) {
234 sym->getName().contains('@'))
238 if (!sym->versionScriptAssigned) {
239 sym->versionScriptAssigned = true;
240 sym->versionId = versionId;
242 if (sym->versionId == versionId)
246 getName(sym->versionId) + " to " + getName(versionId));
256 for (Symbol *sym : findAllByVersion(ver, includeNonDefault))
257 if (!sym->versionScriptAssigned) {
258 sym->versionScriptAssigned = true;
259 sym->versionId = versionId;
326 for (Symbol *sym : symVector)
327 if (sym->hasVersionSuffix)
328 sym->parseSymbolVersion();