diff options
Diffstat (limited to 'lld/lib/Core/Resolver.cpp')
-rw-r--r-- | lld/lib/Core/Resolver.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lld/lib/Core/Resolver.cpp b/lld/lib/Core/Resolver.cpp index f53152b2ec9..b80a2214173 100644 --- a/lld/lib/Core/Resolver.cpp +++ b/lld/lib/Core/Resolver.cpp @@ -104,10 +104,25 @@ void Resolver::doDefinedAtom(const DefinedAtom &atom) { DEBUG_WITH_TYPE("resolver", llvm::dbgs() << " DefinedAtom: " << llvm::format("0x%09lX", &atom) + << ", file=#" + << atom.file().ordinal() + << ", atom=#" + << atom.ordinal() << ", name=" << atom.name() << "\n"); + // Verify on zero-size atoms are pinned to start or end of section. + switch ( atom.sectionPosition() ) { + case DefinedAtom::sectionPositionStart: + case DefinedAtom::sectionPositionEnd: + assert(atom.size() == 0); + break; + case DefinedAtom::sectionPositionEarly: + case DefinedAtom::sectionPositionAny: + break; + } + // add to list of known atoms _atoms.push_back(&atom); @@ -364,6 +379,14 @@ void Resolver::MergedFile::addAtom(const Atom& atom) { } } + +MutableFile::DefinedAtomRange Resolver::MergedFile::definedAtoms() { + return range<std::vector<const DefinedAtom*>::iterator>( + _definedAtoms._atoms.begin(), _definedAtoms._atoms.end()); +} + + + void Resolver::MergedFile::addAtoms(std::vector<const Atom*>& all) { DEBUG_WITH_TYPE("resolver", llvm::dbgs() << "Resolver final atom list:\n"); for ( const Atom *atom : all ) { |