[lld] r250051 - ELF2: Move createELFFile() from .h to .cpp.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 12 08:31:09 PDT 2015
Author: ruiu
Date: Mon Oct 12 10:31:09 2015
New Revision: 250051
URL: http://llvm.org/viewvc/llvm-project?rev=250051&view=rev
Log:
ELF2: Move createELFFile() from .h to .cpp.
Modified:
lld/trunk/ELF/InputFiles.cpp
lld/trunk/ELF/InputFiles.h
Modified: lld/trunk/ELF/InputFiles.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.cpp?rev=250051&r1=250050&r2=250051&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.cpp (original)
+++ lld/trunk/ELF/InputFiles.cpp Mon Oct 12 10:31:09 2015
@@ -314,6 +314,43 @@ template <class ELFT> void SharedFile<EL
}
}
+template <typename T>
+static std::unique_ptr<InputFile> createELFFileAux(MemoryBufferRef MB) {
+ std::unique_ptr<T> Ret = llvm::make_unique<T>(MB);
+
+ if (!Config->FirstElf)
+ Config->FirstElf = Ret.get();
+
+ if (Config->ElfKind == ELFNoneKind) {
+ Config->ElfKind = Ret->getELFKind();
+ Config->EMachine = Ret->getEMachine();
+ }
+
+ return std::move(Ret);
+}
+
+template <template <class> class T>
+std::unique_ptr<InputFile> lld::elf2::createELFFile(MemoryBufferRef MB) {
+ using namespace llvm;
+
+ std::pair<unsigned char, unsigned char> Type =
+ object::getElfArchType(MB.getBuffer());
+ if (Type.second != ELF::ELFDATA2LSB && Type.second != ELF::ELFDATA2MSB)
+ error("Invalid data encoding: " + MB.getBufferIdentifier());
+
+ if (Type.first == ELF::ELFCLASS32) {
+ if (Type.second == ELF::ELFDATA2LSB)
+ return createELFFileAux<T<object::ELF32LE>>(MB);
+ return createELFFileAux<T<object::ELF32BE>>(MB);
+ }
+ if (Type.first == ELF::ELFCLASS64) {
+ if (Type.second == ELF::ELFDATA2LSB)
+ return createELFFileAux<T<object::ELF64LE>>(MB);
+ return createELFFileAux<T<object::ELF64BE>>(MB);
+ }
+ error("Invalid file class: " + MB.getBufferIdentifier());
+}
+
namespace lld {
namespace elf2 {
template class ELFFileBase<llvm::object::ELF32LE>;
@@ -330,5 +367,8 @@ template class SharedFile<llvm::object::
template class SharedFile<llvm::object::ELF32BE>;
template class SharedFile<llvm::object::ELF64LE>;
template class SharedFile<llvm::object::ELF64BE>;
+
+template std::unique_ptr<InputFile> createELFFile<ObjectFile>(MemoryBufferRef);
+template std::unique_ptr<InputFile> createELFFile<SharedFile>(MemoryBufferRef);
}
}
Modified: lld/trunk/ELF/InputFiles.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.h?rev=250051&r1=250050&r2=250051&view=diff
==============================================================================
--- lld/trunk/ELF/InputFiles.h (original)
+++ lld/trunk/ELF/InputFiles.h Mon Oct 12 10:31:09 2015
@@ -197,42 +197,8 @@ public:
bool isNeeded() const { return !AsNeeded || IsUsed; }
};
-template <typename T>
-std::unique_ptr<InputFile> createELFFileAux(MemoryBufferRef MB) {
- std::unique_ptr<T> Ret = llvm::make_unique<T>(MB);
-
- if (!Config->FirstElf)
- Config->FirstElf = Ret.get();
-
- if (Config->ElfKind == ELFNoneKind) {
- Config->ElfKind = Ret->getELFKind();
- Config->EMachine = Ret->getEMachine();
- }
-
- return std::move(Ret);
-}
-
template <template <class> class T>
-std::unique_ptr<InputFile> createELFFile(MemoryBufferRef MB) {
- using namespace llvm;
-
- std::pair<unsigned char, unsigned char> Type =
- object::getElfArchType(MB.getBuffer());
- if (Type.second != ELF::ELFDATA2LSB && Type.second != ELF::ELFDATA2MSB)
- error("Invalid data encoding: " + MB.getBufferIdentifier());
-
- if (Type.first == ELF::ELFCLASS32) {
- if (Type.second == ELF::ELFDATA2LSB)
- return createELFFileAux<T<object::ELF32LE>>(MB);
- return createELFFileAux<T<object::ELF32BE>>(MB);
- }
- if (Type.first == ELF::ELFCLASS64) {
- if (Type.second == ELF::ELFDATA2LSB)
- return createELFFileAux<T<object::ELF64LE>>(MB);
- return createELFFileAux<T<object::ELF64BE>>(MB);
- }
- error("Invalid file class: " + MB.getBufferIdentifier());
-}
+std::unique_ptr<InputFile> createELFFile(MemoryBufferRef MB);
} // namespace elf2
} // namespace lld
More information about the llvm-commits
mailing list