mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
72e7abe0f8
Summary: getRelocatedValue may compute incorrect value for SHT_RELA-typed relocation entries. // DWARFDataExtractor.cpp uint64_t DWARFDataExtractor::getRelocatedValue(uint32_t Size, uint32_t *Off, ... // This formula is correct for REL, but may be incorrect for RELA if the value // stored in the location (getUnsigned(Off, Size)) is not zero. return getUnsigned(Off, Size) + Rel->Value; In this patch, we * refactor these visit* functions to include a new parameter `uint64_t A`. Since these visit* functions are no longer used as visitors, rename them to resolve*. + REL: A is used as the addend. A is the value stored in the location where the relocation applies: getUnsigned(Off, Size) + RELA: The addend encoded in RelocationRef is used, e.g. getELFAddend(R) * and add another set of supports* functions to check if a given relocation type is handled. DWARFObjInMemory uses them to fail early. Reviewers: echristo, dblaikie Reviewed By: echristo Subscribers: mgorny, aprantl, aheejin, fedor.sergeev, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57939 llvm-svn: 356729 |
||
---|---|---|
.. | ||
Archive.cpp | ||
ArchiveWriter.cpp | ||
Binary.cpp | ||
CMakeLists.txt | ||
COFFImportFile.cpp | ||
COFFModuleDefinition.cpp | ||
COFFObjectFile.cpp | ||
Decompressor.cpp | ||
ELF.cpp | ||
ELFObjectFile.cpp | ||
Error.cpp | ||
IRObjectFile.cpp | ||
IRSymtab.cpp | ||
LLVMBuild.txt | ||
MachOObjectFile.cpp | ||
MachOUniversal.cpp | ||
Minidump.cpp | ||
ModuleSymbolTable.cpp | ||
Object.cpp | ||
ObjectFile.cpp | ||
RecordStreamer.cpp | ||
RecordStreamer.h | ||
RelocationResolver.cpp | ||
SymbolicFile.cpp | ||
SymbolSize.cpp | ||
WasmObjectFile.cpp | ||
WindowsResource.cpp |