diff options
| author | shadchin <[email protected]> | 2022-02-10 16:44:39 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:44:39 +0300 |
| commit | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (patch) | |
| tree | 64175d5cadab313b3e7039ebaa06c5bc3295e274 /contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp | |
| parent | 2598ef1d0aee359b4b6d5fdd1758916d5907d04f (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp')
| -rw-r--r-- | contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp b/contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp index 43601ed58d2..6e9a8eb35dc 100644 --- a/contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp +++ b/contrib/libs/llvm12/lib/Object/COFFObjectFile.cpp @@ -28,7 +28,7 @@ #include "llvm/Support/MemoryBuffer.h" #include <algorithm> #include <cassert> -#include <cinttypes> +#include <cinttypes> #include <cstddef> #include <cstring> #include <limits> @@ -57,7 +57,7 @@ static bool checkSize(MemoryBufferRef M, std::error_code &EC, uint64_t Size) { template <typename T> static Error getObject(const T *&Obj, MemoryBufferRef M, const void *Ptr, const uint64_t Size = sizeof(T)) { - uintptr_t Addr = reinterpret_cast<uintptr_t>(Ptr); + uintptr_t Addr = reinterpret_cast<uintptr_t>(Ptr); if (Error E = Binary::checkOffset(M, Addr, Size)) return E; Obj = reinterpret_cast<const T *>(Addr); @@ -103,11 +103,11 @@ const coff_symbol_type *COFFObjectFile::toSymb(DataRefImpl Ref) const { const coff_symbol_type *Addr = reinterpret_cast<const coff_symbol_type *>(Ref.p); - assert(!checkOffset(Data, reinterpret_cast<uintptr_t>(Addr), sizeof(*Addr))); + assert(!checkOffset(Data, reinterpret_cast<uintptr_t>(Addr), sizeof(*Addr))); #ifndef NDEBUG // Verify that the symbol points to a valid entry in the symbol table. - uintptr_t Offset = - reinterpret_cast<uintptr_t>(Addr) - reinterpret_cast<uintptr_t>(base()); + uintptr_t Offset = + reinterpret_cast<uintptr_t>(Addr) - reinterpret_cast<uintptr_t>(base()); assert((Offset - getPointerToSymbolTable()) % sizeof(coff_symbol_type) == 0 && "Symbol did not point to the beginning of a symbol"); @@ -124,8 +124,8 @@ const coff_section *COFFObjectFile::toSec(DataRefImpl Ref) const { if (Addr < SectionTable || Addr >= (SectionTable + getNumberOfSections())) report_fatal_error("Section was outside of section table."); - uintptr_t Offset = reinterpret_cast<uintptr_t>(Addr) - - reinterpret_cast<uintptr_t>(SectionTable); + uintptr_t Offset = reinterpret_cast<uintptr_t>(Addr) - + reinterpret_cast<uintptr_t>(SectionTable); assert(Offset % sizeof(coff_section) == 0 && "Section did not point to the beginning of a section"); #endif @@ -334,7 +334,7 @@ bool COFFObjectFile::isDebugSection(StringRef SectionName) const { unsigned COFFObjectFile::getSectionID(SectionRef Sec) const { uintptr_t Offset = - Sec.getRawDataRefImpl().p - reinterpret_cast<uintptr_t>(SectionTable); + Sec.getRawDataRefImpl().p - reinterpret_cast<uintptr_t>(SectionTable); assert((Offset % sizeof(coff_section)) == 0); return (Offset / sizeof(coff_section)) + 1; } @@ -378,7 +378,7 @@ getFirstReloc(const coff_section *Sec, MemoryBufferRef M, const uint8_t *Base) { // relocations. begin++; } - if (auto E = Binary::checkOffset(M, reinterpret_cast<uintptr_t>(begin), + if (auto E = Binary::checkOffset(M, reinterpret_cast<uintptr_t>(begin), sizeof(coff_relocation) * NumRelocs)) { consumeError(std::move(E)); return nullptr; @@ -469,8 +469,8 @@ Error COFFObjectFile::getRvaPtr(uint32_t Addr, uintptr_t &Res) const { uint32_t SectionEnd = Section->VirtualAddress + Section->VirtualSize; if (SectionStart <= Addr && Addr < SectionEnd) { uint32_t Offset = Addr - SectionStart; - Res = reinterpret_cast<uintptr_t>(base()) + Section->PointerToRawData + - Offset; + Res = reinterpret_cast<uintptr_t>(base()) + Section->PointerToRawData + + Offset; return Error::success(); } } @@ -487,8 +487,8 @@ Error COFFObjectFile::getRvaAndSizeAsBytes(uint32_t RVA, uint32_t Size, uint32_t OffsetIntoSection = RVA - SectionStart; if (SectionStart <= RVA && OffsetIntoSection < Section->VirtualSize && Size <= Section->VirtualSize - OffsetIntoSection) { - uintptr_t Begin = reinterpret_cast<uintptr_t>(base()) + - Section->PointerToRawData + OffsetIntoSection; + uintptr_t Begin = reinterpret_cast<uintptr_t>(base()) + + Section->PointerToRawData + OffsetIntoSection; Contents = ArrayRef<uint8_t>(reinterpret_cast<const uint8_t *>(Begin), Size); return Error::success(); @@ -652,38 +652,38 @@ Error COFFObjectFile::initDebugDirectoryPtr() { return Error::success(); } -Error COFFObjectFile::initTLSDirectoryPtr() { - // Get the RVA of the TLS directory. Do nothing if it does not exist. - const data_directory *DataEntry = getDataDirectory(COFF::TLS_TABLE); - if (!DataEntry) - return Error::success(); - - // Do nothing if the RVA is NULL. - if (DataEntry->RelativeVirtualAddress == 0) - return Error::success(); - - uint64_t DirSize = - is64() ? sizeof(coff_tls_directory64) : sizeof(coff_tls_directory32); - - // Check that the size is correct. - if (DataEntry->Size != DirSize) - return createStringError( - object_error::parse_failed, - "TLS Directory size (%u) is not the expected size (%" PRIu64 ").", - static_cast<uint32_t>(DataEntry->Size), DirSize); - - uintptr_t IntPtr = 0; - if (Error E = getRvaPtr(DataEntry->RelativeVirtualAddress, IntPtr)) - return E; - - if (is64()) - TLSDirectory64 = reinterpret_cast<const coff_tls_directory64 *>(IntPtr); - else - TLSDirectory32 = reinterpret_cast<const coff_tls_directory32 *>(IntPtr); - - return Error::success(); -} - +Error COFFObjectFile::initTLSDirectoryPtr() { + // Get the RVA of the TLS directory. Do nothing if it does not exist. + const data_directory *DataEntry = getDataDirectory(COFF::TLS_TABLE); + if (!DataEntry) + return Error::success(); + + // Do nothing if the RVA is NULL. + if (DataEntry->RelativeVirtualAddress == 0) + return Error::success(); + + uint64_t DirSize = + is64() ? sizeof(coff_tls_directory64) : sizeof(coff_tls_directory32); + + // Check that the size is correct. + if (DataEntry->Size != DirSize) + return createStringError( + object_error::parse_failed, + "TLS Directory size (%u) is not the expected size (%" PRIu64 ").", + static_cast<uint32_t>(DataEntry->Size), DirSize); + + uintptr_t IntPtr = 0; + if (Error E = getRvaPtr(DataEntry->RelativeVirtualAddress, IntPtr)) + return E; + + if (is64()) + TLSDirectory64 = reinterpret_cast<const coff_tls_directory64 *>(IntPtr); + else + TLSDirectory32 = reinterpret_cast<const coff_tls_directory32 *>(IntPtr); + + return Error::success(); +} + Error COFFObjectFile::initLoadConfigPtr() { // Get the RVA of the debug directory. Do nothing if it does not exist. const data_directory *DataEntry = getDataDirectory(COFF::LOAD_CONFIG_TABLE); @@ -717,8 +717,8 @@ COFFObjectFile::COFFObjectFile(MemoryBufferRef Object) ImportDirectory(nullptr), DelayImportDirectory(nullptr), NumberOfDelayImportDirectory(0), ExportDirectory(nullptr), BaseRelocHeader(nullptr), BaseRelocEnd(nullptr), - DebugDirectoryBegin(nullptr), DebugDirectoryEnd(nullptr), - TLSDirectory32(nullptr), TLSDirectory64(nullptr) {} + DebugDirectoryBegin(nullptr), DebugDirectoryEnd(nullptr), + TLSDirectory32(nullptr), TLSDirectory64(nullptr) {} Error COFFObjectFile::initialize() { // Check that we at least have enough room for a header. @@ -845,14 +845,14 @@ Error COFFObjectFile::initialize() { if (Error E = initBaseRelocPtr()) return E; - // Initialize the pointer to the debug directory. + // Initialize the pointer to the debug directory. if (Error E = initDebugDirectoryPtr()) return E; - // Initialize the pointer to the TLS directory. - if (Error E = initTLSDirectoryPtr()) - return E; - + // Initialize the pointer to the TLS directory. + if (Error E = initTLSDirectoryPtr()) + return E; + if (Error E = initLoadConfigPtr()) return E; @@ -1130,8 +1130,8 @@ Error COFFObjectFile::getSectionContents(const coff_section *Sec, // The only thing that we need to verify is that the contents is contained // within the file bounds. We don't need to make sure it doesn't cover other // data, as there's nothing that says that is not allowed. - uintptr_t ConStart = - reinterpret_cast<uintptr_t>(base()) + Sec->PointerToRawData; + uintptr_t ConStart = + reinterpret_cast<uintptr_t>(base()) + Sec->PointerToRawData; uint32_t SectionSize = getSectionSize(Sec); if (Error E = checkOffset(Data, ConStart, SectionSize)) return E; @@ -1791,9 +1791,9 @@ Error ResourceSectionRef::load(const COFFObjectFile *O, const SectionRef &S) { Relocs.reserve(OrigRelocs.size()); for (const coff_relocation &R : OrigRelocs) Relocs.push_back(&R); - llvm::sort(Relocs, [](const coff_relocation *A, const coff_relocation *B) { - return A->VirtualAddress < B->VirtualAddress; - }); + llvm::sort(Relocs, [](const coff_relocation *A, const coff_relocation *B) { + return A->VirtualAddress < B->VirtualAddress; + }); return Error::success(); } |
