summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-02-28 20:42:29 +0000
committerPavel Labath <labath@google.com>2018-02-28 20:42:29 +0000
commitec03d7e3babb18f222d9b83a04e747f206f416a5 (patch)
tree242cc79fe6f09deb8ff99826bfb123cc331a4e65 /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
parentfde8b042358ac2b8ac0b7c3a590e9471d3515462 (diff)
downloadbcm5719-llvm-ec03d7e3babb18f222d9b83a04e747f206f416a5.tar.gz
bcm5719-llvm-ec03d7e3babb18f222d9b83a04e747f206f416a5.zip
Revert "[lldb] Use vFlash commands when writing to target's flash memory regions"
This reverts commit r326261 as it introduces inconsistencies in the handling of load addresses for ObjectFileELF -- some parts of the class use physical addresses, and some use virtual. This has manifested itself as us not being able to set the load address of the vdso "module" on android. llvm-svn: 326367
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp')
-rw-r--r--lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp39
1 files changed, 1 insertions, 38 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index 644fddb06a4..9d606063f93 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -827,7 +827,7 @@ bool ObjectFileELF::SetLoadAddress(Target &target, lldb::addr_t value,
// of the sections that have SHF_ALLOC in their flag bits.
SectionSP section_sp(section_list->GetSectionAtIndex(sect_idx));
if (section_sp && section_sp->Test(SHF_ALLOC)) {
- lldb::addr_t load_addr = GetSectionPhysicalAddress(section_sp);
+ lldb::addr_t load_addr = section_sp->GetFileAddress();
// We don't want to update the load address of a section with type
// eSectionTypeAbsoluteAddress as they already have the absolute load
// address
@@ -3470,40 +3470,3 @@ size_t ObjectFileELF::ReadSectionData(Section *section,
section_data.SetData(buffer_sp);
return buffer_sp->GetByteSize();
}
-
-bool ObjectFileELF::AnySegmentHasPhysicalAddress() {
- size_t header_count = ParseProgramHeaders();
- for (size_t i = 1; i <= header_count; ++i) {
- auto header = GetProgramHeaderByIndex(i);
- if (header->p_paddr != 0)
- return true;
- }
- return false;
-}
-
-const elf::ELFProgramHeader *
-ObjectFileELF::GetSectionSegment(SectionSP section_sp) {
- auto section_size = section_sp->GetFileSize();
- if (section_size == 0)
- section_size = 1;
- size_t header_count = ParseProgramHeaders();
- for (size_t i = 1; i <= header_count; ++i) {
- auto header = GetProgramHeaderByIndex(i);
- if (section_sp->GetFileOffset() >= header->p_offset &&
- section_sp->GetFileOffset() + section_size <=
- header->p_offset + header->p_filesz)
- return header;
- }
- return nullptr;
-}
-
-addr_t ObjectFileELF::GetSectionPhysicalAddress(SectionSP section_sp) {
- auto segment = GetSectionSegment(section_sp);
- if (segment == nullptr)
- return section_sp->GetFileAddress();
- if (segment->p_type != PT_LOAD)
- return LLDB_INVALID_ADDRESS;
- auto base_address =
- AnySegmentHasPhysicalAddress() ? segment->p_paddr : segment->p_vaddr;
- return base_address + (section_sp->GetFileOffset() - segment->p_offset);
-}
OpenPOWER on IntegriCloud