|
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 |