Lines Matching defs:sym
35 Symbol *sym;
38 sym = symVector[p.first->second];
41 sym = reinterpret_cast<Symbol *>(make<SymbolUnion>());
42 symVector.push_back(sym);
45 sym->isUsedInRegularObj |= !file || isa<ObjFile>(file);
46 return {sym, p.second};
54 const Symbol *sym;
58 const Symbol *sym)
59 : src1(src1), src2(src2), sym(sym) {}
294 const object::Archive::Symbol &sym) {
298 replaceSymbol<LazyArchive>(s, file, sym);
300 file->fetch(sym);
304 file->fetch(sym);
306 replaceSymbol<LazyArchive>(s, file, sym);
348 static Defined *createBoundarySymbol(const Undefined &sym) {
350 sym.getName(), /*isec=*/nullptr, /*value=*/-1, /*isPrivateExtern=*/true,
354 static void handleSectionBoundarySymbol(const Undefined &sym, StringRef segSect,
379 assert(sym.isLive());
389 osec->sectionStartSymbols.push_back(createBoundarySymbol(sym));
391 osec->sectionEndSymbols.push_back(createBoundarySymbol(sym));
394 static void handleSegmentBoundarySymbol(const Undefined &sym, StringRef segName,
398 seg->segmentStartSymbols.push_back(createBoundarySymbol(sym));
400 seg->segmentEndSymbols.push_back(createBoundarySymbol(sym));
405 static bool recoverFromUndefinedSymbol(const Undefined &sym) {
407 StringRef name = sym.getName();
409 handleSectionBoundarySymbol(sym, name, Boundary::Start);
413 handleSectionBoundarySymbol(sym, name, Boundary::End);
417 handleSegmentBoundarySymbol(sym, name, Boundary::Start);
421 handleSegmentBoundarySymbol(sym, name, Boundary::End);
430 if (config->explicitDynamicLookups.count(sym.getName())) {
431 symtab->addDynamicLookup(sym.getName());
439 symtab->addDynamicLookup(sym.getName());
445 symtab->addDynamicLookup(sym.getName());
466 if (!config->deadStripDuplicates || duplicate.sym->isLive()) {
468 "duplicate symbol: " + toString(*duplicate.sym) + "\n>>> defined in ";
496 // file of sym.
497 static const Symbol *getAlternativeSpelling(const Undefined &sym,
501 if (sym.getFile() && sym.getFile()->kind() == InputFile::ObjKind) {
503 for (const Symbol *s : sym.getFile()->symbols)
525 StringRef name = sym.getName();
564 for (Symbol *sym : symtab->getSymbols())
565 if (dyn_cast<Undefined>(sym) == nullptr &&
566 name.equals_insensitive(sym->getName()))
567 return sym;
593 for (Symbol *sym : symtab->getSymbols())
594 if (canSuggestExternCForCXX(nameWithoutUnderscore, sym->getName())) {
595 s = sym;
608 static void reportUndefinedSymbol(const Undefined &sym,
614 message += ": " + toString(sym);
646 getAlternativeSpelling(sym, preHint, postHint)) {
673 void macho::treatUndefinedSymbol(const Undefined &sym, StringRef source) {
674 if (recoverFromUndefinedSymbol(sym))
677 undefs[&sym].otherReferences.push_back(source.str());
680 void macho::treatUndefinedSymbol(const Undefined &sym, const InputSection *isec,
682 if (recoverFromUndefinedSymbol(sym))
685 undefs[&sym].codeReferences.push_back({isec, offset});