]> sourceware.org Git - glibc.git/commitdiff
Don't issue an error if DT_PLTRELSZ is missing
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 23 May 2015 00:46:42 +0000 (17:46 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 23 May 2015 00:46:58 +0000 (17:46 -0700)
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.

ChangeLog
NEWS
elf/dl-reloc.c

index f54645593f1024d7ba1069158fc0b034e40a4712..4e289a03457c46c1afbda422fc0410969bdddbb8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        Remove obsolete aliases that broke 'locale -a'
diff --git a/NEWS b/NEWS
index 529b79b2df1983628456225136bb5cee4f11f4b2..2e47f796c3b0c11f45d479fa1ec6e811ebb17e2b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,8 +18,8 @@ Version 2.22
   18029, 18030, 18032, 18036, 18038, 18039, 18042, 18043, 18046, 18047,
   18049, 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18125, 18128,
   18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, 18220, 18221,
-  18244, 18247, 18287, 18319, 18333, 18346, 18397, 18409, 18412, 18418,
-  18434, 18444.
+  18244, 18247, 18287, 18319, 18333, 18346, 18397, 18409, 18410, 18412,
+  18418, 18434, 18444.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index 0872636f1699104c2962888e9ac691cdad0c2876..61252d76970c69b39cced37dee8b942c261ca652 100644 (file)
@@ -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);
 
 #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
           relocations.  If the shared object lacks a PLT (for example
           if it only contains lead function) the l_info[DT_PLTRELSZ]
           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
                           ? sizeof (ElfW(Rela))
                           : sizeof (ElfW(Rel));
@@ -283,7 +275,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
          {
            errstring = N_("\
 %s: out of memory to store relocation results for %s\n");
-           goto fatal;
+           _dl_fatal_printf (errstring, RTLD_PROGNAME, l->l_name);
          }
       }
 #endif
This page took 0.127927 seconds and 5 git commands to generate.