Index: third_party/android_crazy_linker/src/src/crazy_linker_elf_relocations.h |
diff --git a/third_party/android_crazy_linker/src/src/crazy_linker_elf_relocations.h b/third_party/android_crazy_linker/src/src/crazy_linker_elf_relocations.h |
index 3973fc0922ae848238d3992d288a97aa2dfbe123..56220ce2580c1f16971043f268798105b0cb9eb6 100644 |
--- a/third_party/android_crazy_linker/src/src/crazy_linker_elf_relocations.h |
+++ b/third_party/android_crazy_linker/src/src/crazy_linker_elf_relocations.h |
@@ -56,11 +56,43 @@ class ElfRelocations { |
size_t size); |
private: |
- bool ApplyRelocs(const ELF::Rel* relocs, |
- size_t relocs_count, |
- const ElfSymbols* symbols, |
- SymbolResolver* resolver, |
- Error* error); |
+ bool ResolveSymbol(unsigned rel_type, |
+ unsigned rel_symbol, |
+ const ElfSymbols* symbols, |
+ SymbolResolver* resolver, |
+ ELF::Addr reloc, |
+ ELF::Addr* sym_addr, |
+ Error* error); |
+ bool ApplyRelaReloc(const ELF::Rela* rela, |
+ ELF::Addr sym_addr, |
+ bool resolved, |
+ Error* error); |
+ bool ApplyRelReloc(const ELF::Rel* rel, |
+ ELF::Addr sym_addr, |
+ bool resolved, |
+ Error* error); |
+ bool ApplyRelaRelocs(const ELF::Rela* relocs, |
+ size_t relocs_count, |
+ const ElfSymbols* symbols, |
+ SymbolResolver* resolver, |
+ Error* error); |
+ bool ApplyRelRelocs(const ELF::Rel* relocs, |
+ size_t relocs_count, |
+ const ElfSymbols* symbols, |
+ SymbolResolver* resolver, |
+ Error* error); |
+ void AdjustRelocation(ELF::Word rel_type, |
+ ELF::Addr src_reloc, |
+ size_t dst_delta, |
+ size_t map_delta); |
+ void RelocateRela(size_t src_addr, |
+ size_t dst_addr, |
+ size_t map_addr, |
+ size_t size); |
+ void RelocateRel(size_t src_addr, |
+ size_t dst_addr, |
+ size_t map_addr, |
+ size_t size); |
#if defined(__mips__) |
bool RelocateMipsGot(const ElfSymbols* symbols, |
@@ -72,12 +104,13 @@ class ElfRelocations { |
size_t phdr_count_; |
size_t load_bias_; |
- const ELF::Rel* plt_relocations_; |
- size_t plt_relocations_count_; |
+ ELF::Addr relocations_type_; |
+ ELF::Addr plt_relocations_; |
+ size_t plt_relocations_size_; |
ELF::Addr* plt_got_; |
- const ELF::Rel* relocations_; |
- size_t relocations_count_; |
+ ELF::Addr relocations_; |
+ size_t relocations_size_; |
#if defined(__mips__) |
// MIPS-specific relocation fields. |