diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp
index c2e2be9..39593bc 100644
--- a/lldb/source/Symbol/ObjectFile.cpp
+++ b/lldb/source/Symbol/ObjectFile.cpp
@@ -483,9 +483,9 @@
   return m_data.CopyData(offset, length, dst);
 }
 
-size_t ObjectFile::ReadSectionData(const Section *section,
+size_t ObjectFile::ReadSectionData(Section *section,
                                    lldb::offset_t section_offset, void *dst,
-                                   size_t dst_len) const {
+                                   size_t dst_len) {
   assert(section);
   section_offset *= section->GetTargetByteSize();
 
@@ -505,6 +505,9 @@
                                       dst_len, error);
     }
   } else {
+    if (!section->IsRelocated())
+      RelocateSection(section);
+
     const lldb::offset_t section_file_size = section->GetFileSize();
     if (section_offset < section_file_size) {
       const size_t section_bytes_left = section_file_size - section_offset;
@@ -531,8 +534,8 @@
 //----------------------------------------------------------------------
 // Get the section data the file on disk
 //----------------------------------------------------------------------
-size_t ObjectFile::ReadSectionData(const Section *section,
-                                   DataExtractor &section_data) const {
+size_t ObjectFile::ReadSectionData(Section *section,
+                                   DataExtractor &section_data) {
   // If some other objectfile owns this data, pass this to them.
   if (section->GetObjectFile() != this)
     return section->GetObjectFile()->ReadSectionData(section, section_data);
@@ -562,8 +565,8 @@
   }
 }
 
-size_t ObjectFile::MemoryMapSectionData(const Section *section,
-                                        DataExtractor &section_data) const {
+size_t ObjectFile::MemoryMapSectionData(Section *section,
+                                        DataExtractor &section_data) {
   // If some other objectfile owns this data, pass this to them.
   if (section->GetObjectFile() != this)
     return section->GetObjectFile()->MemoryMapSectionData(section,
@@ -572,6 +575,9 @@
   if (IsInMemory()) {
     return ReadSectionData(section, section_data);
   } else {
+    if (!section->IsRelocated())
+      RelocateSection(section);
+
     // The object file now contains a full mmap'ed copy of the object file data,
     // so just use this
     return GetData(section->GetFileOffset(), section->GetFileSize(),
@@ -694,3 +700,7 @@
   }
   return error;
 }
+
+void ObjectFile::RelocateSection(lldb_private::Section *section)
+{
+}
