diff options
Diffstat (limited to 'llvm/lib/Object/COFFObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFObjectFile.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index efb3ea04083..1f2111759a0 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -174,7 +174,7 @@ ErrorOr<uint64_t> COFFObjectFile::getSymbolAddress(DataRefImpl Ref) const { // The section VirtualAddress does not include ImageBase, and we want to // return virtual addresses. - Result += getImageBase().get(); + Result += getImageBase(); return Result; } @@ -271,7 +271,7 @@ uint64_t COFFObjectFile::getSectionAddress(DataRefImpl Ref) const { // The section VirtualAddress does not include ImageBase, and we want to // return virtual addresses. - Result += getImageBase().get(); + Result += getImageBase(); return Result; } @@ -418,17 +418,18 @@ std::error_code COFFObjectFile::initSymbolTablePtr() { return std::error_code(); } -ErrorOr<uint64_t> COFFObjectFile::getImageBase() const { +uint64_t COFFObjectFile::getImageBase() const { if (PE32Header) - return uint64_t(PE32Header->ImageBase); + return PE32Header->ImageBase; else if (PE32PlusHeader) - return uint64_t(PE32PlusHeader->ImageBase); - return object_error::parse_failed; + return PE32PlusHeader->ImageBase; + // This actually comes up in practice. + return 0; } // Returns the file offset for the given VA. std::error_code COFFObjectFile::getVaPtr(uint64_t Addr, uintptr_t &Res) const { - uint64_t ImageBase = getImageBase().get(); + uint64_t ImageBase = getImageBase(); uint64_t Rva = Addr - ImageBase; assert(Rva <= UINT32_MAX); return getRvaPtr((uint32_t)Rva, Res); |