Set ordinals correctly.
This actually doesn't change behavior with the current LinkerInvocation, but
it's needed when you make reading parallel.
llvm-svn: 177554
diff --git a/lld/lib/ReaderWriter/ELF/DynamicFile.h b/lld/lib/ReaderWriter/ELF/DynamicFile.h
index 8255c81..2e9a938 100644
--- a/lld/lib/ReaderWriter/ELF/DynamicFile.h
+++ b/lld/lib/ReaderWriter/ELF/DynamicFile.h
@@ -26,10 +26,6 @@
const ELFTargetInfo &ti, std::unique_ptr<llvm::MemoryBuffer> mb) {
std::unique_ptr<DynamicFile> file(
new DynamicFile(ti, mb->getBufferIdentifier()));
-
- static uint32_t lastOrdinal = 0;
- file->_ordinal = lastOrdinal++;
-
llvm::OwningPtr<llvm::object::Binary> binaryFile;
if (error_code ec = createBinary(mb.release(), binaryFile))
return ec;
diff --git a/lld/lib/ReaderWriter/ELF/File.h b/lld/lib/ReaderWriter/ELF/File.h
index ff95a37..bcfece7 100644
--- a/lld/lib/ReaderWriter/ELF/File.h
+++ b/lld/lib/ReaderWriter/ELF/File.h
@@ -123,9 +123,6 @@
ELFFile(const ELFTargetInfo &ti, std::unique_ptr<llvm::MemoryBuffer> MB,
llvm::error_code &EC)
: File(MB->getBufferIdentifier()), _elfTargetInfo(ti) {
- static uint32_t lastOrdinal = 0;
- _ordinal = lastOrdinal++;
-
llvm::OwningPtr<llvm::object::Binary> binaryFile;
EC = createBinary(MB.release(), binaryFile);
if (EC)
diff --git a/lld/lib/ReaderWriter/ReaderArchive.cpp b/lld/lib/ReaderWriter/ReaderArchive.cpp
index c31b955..370348b 100644
--- a/lld/lib/ReaderWriter/ReaderArchive.cpp
+++ b/lld/lib/ReaderWriter/ReaderArchive.cpp
@@ -52,7 +52,7 @@
assert(result.size() == 1);
- // TO DO: set ordinal of child just loaded
+ result[0]->setOrdinalAndIncrement(_curChildOrd);
// give up the pointer so that this object no longer manages it
return result[0].release();
@@ -60,6 +60,7 @@
virtual void setOrdinalAndIncrement(uint64_t &ordinal) const {
_ordinal = ordinal++;
+ _curChildOrd = _ordinal;
// Leave space in ordinal range for all children
for (auto mf = _archive->begin_children(),
me = _archive->end_children(); mf != me; ++mf) {
@@ -126,6 +127,7 @@
atom_collection_vector<UndefinedAtom> _undefinedAtoms;
atom_collection_vector<SharedLibraryAtom> _sharedLibraryAtoms;
atom_collection_vector<AbsoluteAtom> _absoluteAtoms;
+ mutable uint64_t _curChildOrd;
public:
/// only subclasses of ArchiveLibraryFile can be instantiated