Allow IFUNC relocation against unrelocated shared library

IFUNC relocation against definition in unrelocated shared library
will lead to segfault when the IFUNC function is called.  This
patch allows such IFUNC relocations with a warning.  This isn't
a real fix for

https://sourceware.org/bugzilla/show_bug.cgi?id=21041

It simply allows the program to load.  The program will segfault
when longjmp is called.

	* sysdeps/i386/dl-machine.h (elf_machine_rel): Replace
	_dl_fatal_printf with _dl_error_printf for IFUNC relocation
	against unrelocated shared library.
	* sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
This commit is contained in:
H.J. Lu 2017-02-02 13:14:43 -08:00
parent ed8d5ffd0a
commit 6fab532b47
3 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2017-02-02 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/dl-machine.h (elf_machine_rel): Replace
_dl_fatal_printf with _dl_error_printf for IFUNC relocation
against unrelocated shared library.
* sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
2017-02-02 Siddhesh Poyarekar <siddhesh@sourceware.org>
* sysdeps/generic/unsecvars.h: Add GLIBC_TUNABLES.

View File

@ -329,7 +329,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
{
const char *strtab
= (const char *) D_PTR (map, l_info[DT_STRTAB]);
_dl_fatal_printf ("\
_dl_error_printf ("\
%s: Relink `%s' with `%s' for IFUNC symbol `%s'\n",
RTLD_PROGNAME, map->l_name,
sym_map->l_name,

View File

@ -339,7 +339,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
{
const char *strtab
= (const char *) D_PTR (map, l_info[DT_STRTAB]);
_dl_fatal_printf ("\
_dl_error_printf ("\
%s: Relink `%s' with `%s' for IFUNC symbol `%s'\n",
RTLD_PROGNAME, map->l_name,
sym_map->l_name,