mirror of git://sourceware.org/git/glibc.git
Don't issue an error if DT_PLTRELSZ is missing
A shared object doesn't need PLT if there are no PLT relocations. It shouldn't be an error if DT_PLTRELSZ is missing. [BZ #18410] * elf/dl-reloc.c (_dl_relocate_object): Don't issue an error for missing DT_PLTRELSZ.
This commit is contained in:
parent
333e1ba4e5
commit
3e058c9d7e
|
@ -1,3 +1,9 @@
|
||||||
|
2015-05-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
[BZ #18410]
|
||||||
|
* elf/dl-reloc.c (_dl_relocate_object): Don't issue an error
|
||||||
|
for missing DT_PLTRELSZ.
|
||||||
|
|
||||||
2015-05-22 Paul Eggert <eggert@cs.ucla.edu>
|
2015-05-22 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
Remove obsolete aliases that broke 'locale -a'
|
Remove obsolete aliases that broke 'locale -a'
|
||||||
|
|
4
NEWS
4
NEWS
|
@ -18,8 +18,8 @@ Version 2.22
|
||||||
18029, 18030, 18032, 18036, 18038, 18039, 18042, 18043, 18046, 18047,
|
18029, 18030, 18032, 18036, 18038, 18039, 18042, 18043, 18046, 18047,
|
||||||
18049, 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18125, 18128,
|
18049, 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18125, 18128,
|
||||||
18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, 18220, 18221,
|
18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, 18220, 18221,
|
||||||
18244, 18247, 18287, 18319, 18333, 18346, 18397, 18409, 18412, 18418,
|
18244, 18247, 18287, 18319, 18333, 18346, 18397, 18409, 18410, 18412,
|
||||||
18434, 18444.
|
18418, 18434, 18444.
|
||||||
|
|
||||||
* Cache information can be queried via sysconf() function on s390 e.g. with
|
* Cache information can be queried via sysconf() function on s390 e.g. with
|
||||||
_SC_LEVEL1_ICACHE_SIZE as argument.
|
_SC_LEVEL1_ICACHE_SIZE as argument.
|
||||||
|
|
|
@ -258,21 +258,13 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
||||||
ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling, skip_ifunc);
|
ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling, skip_ifunc);
|
||||||
|
|
||||||
#ifndef PROF
|
#ifndef PROF
|
||||||
if (__glibc_unlikely (consider_profiling))
|
if (__glibc_unlikely (consider_profiling)
|
||||||
|
&& l->l_info[DT_PLTRELSZ] != NULL)
|
||||||
{
|
{
|
||||||
/* Allocate the array which will contain the already found
|
/* Allocate the array which will contain the already found
|
||||||
relocations. If the shared object lacks a PLT (for example
|
relocations. If the shared object lacks a PLT (for example
|
||||||
if it only contains lead function) the l_info[DT_PLTRELSZ]
|
if it only contains lead function) the l_info[DT_PLTRELSZ]
|
||||||
will be NULL. */
|
will be NULL. */
|
||||||
if (l->l_info[DT_PLTRELSZ] == NULL)
|
|
||||||
{
|
|
||||||
errstring = N_("%s: no PLTREL found in object %s\n");
|
|
||||||
fatal:
|
|
||||||
_dl_fatal_printf (errstring,
|
|
||||||
RTLD_PROGNAME,
|
|
||||||
l->l_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t sizeofrel = l->l_info[DT_PLTREL]->d_un.d_val == DT_RELA
|
size_t sizeofrel = l->l_info[DT_PLTREL]->d_un.d_val == DT_RELA
|
||||||
? sizeof (ElfW(Rela))
|
? sizeof (ElfW(Rela))
|
||||||
: sizeof (ElfW(Rel));
|
: sizeof (ElfW(Rel));
|
||||||
|
@ -283,7 +275,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
||||||
{
|
{
|
||||||
errstring = N_("\
|
errstring = N_("\
|
||||||
%s: out of memory to store relocation results for %s\n");
|
%s: out of memory to store relocation results for %s\n");
|
||||||
goto fatal;
|
_dl_fatal_printf (errstring, RTLD_PROGNAME, l->l_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue