Lines Matching refs:Sym
228 static bool isAArch64MappingSymbol(const Symbol &Sym) { in isAArch64MappingSymbol() argument
229 if (Sym.Binding != STB_LOCAL || Sym.Type != STT_NOTYPE || in isAArch64MappingSymbol()
230 Sym.getShndx() == SHN_UNDEF) in isAArch64MappingSymbol()
232 StringRef Name = Sym.Name; in isAArch64MappingSymbol()
238 static bool isArmMappingSymbol(const Symbol &Sym) { in isArmMappingSymbol() argument
239 if (Sym.Binding != STB_LOCAL || Sym.Type != STT_NOTYPE || in isArmMappingSymbol()
240 Sym.getShndx() == SHN_UNDEF) in isArmMappingSymbol()
242 StringRef Name = Sym.Name; in isArmMappingSymbol()
250 static bool isRequiredByABISymbol(const Object &Obj, const Symbol &Sym) { in isRequiredByABISymbol() argument
254 return Obj.isRelocatable() && isAArch64MappingSymbol(Sym); in isRequiredByABISymbol()
257 return Obj.isRelocatable() && isArmMappingSymbol(Sym); in isRequiredByABISymbol()
263 static bool isUnneededSymbol(const Symbol &Sym) { in isUnneededSymbol() argument
264 return !Sym.Referenced && in isUnneededSymbol()
265 (Sym.Binding == STB_LOCAL || Sym.getShndx() == SHN_UNDEF) && in isUnneededSymbol()
266 Sym.Type != STT_SECTION; in isUnneededSymbol()
276 Obj.SymbolTable->updateSymbols([&](Symbol &Sym) { in updateAndRemoveSymbols() argument
279 if (!Sym.isCommon() && Sym.getShndx() != SHN_UNDEF && in updateAndRemoveSymbols()
281 (Sym.Visibility == STV_HIDDEN || Sym.Visibility == STV_INTERNAL)) || in updateAndRemoveSymbols()
282 Config.SymbolsToLocalize.matches(Sym.Name))) in updateAndRemoveSymbols()
283 Sym.Binding = STB_LOCAL; in updateAndRemoveSymbols()
296 !Config.SymbolsToKeepGlobal.matches(Sym.Name) && in updateAndRemoveSymbols()
297 Sym.getShndx() != SHN_UNDEF) in updateAndRemoveSymbols()
298 Sym.Binding = STB_LOCAL; in updateAndRemoveSymbols()
300 if (Config.SymbolsToGlobalize.matches(Sym.Name) && in updateAndRemoveSymbols()
301 Sym.getShndx() != SHN_UNDEF) in updateAndRemoveSymbols()
302 Sym.Binding = STB_GLOBAL; in updateAndRemoveSymbols()
305 if (Config.SymbolsToWeaken.matches(Sym.Name) && Sym.Binding != STB_LOCAL) in updateAndRemoveSymbols()
306 Sym.Binding = STB_WEAK; in updateAndRemoveSymbols()
308 if (Config.Weaken && Sym.Binding != STB_LOCAL && in updateAndRemoveSymbols()
309 Sym.getShndx() != SHN_UNDEF) in updateAndRemoveSymbols()
310 Sym.Binding = STB_WEAK; in updateAndRemoveSymbols()
312 const auto I = Config.SymbolsToRename.find(Sym.Name); in updateAndRemoveSymbols()
314 Sym.Name = std::string(I->getValue()); in updateAndRemoveSymbols()
316 if (!Config.SymbolsPrefix.empty() && Sym.Type != STT_SECTION) in updateAndRemoveSymbols()
317 Sym.Name = (Config.SymbolsPrefix + Sym.Name).str(); in updateAndRemoveSymbols()
329 auto RemoveSymbolsPred = [&](const Symbol &Sym) { in updateAndRemoveSymbols() argument
330 if (Config.SymbolsToKeep.matches(Sym.Name) || in updateAndRemoveSymbols()
331 (ELFConfig.KeepFileSymbols && Sym.Type == STT_FILE)) in updateAndRemoveSymbols()
334 if (Config.SymbolsToRemove.matches(Sym.Name)) in updateAndRemoveSymbols()
340 if (isRequiredByABISymbol(Obj, Sym)) in updateAndRemoveSymbols()
343 if (Config.StripDebug && Sym.Type == STT_FILE) in updateAndRemoveSymbols()
348 StringRef(Sym.Name).startswith(".L"))) && in updateAndRemoveSymbols()
349 Sym.Binding == STB_LOCAL && Sym.getShndx() != SHN_UNDEF && in updateAndRemoveSymbols()
350 Sym.Type != STT_FILE && Sym.Type != STT_SECTION) in updateAndRemoveSymbols()
354 Config.UnneededSymbolsToRemove.matches(Sym.Name)) && in updateAndRemoveSymbols()
355 (!Obj.isRelocatable() || isUnneededSymbol(Sym))) in updateAndRemoveSymbols()
359 if (!Config.OnlySection.empty() && !Sym.Referenced && in updateAndRemoveSymbols()
360 Sym.getShndx() == SHN_UNDEF) in updateAndRemoveSymbols()