Target::ReadMemory read from read-only binary file Section, not memory
Commiting this patch for Augusto Noronha who is getting set up still. This patch changes Target::ReadMemory so the default behavior when a read is in a Section that is read-only is to fetch the data from the local binary image, instead of reading it from memory. Update all callers to use their old preferences (the old prefer_file_cache bool) using the new API; we should revisit these calls and see if they really intend to read live memory, or if reading from a read-only Section would be equivalent and important for performance-sensitive cases. rdar://30634422 Differential revision: https://reviews.llvm.org/D100338
This commit is contained in:
@@ -859,8 +859,7 @@ Address ObjectFileELF::GetImageInfoAddress(Target *target) {
|
||||
if (symbol.d_tag == DT_MIPS_RLD_MAP) {
|
||||
// DT_MIPS_RLD_MAP tag stores an absolute address of the debug pointer.
|
||||
Address addr;
|
||||
if (target->ReadPointerFromMemory(dyn_base + offset, false, error,
|
||||
addr))
|
||||
if (target->ReadPointerFromMemory(dyn_base + offset, error, addr, true))
|
||||
return addr;
|
||||
}
|
||||
if (symbol.d_tag == DT_MIPS_RLD_MAP_REL) {
|
||||
@@ -868,7 +867,7 @@ Address ObjectFileELF::GetImageInfoAddress(Target *target) {
|
||||
// relative to the address of the tag.
|
||||
uint64_t rel_offset;
|
||||
rel_offset = target->ReadUnsignedIntegerFromMemory(
|
||||
dyn_base + offset, false, GetAddressByteSize(), UINT64_MAX, error);
|
||||
dyn_base + offset, GetAddressByteSize(), UINT64_MAX, error, true);
|
||||
if (error.Success() && rel_offset != UINT64_MAX) {
|
||||
Address addr;
|
||||
addr_t debug_ptr_address =
|
||||
|
||||
Reference in New Issue
Block a user