diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-02-02 13:14:43 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-02-02 13:14:59 -0800 |
commit | 6fab532b4781b0bcb554fd5c2f2e6d5448343aff (patch) | |
tree | 702560c26b0818d6b0a92cb5d04dbaa60a9248df /sysdeps | |
parent | ed8d5ffd0a14e84298a15ae2ec9b799010166b28 (diff) | |
download | glibc-6fab532b4781b0bcb554fd5c2f2e6d5448343aff.zip glibc-6fab532b4781b0bcb554fd5c2f2e6d5448343aff.tar.gz glibc-6fab532b4781b0bcb554fd5c2f2e6d5448343aff.tar.bz2 |
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.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/i386/dl-machine.h | 2 | ||||
-rw-r--r-- | sysdeps/x86_64/dl-machine.h | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 6eca69d..99a72f6 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -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, diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h index 3e7ae22..daf4d8c 100644 --- a/sysdeps/x86_64/dl-machine.h +++ b/sysdeps/x86_64/dl-machine.h @@ -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, |