Lines Matching refs:sym
91 for (const Symbol *sym : symtab->getSymbols()) { in writeBody() local
92 if (sym->isLive()) { in writeBody()
93 if (sym->isExported() && sym->isTLS() && isa<DefinedData>(sym)) { in writeBody()
94 exportInfo.push_back(sym); in writeBody()
96 if (sym->isUndefWeak()) { in writeBody()
97 importInfo.push_back(sym); in writeBody()
106 for (const Symbol *sym : exportInfo) { in writeBody() local
107 LLVM_DEBUG(llvm::dbgs() << "export info: " << toString(*sym) << "\n"); in writeBody()
108 StringRef name = sym->getName(); in writeBody()
109 if (auto *f = dyn_cast<DefinedFunction>(sym)) { in writeBody()
115 writeUleb128(sub.os, sym->flags, "sym flags"); in writeBody()
125 for (const Symbol *sym : importInfo) { in writeBody() local
126 LLVM_DEBUG(llvm::dbgs() << "imports info: " << toString(*sym) << "\n"); in writeBody()
127 StringRef module = sym->importModule.value_or(defaultModule); in writeBody()
128 StringRef name = sym->importName.value_or(sym->getName()); in writeBody()
131 writeUleb128(sub.os, sym->flags, "sym flags"); in writeBody()
170 void ImportSection::addGOTEntry(Symbol *sym) { in addGOTEntry() argument
172 if (sym->hasGOTIndex()) in addGOTEntry()
174 LLVM_DEBUG(dbgs() << "addGOTEntry: " << toString(*sym) << "\n"); in addGOTEntry()
175 sym->setGOTIndex(numImportedGlobals++); in addGOTEntry()
180 sym->forceExport = true; in addGOTEntry()
182 gotSymbols.push_back(sym); in addGOTEntry()
185 void ImportSection::addImport(Symbol *sym) { in addImport() argument
187 StringRef module = sym->importModule.value_or(defaultModule); in addImport()
188 StringRef name = sym->importName.value_or(sym->getName()); in addImport()
189 if (auto *f = dyn_cast<FunctionSymbol>(sym)) { in addImport()
193 importedSymbols.emplace_back(sym); in addImport()
198 } else if (auto *g = dyn_cast<GlobalSymbol>(sym)) { in addImport()
202 importedSymbols.emplace_back(sym); in addImport()
207 } else if (auto *t = dyn_cast<TagSymbol>(sym)) { in addImport()
211 importedSymbols.emplace_back(sym); in addImport()
217 assert(TableSymbol::classof(sym)); in addImport()
218 auto *table = cast<TableSymbol>(sym); in addImport()
222 importedSymbols.emplace_back(sym); in addImport()
255 for (const Symbol *sym : importedSymbols) { in writeBody() local
257 import.Field = sym->importName.value_or(sym->getName()); in writeBody()
258 import.Module = sym->importModule.value_or(defaultModule); in writeBody()
260 if (auto *functionSym = dyn_cast<FunctionSymbol>(sym)) { in writeBody()
263 } else if (auto *globalSym = dyn_cast<GlobalSymbol>(sym)) { in writeBody()
266 } else if (auto *tagSym = dyn_cast<TagSymbol>(sym)) { in writeBody()
270 auto *tableSym = cast<TableSymbol>(sym); in writeBody()
277 for (const Symbol *sym : gotSymbols) { in writeBody() local
282 if (isa<DataSymbol>(sym)) in writeBody()
286 import.Field = sym->getName(); in writeBody()
391 for (Symbol *sym : internalGotSymbols) in assignIndexes()
392 sym->setGOTIndex(globalIndex++); in assignIndexes()
402 void GlobalSection::addInternalGOTEntry(Symbol *sym) { in addInternalGOTEntry() argument
404 if (sym->requiresGOT) in addInternalGOTEntry()
406 LLVM_DEBUG(dbgs() << "addInternalGOTEntry: " << sym->getName() << " " in addInternalGOTEntry()
407 << toString(sym->kind()) << "\n"); in addInternalGOTEntry()
408 sym->requiresGOT = true; in addInternalGOTEntry()
409 if (auto *F = dyn_cast<FunctionSymbol>(sym)) { in addInternalGOTEntry()
413 internalGotSymbols.push_back(sym); in addInternalGOTEntry()
424 for (const Symbol *sym : internalGotSymbols) { in generateRelocationCode() local
425 if (TLS != sym->isTLS()) in generateRelocationCode()
428 if (auto *d = dyn_cast<DefinedData>(sym)) { in generateRelocationCode()
431 if (sym->isTLS()) in generateRelocationCode()
440 } else if (auto *f = dyn_cast<FunctionSymbol>(sym)) { in generateRelocationCode()
451 assert(isa<UndefinedData>(sym)); in generateRelocationCode()
456 writeUleb128(os, sym->getGOTIndex(), "got_entry"); in generateRelocationCode()
470 for (const Symbol *sym : internalGotSymbols) { in writeBody() local
472 if (!sym->isStub) { in writeBody()
476 if (!config->extendedConst && config->isPic && !sym->isTLS()) in writeBody()
480 if (config->sharedMemory && sym->isTLS()) in writeBody()
486 if (config->extendedConst && config->isPic && !sym->isTLS() && in writeBody()
487 isa<DefinedData>(sym)) { in writeBody()
490 auto *d = cast<DefinedData>(sym); in writeBody()
501 if (auto *d = dyn_cast<DefinedData>(sym)) in writeBody()
503 else if (auto *f = dyn_cast<FunctionSymbol>(sym)) in writeBody()
506 assert(isa<UndefinedData>(sym)); in writeBody()
512 for (const DefinedData *sym : dataAddressGlobals) { in writeBody() local
515 writeInitExpr(os, intConst(sym->getVA(), is64)); in writeBody()
544 void ElemSection::addEntry(FunctionSymbol *sym) { in addEntry() argument
548 if (sym->hasTableIndex() || sym->isStub) in addEntry()
550 sym->setTableIndex(config->tableBase + indirectFunctions.size()); in addEntry()
551 indirectFunctions.emplace_back(sym); in addEntry()
590 for (const FunctionSymbol *sym : indirectFunctions) { in writeBody() local
591 assert(sym->getTableIndex() == tableIndex); in writeBody()
593 writeUleb128(os, sym->getFunctionIndex(), "function index"); in writeBody()
622 for (const Symbol *sym : symtabEntries) { in writeBody() local
623 assert(sym->isDefined() || sym->isUndefined()); in writeBody()
624 WasmSymbolType kind = sym->getWasmType(); in writeBody()
625 uint32_t flags = sym->flags; in writeBody()
630 if (auto *f = dyn_cast<FunctionSymbol>(sym)) { in writeBody()
631 if (auto *d = dyn_cast<DefinedFunction>(sym)) { in writeBody()
636 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0) in writeBody()
637 writeStr(sub.os, sym->getName(), "sym name"); in writeBody()
638 } else if (auto *g = dyn_cast<GlobalSymbol>(sym)) { in writeBody()
640 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0) in writeBody()
641 writeStr(sub.os, sym->getName(), "sym name"); in writeBody()
642 } else if (auto *t = dyn_cast<TagSymbol>(sym)) { in writeBody()
644 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0) in writeBody()
645 writeStr(sub.os, sym->getName(), "sym name"); in writeBody()
646 } else if (auto *t = dyn_cast<TableSymbol>(sym)) { in writeBody()
648 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0) in writeBody()
649 writeStr(sub.os, sym->getName(), "sym name"); in writeBody()
650 } else if (isa<DataSymbol>(sym)) { in writeBody()
651 writeStr(sub.os, sym->getName(), "sym name"); in writeBody()
652 if (auto *dataSym = dyn_cast<DefinedData>(sym)) { in writeBody()
659 auto *s = cast<OutputSectionSymbol>(sym); in writeBody()
683 writeUleb128(sub.os, f.sym->getOutputSymbolIndex(), "function index"); in writeBody()
729 void LinkingSection::addToSymtab(Symbol *sym) { in addToSymtab() argument
730 sym->setOutputSymbolIndex(symtabEntries.size()); in addToSymtab()
731 symtabEntries.emplace_back(sym); in addToSymtab()