summaryrefslogtreecommitdiffstats
path: root/lld/lib/Core/Resolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/Core/Resolver.cpp')
-rw-r--r--lld/lib/Core/Resolver.cpp23
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 ) {
OpenPOWER on IntegriCloud