summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/ELFObjectFile.cpp
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2013-01-15 07:44:25 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2013-01-15 07:44:25 +0000
commit1a79161fe38454a4a0874b7c84c517ce5da63c5b (patch)
tree7a1a7f9ee09faca543ecdbdd10086edf4f725a47 /llvm/lib/Object/ELFObjectFile.cpp
parent550de45861e21cb80c289903b5fc472b6932bbca (diff)
downloadbcm5719-llvm-1a79161fe38454a4a0874b7c84c517ce5da63c5b.tar.gz
bcm5719-llvm-1a79161fe38454a4a0874b7c84c517ce5da63c5b.zip
[Object][ELF] Simplify ELFObjectFile by using ELFType.
This simplifies the usage and implementation of ELFObjectFile by using ELFType to replace: <endianness target_endianness, std::size_t max_alignment, bool is64Bits> This does complicate the base ELF types as they must now use template template parameters to partially specialize for the 32 and 64bit cases. However these are only defined once. llvm-svn: 172515
Diffstat (limited to 'llvm/lib/Object/ELFObjectFile.cpp')
-rw-r--r--llvm/lib/Object/ELFObjectFile.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index 2c8c1b16d11..160053dabd8 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -28,30 +28,30 @@ ObjectFile *ObjectFile::createELFObjectFile(MemoryBuffer *Object) {
if (Ident.first == ELF::ELFCLASS32 && Ident.second == ELF::ELFDATA2LSB)
if (MaxAlignment >= 4)
- return new ELFObjectFile<support::little, 4, false>(Object, ec);
+ return new ELFObjectFile<ELFType<support::little, 4, false> >(Object, ec);
else if (MaxAlignment >= 2)
- return new ELFObjectFile<support::little, 2, false>(Object, ec);
+ return new ELFObjectFile<ELFType<support::little, 2, false> >(Object, ec);
else
llvm_unreachable("Invalid alignment for ELF file!");
else if (Ident.first == ELF::ELFCLASS32 && Ident.second == ELF::ELFDATA2MSB)
if (MaxAlignment >= 4)
- return new ELFObjectFile<support::big, 4, false>(Object, ec);
+ return new ELFObjectFile<ELFType<support::big, 4, false> >(Object, ec);
else if (MaxAlignment >= 2)
- return new ELFObjectFile<support::big, 2, false>(Object, ec);
+ return new ELFObjectFile<ELFType<support::big, 2, false> >(Object, ec);
else
llvm_unreachable("Invalid alignment for ELF file!");
else if (Ident.first == ELF::ELFCLASS64 && Ident.second == ELF::ELFDATA2MSB)
if (MaxAlignment >= 8)
- return new ELFObjectFile<support::big, 8, true>(Object, ec);
+ return new ELFObjectFile<ELFType<support::big, 8, true> >(Object, ec);
else if (MaxAlignment >= 2)
- return new ELFObjectFile<support::big, 2, true>(Object, ec);
+ return new ELFObjectFile<ELFType<support::big, 2, true> >(Object, ec);
else
llvm_unreachable("Invalid alignment for ELF file!");
else if (Ident.first == ELF::ELFCLASS64 && Ident.second == ELF::ELFDATA2LSB) {
if (MaxAlignment >= 8)
- return new ELFObjectFile<support::little, 8, true>(Object, ec);
+ return new ELFObjectFile<ELFType<support::little, 8, true> >(Object, ec);
else if (MaxAlignment >= 2)
- return new ELFObjectFile<support::little, 2, true>(Object, ec);
+ return new ELFObjectFile<ELFType<support::little, 2, true> >(Object, ec);
else
llvm_unreachable("Invalid alignment for ELF file!");
}
OpenPOWER on IntegriCloud