Move code for MIPS from createInputSection to initializeSections.
authorRui Ueyama <ruiu@google.com>
Tue, 26 Jul 2016 21:26:02 +0000 (21:26 +0000)
committerRui Ueyama <ruiu@google.com>
Tue, 26 Jul 2016 21:26:02 +0000 (21:26 +0000)
We already have code for ARM in initializeSections, so this
is more consistent.

Differential Revision: https://reviews.llvm.org/D22833

llvm-svn: 276811

lld/ELF/InputFiles.cpp

index 18ed3fc..6caf567 100644 (file)
@@ -252,6 +252,14 @@ void elf::ObjectFile<ELFT>::initializeSections(
       // they can be used to reason about object compatibility.
       Sections[I] = &InputSection<ELFT>::Discarded;
       break;
+    case SHT_MIPS_REGINFO:
+      MipsReginfo.reset(new MipsReginfoInputSection<ELFT>(this, &Sec));
+      Sections[I] = MipsReginfo.get();
+      break;
+    case SHT_MIPS_OPTIONS:
+      MipsOptions.reset(new MipsOptionsInputSection<ELFT>(this, &Sec));
+      Sections[I] = MipsOptions.get();
+      break;
     default:
       Sections[I] = createInputSection(Sec);
     }
@@ -298,19 +306,6 @@ elf::ObjectFile<ELFT>::createInputSection(const Elf_Shdr &Sec) {
   if (Config->StripDebug && Name.startswith(".debug"))
     return &InputSection<ELFT>::Discarded;
 
-  // A MIPS object file has a special sections that contain register
-  // usage info, which need to be handled by the linker specially.
-  if (Config->EMachine == EM_MIPS) {
-    switch (Sec.sh_type) {
-    case SHT_MIPS_REGINFO:
-      MipsReginfo.reset(new MipsReginfoInputSection<ELFT>(this, &Sec));
-      return MipsReginfo.get();
-    case SHT_MIPS_OPTIONS:
-      MipsOptions.reset(new MipsOptionsInputSection<ELFT>(this, &Sec));
-      return MipsOptions.get();
-    }
-  }
-
   // The linker merges EH (exception handling) frames and creates a
   // .eh_frame_hdr section for runtime. So we handle them with a special
   // class. For relocatable outputs, they are just passed through.