This reverts commit r248845 and r248848.

They broke elf2/basic-mips.s.

Revert "[elf2] Sort output sections."
Revert "[elf2] Fix build."

llvm-svn: 248851
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 48ca5b0..f1dfd66 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -389,42 +389,12 @@
       OutputSections.begin(), OutputSections.end(),
       [](OutputSectionBase<ELFT::Is64Bits> *A,
          OutputSectionBase<ELFT::Is64Bits> *B) {
-        // Sort by ALLOC < (ALLOC & NOBITS) < (ALLOC & EXECUTE) <
-        // (ALLOC & WRITE) < (ALLOC & WRITE & NOBITS)
-        uintX_t AFlags =
-            A->getFlags() & (SHF_ALLOC | SHF_EXECINSTR | SHF_WRITE);
-        uintX_t BFlags =
-            B->getFlags() & (SHF_ALLOC | SHF_EXECINSTR | SHF_WRITE);
-
-        auto rank = [](OutputSectionBase<ELFT::Is64Bits> *Sec) {
-          switch (Sec->getFlags() & (SHF_ALLOC | SHF_EXECINSTR | SHF_WRITE)) {
-          case SHF_ALLOC:
-            return 0;
-          case SHF_ALLOC | SHF_EXECINSTR:
-            return 1;
-          case SHF_ALLOC | SHF_EXECINSTR | SHF_WRITE:
-            return 2;
-          case SHF_ALLOC | SHF_WRITE:
-            return 3;
-          case 0:
-            return 4;
-          default:
-            error("Unexpected section flags");
-          }
-        };
-
-        // Ignore SHT_NOBITS for non-allocated sections.
-        if (AFlags && AFlags == BFlags)
-          return A->getType() != SHT_NOBITS && B->getType() == SHT_NOBITS;
-
-        return rank(A) < rank(B);
+        // Place SHF_ALLOC sections first.
+        return (A->getFlags() & SHF_ALLOC) && !(B->getFlags() & SHF_ALLOC);
       });
 
   for (unsigned I = 0, N = OutputSections.size(); I < N; ++I)
     OutputSections[I]->setSectionIndex(I + 1);
-
-  // Fill the DynStrSec early.
-  DynamicSec.finalize();
 }
 
 template <class ELFT>