Lines Matching defs:sym
90 for (const Symbol *sym : symtab->symbols()) {
91 if (sym->isLive()) {
92 if (sym->isExported() && sym->isTLS() && isa<DefinedData>(sym)) {
93 exportInfo.push_back(sym);
95 if (sym->isUndefWeak()) {
96 importInfo.push_back(sym);
105 for (const Symbol *sym : exportInfo) {
106 LLVM_DEBUG(llvm::dbgs() << "export info: " << toString(*sym) << "\n");
107 StringRef name = sym->getName();
108 if (auto *f = dyn_cast<DefinedFunction>(sym)) {
114 writeStr(sub.os, name, "sym name");
115 writeUleb128(sub.os, sym->flags, "sym flags");
125 for (const Symbol *sym : importInfo) {
126 LLVM_DEBUG(llvm::dbgs() << "imports info: " << toString(*sym) << "\n");
127 StringRef module = sym->importModule.value_or(defaultModule);
128 StringRef name = sym->importName.value_or(sym->getName());
131 writeUleb128(sub.os, sym->flags, "sym flags");
170 void ImportSection::addGOTEntry(Symbol *sym) {
172 if (sym->hasGOTIndex())
174 LLVM_DEBUG(dbgs() << "addGOTEntry: " << toString(*sym) << "\n");
175 sym->setGOTIndex(numImportedGlobals++);
180 sym->forceExport = true;
182 gotSymbols.push_back(sym);
185 void ImportSection::addImport(Symbol *sym) {
187 StringRef module = sym->importModule.value_or(defaultModule);
188 StringRef name = sym->importName.value_or(sym->getName());
189 if (auto *f = dyn_cast<FunctionSymbol>(sym)) {
193 importedSymbols.emplace_back(sym);
198 } else if (auto *g = dyn_cast<GlobalSymbol>(sym)) {
202 importedSymbols.emplace_back(sym);
207 } else if (auto *t = dyn_cast<TagSymbol>(sym)) {
211 importedSymbols.emplace_back(sym);
217 assert(TableSymbol::classof(sym));
218 auto *table = cast<TableSymbol>(sym);
222 importedSymbols.emplace_back(sym);
255 for (const Symbol *sym : importedSymbols) {
257 import.Field = sym->importName.value_or(sym->getName());
258 import.Module = sym->importModule.value_or(defaultModule);
260 if (auto *functionSym = dyn_cast<FunctionSymbol>(sym)) {
263 } else if (auto *globalSym = dyn_cast<GlobalSymbol>(sym)) {
266 } else if (auto *tagSym = dyn_cast<TagSymbol>(sym)) {
270 auto *tableSym = cast<TableSymbol>(sym);
277 for (const Symbol *sym : gotSymbols) {
282 if (isa<DataSymbol>(sym))
286 import.Field = sym->getName();
392 for (Symbol *sym : internalGotSymbols)
393 sym->setGOTIndex(globalIndex++);
403 void GlobalSection::addInternalGOTEntry(Symbol *sym) {
405 if (sym->requiresGOT)
407 LLVM_DEBUG(dbgs() << "addInternalGOTEntry: " << sym->getName() << " "
408 << toString(sym->kind()) << "\n");
409 sym->requiresGOT = true;
410 if (auto *F = dyn_cast<FunctionSymbol>(sym)) {
414 internalGotSymbols.push_back(sym);
425 for (const Symbol *sym : internalGotSymbols) {
426 if (TLS != sym->isTLS())
429 if (auto *d = dyn_cast<DefinedData>(sym)) {
432 if (sym->isTLS())
441 } else if (auto *f = dyn_cast<FunctionSymbol>(sym)) {
452 assert(isa<UndefinedData>(sym) || isa<SharedData>(sym));
457 writeUleb128(os, sym->getGOTIndex(), "got_entry");
471 for (const Symbol *sym : internalGotSymbols) {
473 if (!sym->isStub) {
477 if (!ctx.arg.extendedConst && ctx.isPic && !sym->isTLS())
481 if (ctx.arg.sharedMemory && sym->isTLS())
491 if (auto *d = dyn_cast<DefinedData>(sym)) {
492 if (!sym->isTLS()) {
497 } else if (auto *f = dyn_cast<FunctionSymbol>(sym)) {
498 if (!sym->isStub) {
517 if (auto *d = dyn_cast<DefinedData>(sym))
522 else if (auto *f = dyn_cast<FunctionSymbol>(sym))
525 assert(isa<UndefinedData>(sym) || isa<SharedData>(sym));
531 for (const DefinedData *sym : dataAddressGlobals) {
534 writeInitExpr(os, intConst(sym->getVA(), is64));
563 void ElemSection::addEntry(FunctionSymbol *sym) {
567 if (sym->hasTableIndex() || sym->isStub)
569 sym->setTableIndex(ctx.arg.tableBase + indirectFunctions.size());
570 indirectFunctions.emplace_back(sym);
606 for (const FunctionSymbol *sym : indirectFunctions) {
607 assert(sym->getTableIndex() == tableIndex);
609 writeUleb128(os, sym->getFunctionIndex(), "function index");
637 for (const Symbol *sym : symtabEntries) {
638 assert(sym->isDefined() || sym->isUndefined());
639 WasmSymbolType kind = sym->getWasmType();
640 uint32_t flags = sym->flags;
642 writeU8(sub.os, kind, "sym kind");
643 writeUleb128(sub.os, flags, "sym flags");
645 if (auto *f = dyn_cast<FunctionSymbol>(sym)) {
646 if (auto *d = dyn_cast<DefinedFunction>(sym)) {
651 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0)
652 writeStr(sub.os, sym->getName(), "sym name");
653 } else if (auto *g = dyn_cast<GlobalSymbol>(sym)) {
655 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0)
656 writeStr(sub.os, sym->getName(), "sym name");
657 } else if (auto *t = dyn_cast<TagSymbol>(sym)) {
659 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0)
660 writeStr(sub.os, sym->getName(), "sym name");
661 } else if (auto *t = dyn_cast<TableSymbol>(sym)) {
663 if (sym->isDefined() || (flags & WASM_SYMBOL_EXPLICIT_NAME) != 0)
664 writeStr(sub.os, sym->getName(), "sym name");
665 } else if (isa<DataSymbol>(sym)) {
666 writeStr(sub.os, sym->getName(), "sym name");
667 if (auto *dataSym = dyn_cast<DefinedData>(sym)) {
679 auto *s = cast<OutputSectionSymbol>(sym);
680 writeUleb128(sub.os, s->section->sectionIndex, "sym section index");
703 writeUleb128(sub.os, f.sym->getOutputSymbolIndex(), "function index");
749 void LinkingSection::addToSymtab(Symbol *sym) {
750 sym->setOutputSymbolIndex(symtabEntries.size());
751 symtabEntries.emplace_back(sym);