diff options
author | Rahman Lavaee <rahmanl@google.com> | 2021-10-27 17:00:27 -0700 |
---|---|---|
committer | Rahman Lavaee <rahmanl@google.com> | 2021-11-04 10:27:24 -0700 |
commit | f533ec37eb23e709009dc0f753771b2144819c73 (patch) | |
tree | 577f68241a6799b916d47d75a799f832dc32159a /llvm/lib/Object/ELF.cpp | |
parent | 0649dfebbab76424e9501a97a21a6253be1d6dcc (diff) | |
download | llvm-f533ec37eb23e709009dc0f753771b2144819c73.zip llvm-f533ec37eb23e709009dc0f753771b2144819c73.tar.gz llvm-f533ec37eb23e709009dc0f753771b2144819c73.tar.bz2 |
Make the BBAddrMap struct binary-format-agnostic.
The only binary-format-related field in the BBAddrMap structure is the function address (`Addr`), which will use uint64_t in 64B format and uint32_t in 32B format. This patch changes it to use uint64_t in both formats.
This allows non-templated use of the struct, at the expense of a marginal additional size overhead for the 32-bit format. The size of the BB address map section does not change.
Differential Revision: https://reviews.llvm.org/D112679
Diffstat (limited to 'llvm/lib/Object/ELF.cpp')
-rw-r--r-- | llvm/lib/Object/ELF.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Object/ELF.cpp b/llvm/lib/Object/ELF.cpp index 1eabc29a..84181ae 100644 --- a/llvm/lib/Object/ELF.cpp +++ b/llvm/lib/Object/ELF.cpp @@ -622,14 +622,14 @@ ELFFile<ELFT>::toMappedAddr(uint64_t VAddr, WarningHandler WarnHandler) const { } template <class ELFT> -Expected<std::vector<typename ELFT::BBAddrMap>> +Expected<std::vector<BBAddrMap>> ELFFile<ELFT>::decodeBBAddrMap(const Elf_Shdr &Sec) const { Expected<ArrayRef<uint8_t>> ContentsOrErr = getSectionContents(Sec); if (!ContentsOrErr) return ContentsOrErr.takeError(); ArrayRef<uint8_t> Content = *ContentsOrErr; DataExtractor Data(Content, isLE(), ELFT::Is64Bits ? 8 : 4); - std::vector<Elf_BBAddrMap> FunctionEntries; + std::vector<BBAddrMap> FunctionEntries; DataExtractor::Cursor Cur(0); Error ULEBSizeErr = Error::success(); @@ -656,7 +656,7 @@ ELFFile<ELFT>::decodeBBAddrMap(const Elf_Shdr &Sec) const { while (!ULEBSizeErr && Cur && Cur.tell() < Content.size()) { uintX_t Address = static_cast<uintX_t>(Data.getAddress(Cur)); uint32_t NumBlocks = ReadULEB128AsUInt32(); - std::vector<typename Elf_BBAddrMap::BBEntry> BBEntries; + std::vector<BBAddrMap::BBEntry> BBEntries; for (uint32_t BlockID = 0; !ULEBSizeErr && Cur && (BlockID < NumBlocks); ++BlockID) { uint32_t Offset = ReadULEB128AsUInt32(); |