(elf_machine_load_address): Compute the difference between base address and

first PT_LOAD's virtual address, not the base address.
This commit is contained in:
Ulrich Drepper 2001-09-22 21:32:57 +00:00
parent 177ac300b9
commit 8755441d32
1 changed files with 10 additions and 6 deletions

View File

@ -70,16 +70,20 @@ elf_machine_load_address (void)
Elf64_Addr dot;
long int zero_disp;
asm("br %0, 1f\n\t"
".weak __load_address_undefined\n\t"
"br $0, __load_address_undefined\n"
"1:"
asm("br %0, 1f\n"
"0:\n\t"
"br $0, 2f\n"
"1:\n\t"
".data\n"
"2:\n\t"
".quad 0b\n\t"
".previous"
: "=r"(dot));
zero_disp = *(int *)dot;
zero_disp = *(int *) dot;
zero_disp = (zero_disp << 43) >> 41;
return dot + 4 + zero_disp;
return dot - *(Elf64_Addr *) (dot + 4 + zero_disp);
}
/* Set up the loaded object described by L so its unrelocated PLT