const std::set<std::string> &PECOFFLinkingContext::definedSymbols() { std::lock_guard<std::recursive_mutex> lock(_mutex); for (std::unique_ptr<Node> &node : getNodes()) { if (_seen.count(node.get()) > 0) continue; FileNode *fnode = dyn_cast<FileNode>(node.get()); if (!fnode) continue; File *file = fnode->getFile(); if (file->parse()) continue; if (auto *archive = dyn_cast<ArchiveLibraryFile>(file)) { for (const std::string &sym : archive->getDefinedSymbols()) _definedSyms.insert(sym); continue; } for (const DefinedAtom *atom : file->defined()) if (!atom->name().empty()) _definedSyms.insert(atom->name()); } return _definedSyms; }