Remove now redundand ifunc relocation code which should have been

removed as part of r341441.

This call to reloc_non_plt() may crash if ifunc resolvers use the
needed libraries symbols since the pass over the needed libs
relocation is not yet done.  The change in r341441 ensures the right
relocation order otherwise.

Submitted by:	theraven
MFC after:	1 week
Discussed in:	https://reviews.freebsd.org/D17529
This commit is contained in:
Konstantin Belousov 2019-01-27 00:37:52 +00:00
parent cd29c58eae
commit 8b40aab156

View File

@ -2897,16 +2897,6 @@ relocate_object(Obj_Entry *obj, bool bind_now, Obj_Entry *rtldobj,
lockstate) == -1)
return (-1);
/*
* Process the non-PLT IFUNC relocations. The relocations are
* processed in two phases, because IFUNC resolvers may
* reference other symbols, which must be readily processed
* before resolvers are called.
*/
if (obj->non_plt_gnu_ifunc &&
reloc_non_plt(obj, rtldobj, flags | SYMLOOK_IFUNC, lockstate))
return (-1);
if (!obj->mainprog && obj_enforce_relro(obj) == -1)
return (-1);