Changeset View
Changeset View
Standalone View
Standalone View
libexec/rtld-elf/rtld.c
Show First 20 Lines • Show All 2,884 Lines • ▼ Show 20 Lines | relocate_object(Obj_Entry *obj, bool bind_now, Obj_Entry *rtldobj, | ||||
/* Re-protected the text segment. */ | /* Re-protected the text segment. */ | ||||
if (obj->textrel && reloc_textrel_prot(obj, false) != 0) | if (obj->textrel && reloc_textrel_prot(obj, false) != 0) | ||||
return (-1); | return (-1); | ||||
/* Set the special PLT or GOT entries. */ | /* Set the special PLT or GOT entries. */ | ||||
init_pltgot(obj); | init_pltgot(obj); | ||||
/* Process the PLT relocations. */ | /* Process the PLT relocations. */ | ||||
if (reloc_plt(obj) == -1) | if (reloc_plt(obj, flags, lockstate) == -1) | ||||
return (-1); | return (-1); | ||||
/* Relocate the jump slots if we are doing immediate binding. */ | /* Relocate the jump slots if we are doing immediate binding. */ | ||||
if ((obj->bind_now || bind_now) && reloc_jmpslots(obj, flags, | if ((obj->bind_now || bind_now) && reloc_jmpslots(obj, flags, | ||||
lockstate) == -1) | lockstate) == -1) | ||||
return (-1); | return (-1); | ||||
/* | /* | ||||
* Process the non-PLT IFUNC relocations. The relocations are | * Process the non-PLT IFUNC relocations. The relocations are | ||||
▲ Show 20 Lines • Show All 2,748 Lines • Show Last 20 Lines |