Lines 142-147
static int relocate_object(Obj_Entry *obj, bool bind_now, Obj_Entry *rtldobj,
Link Here
|
142 |
int flags, RtldLockState *lockstate); |
142 |
int flags, RtldLockState *lockstate); |
143 |
static int relocate_objects(Obj_Entry *, bool, Obj_Entry *, int, |
143 |
static int relocate_objects(Obj_Entry *, bool, Obj_Entry *, int, |
144 |
RtldLockState *); |
144 |
RtldLockState *); |
|
|
145 |
static int resolve_object_ifunc(Obj_Entry *, bool, int, RtldLockState *); |
145 |
static int resolve_objects_ifunc(Obj_Entry *first, bool bind_now, |
146 |
static int resolve_objects_ifunc(Obj_Entry *first, bool bind_now, |
146 |
int flags, RtldLockState *lockstate); |
147 |
int flags, RtldLockState *lockstate); |
147 |
static int rtld_dirname(const char *, char *); |
148 |
static int rtld_dirname(const char *, char *); |
Lines 2885-2893
relocate_object(Obj_Entry *obj, bool bind_now, Obj_Entry *rtldobj,
Link Here
|
2885 |
if (reloc_plt(obj) == -1) |
2886 |
if (reloc_plt(obj) == -1) |
2886 |
return (-1); |
2887 |
return (-1); |
2887 |
/* Relocate the jump slots if we are doing immediate binding. */ |
2888 |
/* Relocate the jump slots if we are doing immediate binding. */ |
2888 |
if (obj->bind_now || bind_now) |
2889 |
if (obj->bind_now || bind_now) { |
2889 |
if (reloc_jmpslots(obj, flags, lockstate) == -1) |
2890 |
if (reloc_jmpslots(obj, flags, lockstate) == -1 || |
|
|
2891 |
resolve_object_ifunc(obj, true, flags, lockstate) == -1) |
2890 |
return (-1); |
2892 |
return (-1); |
|
|
2893 |
} |
2891 |
|
2894 |
|
2892 |
/* |
2895 |
/* |
2893 |
* Process the non-PLT IFUNC relocations. The relocations are |
2896 |
* Process the non-PLT IFUNC relocations. The relocations are |