From db8cb2223d5dbe5e31099a2d69d4a4c8eab4b7f4 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Sat, 5 Jul 2014 11:38:52 +0000 Subject: [PATCH] This only needs a StringRef. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212371 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELF.h | 20 ++++++++++---------- include/llvm/Object/ELFObjectFile.h | 2 +- lib/Object/ELFObjectFile.cpp | 3 ++- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h index c968295b840..94420d1c568 100644 --- a/include/llvm/Object/ELF.h +++ b/include/llvm/Object/ELF.h @@ -40,11 +40,11 @@ StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type); // Subclasses of ELFFile may need this for template instantiation inline std::pair -getElfArchType(MemoryBuffer *Object) { - if (Object->getBufferSize() < ELF::EI_NIDENT) +getElfArchType(StringRef Object) { + if (Object.size() < ELF::EI_NIDENT) return std::make_pair((uint8_t)ELF::ELFCLASSNONE,(uint8_t)ELF::ELFDATANONE); - return std::make_pair((uint8_t) Object->getBufferStart()[ELF::EI_CLASS], - (uint8_t) Object->getBufferStart()[ELF::EI_DATA]); + return std::make_pair((uint8_t)Object.begin()[ELF::EI_CLASS], + (uint8_t)Object.begin()[ELF::EI_DATA]); } template @@ -230,10 +230,10 @@ private: typedef SmallVector Sections_t; typedef DenseMap IndexMap_t; - MemoryBuffer *Buf; + StringRef Buf; const uint8_t *base() const { - return reinterpret_cast(Buf->getBufferStart()); + return reinterpret_cast(Buf.begin()); } const Elf_Ehdr *Header; @@ -317,7 +317,7 @@ public: std::pair getRelocationSymbol(const Elf_Shdr *RelSec, const RelT *Rel) const; - ELFFile(MemoryBuffer *Object, std::error_code &ec); + ELFFile(StringRef Object, std::error_code &ec); bool isMipsELF64() const { return Header->e_machine == ELF::EM_MIPS && @@ -536,7 +536,7 @@ ELFFile::getSymbol(uint32_t Index) const { template ErrorOr > ELFFile::getSectionContents(const Elf_Shdr *Sec) const { - if (Sec->sh_offset + Sec->sh_size > Buf->getBufferSize()) + if (Sec->sh_offset + Sec->sh_size > Buf.size()) return object_error::parse_failed; const uint8_t *Start = base() + Sec->sh_offset; return ArrayRef(Start, Sec->sh_size); @@ -621,13 +621,13 @@ typename ELFFile::uintX_t ELFFile::getStringTableIndex() const { } template -ELFFile::ELFFile(MemoryBuffer *Object, std::error_code &ec) +ELFFile::ELFFile(StringRef Object, std::error_code &ec) : Buf(Object), SectionHeaderTable(nullptr), dot_shstrtab_sec(nullptr), dot_strtab_sec(nullptr), dot_symtab_sec(nullptr), SymbolTableSectionHeaderIndex(nullptr), dot_gnu_version_sec(nullptr), dot_gnu_version_r_sec(nullptr), dot_gnu_version_d_sec(nullptr), dt_soname(nullptr) { - const uint64_t FileSize = Buf->getBufferSize(); + const uint64_t FileSize = Buf.size(); if (sizeof(Elf_Ehdr) > FileSize) // FIXME: Proper error handling. diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h index deff409c5dd..cfb6b08c703 100644 --- a/include/llvm/Object/ELFObjectFile.h +++ b/include/llvm/Object/ELFObjectFile.h @@ -779,7 +779,7 @@ ELFObjectFile::ELFObjectFile(std::unique_ptr Object, support::little, ELFT::Is64Bits), std::move(Object)), - EF(Data.get(), EC) {} + EF(Data->getBuffer(), EC) {} template basic_symbol_iterator ELFObjectFile::symbol_begin_impl() const { diff --git a/lib/Object/ELFObjectFile.cpp b/lib/Object/ELFObjectFile.cpp index 0e6230d08c4..4f0f60b6242 100644 --- a/lib/Object/ELFObjectFile.cpp +++ b/lib/Object/ELFObjectFile.cpp @@ -19,7 +19,8 @@ using namespace object; ErrorOr ObjectFile::createELFObjectFile(std::unique_ptr &Obj) { - std::pair Ident = getElfArchType(Obj.get()); + std::pair Ident = + getElfArchType(Obj->getBuffer()); std::size_t MaxAlignment = 1ULL << countTrailingZeros(uintptr_t(Obj->getBufferStart()));