Move code for MIPS from createInputSection to initializeSections.

We already have code for ARM in initializeSections, so this
is more consistent.

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

llvm-svn: 276811
This commit is contained in:
Rui Ueyama 2016-07-26 21:26:02 +00:00
parent 8a5c9ea9ba
commit 3b452a7a22
1 changed files with 8 additions and 13 deletions

View 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.