diff options
| author | Pavel Chupin <pavel.v.chupin@intel.com> | 2013-10-16 19:13:58 +0400 |
|---|---|---|
| committer | Pavel Chupin <pavel.v.chupin@intel.com> | 2013-10-16 19:13:58 +0400 |
| commit | c075c18537d18ccb6760ba1f5727ce2c0890285a (patch) | |
| tree | 16b87064fe486ce5a1d9b59dd64798b5d72c0e48 /linker/linker.cpp | |
| parent | abeafbd6d5e11044dd305e48134bc3d84319a3da (diff) | |
| download | bionic-c075c18537d18ccb6760ba1f5727ce2c0890285a.zip bionic-c075c18537d18ccb6760ba1f5727ce2c0890285a.tar.gz bionic-c075c18537d18ccb6760ba1f5727ce2c0890285a.tar.bz2 | |
x86_64: Add R_X86_64_64 relocation handling
Change-Id: I86ffc56fa6a9053bed44e92a579530c2beb8eb2c
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
Diffstat (limited to 'linker/linker.cpp')
| -rwxr-xr-x | linker/linker.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index d08bf75..196acb6 100755 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -947,6 +947,14 @@ static int soinfo_relocate_a(soinfo* si, Elf_Rela* rela, unsigned count, soinfo* *reinterpret_cast<Elf_Addr*>(reloc) = sym_addr + rela->r_addend; break; + case R_X86_64_64: + count_relocation(kRelocRelative); + MARK(rela->r_offset); + TRACE_TYPE(RELO, "RELO R_X86_64_64 %08zx <- +%08zx %s", static_cast<size_t>(reloc), + static_cast<size_t>(sym_addr), sym_name); + *reinterpret_cast<Elf_Addr*>(reloc) = sym_addr + rela->r_addend; + break; + case R_X86_64_PC32: count_relocation(kRelocRelative); MARK(rela->r_offset); |
