Test commit for ircbot 5

This commit is contained in:
plutoo 2017-10-08 00:35:58 +02:00
parent b82ad0b099
commit cea635293a

View File

@ -3,35 +3,35 @@
void __nx_dynamic(uintptr_t base, const Elf64_Dyn* dyn) void __nx_dynamic(uintptr_t base, const Elf64_Dyn* dyn)
{ {
const Elf64_Rela* rela = NULL; const Elf64_Rela* rela = NULL;
u64 relasz = 0; u64 relasz = 0;
for (; dyn->d_tag != DT_NULL; dyn++) for (; dyn->d_tag != DT_NULL; dyn++)
{ {
switch (dyn->d_tag) switch (dyn->d_tag)
{ {
case DT_RELA: case DT_RELA:
rela = (const Elf64_Rela*)(base + dyn->d_un.d_ptr); rela = (const Elf64_Rela*)(base + dyn->d_un.d_ptr);
break; break;
case DT_RELASZ: case DT_RELASZ:
relasz = dyn->d_un.d_val / sizeof(Elf64_Rela); relasz = dyn->d_un.d_val / sizeof(Elf64_Rela);
break; break;
} }
} }
if (rela == NULL) if (rela == NULL)
fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_BADRELOC)); fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_BADRELOC));
for (; relasz--; rela++) for (; relasz--; rela++)
{ {
switch (ELF64_R_TYPE(rela->r_info)) switch (ELF64_R_TYPE(rela->r_info))
{ {
case R_AARCH64_RELATIVE: case R_AARCH64_RELATIVE:
{ {
u64* ptr = (u64*)(base + rela->r_offset); u64* ptr = (u64*)(base + rela->r_offset);
*ptr = base + rela->r_addend; *ptr = base + rela->r_addend;
break; break;
} }
} }
} }
} }