summaryrefslogtreecommitdiff
path: root/compiler/elf_writer.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2016-02-16 12:50:23 +0000
committer Vladimir Marko <vmarko@google.com> 2016-02-17 16:38:46 +0000
commit6065402316da2b51eed5fc34cffbd991766bd408 (patch)
treecb93e32b978ea03a70baf980c470a03263c084c0 /compiler/elf_writer.h
parent442643920a6c539e98aad76594e99b932b5631ba (diff)
Allow method references across oat files for multi-image.
These were disabled because we didn't have sufficient information about the multi-image layout when processing link-time patches in OatWriter. This CL refactors the ELF file creation so that the information is available. Change-Id: I6f2e8dc8572d143c72cc2693bb0ba4fd76f889ab
Diffstat (limited to 'compiler/elf_writer.h')
-rw-r--r--compiler/elf_writer.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/compiler/elf_writer.h b/compiler/elf_writer.h
index d50a08cb20..c9ea0083d5 100644
--- a/compiler/elf_writer.h
+++ b/compiler/elf_writer.h
@@ -52,14 +52,12 @@ class ElfWriter {
virtual ~ElfWriter() {}
virtual void Start() = 0;
- virtual void PrepareDebugInfo(size_t rodata_section_size,
- size_t text_section_size,
- const ArrayRef<const debug::MethodDebugInfo>& method_infos) = 0;
+ virtual void SetLoadedSectionSizes(size_t rodata_size, size_t text_size, size_t bss_size) = 0;
+ virtual void PrepareDebugInfo(const ArrayRef<const debug::MethodDebugInfo>& method_infos) = 0;
virtual OutputStream* StartRoData() = 0;
virtual void EndRoData(OutputStream* rodata) = 0;
virtual OutputStream* StartText() = 0;
virtual void EndText(OutputStream* text) = 0;
- virtual void SetBssSize(size_t bss_size) = 0;
virtual void WriteDynamicSection() = 0;
virtual void WriteDebugInfo(const ArrayRef<const debug::MethodDebugInfo>& method_infos) = 0;
virtual void WritePatchLocations(const ArrayRef<const uintptr_t>& patch_locations) = 0;
@@ -70,6 +68,9 @@ class ElfWriter {
// should Seek() back to the position where the stream was before this operation.
virtual OutputStream* GetStream() = 0;
+ // Get the size that the loaded ELF file will occupy in memory.
+ virtual size_t GetLoadedSize() = 0;
+
protected:
ElfWriter() = default;
};