unsigned int updateCount() { return _indirectBindingTable.size(); }
void undefines(std::vector<const char*>& undefines);
void tentativeDefs(std::vector<const char*>& undefines);
+ void mustPreserveForBitcode(std::unordered_set<const char*>& syms);
void removeDeadAtoms();
bool hasName(const char* name);
bool hasExternalTentativeDefinitions() { return _hasExternalTentativeDefinitions; }
byNameIterator begin() { return byNameIterator(_byNameTable.begin(),_indirectBindingTable); }
byNameIterator end() { return byNameIterator(_byNameTable.end(),_indirectBindingTable); }
void printStatistics();
-
+ void removeDeadUndefs(std::vector<const ld::Atom *>& allAtoms, const std::unordered_set<const ld::Atom*>& keep);
+
// from ld::IndirectBindingTable
virtual const char* indirectName(IndirectBindingSlot slot) const;
virtual const ld::Atom* indirectAtom(IndirectBindingSlot slot) const;
CStringToSlot _cstringTable;
NameToMap _nonStdCStringSectionToMap;
ReferencesToSlot _nonLazyPointerTable;
+ ReferencesToSlot _threadPointerTable;
ReferencesToSlot _cfStringTable;
ReferencesToSlot _objc2ClassRefTable;
ReferencesToSlot _pointerToCStringTable;