(_dl_relocate_object): Move PT_GNU_RELRO protection into... (_dl_protect_relro):...
authorUlrich Drepper <drepper@redhat.com>
Sat, 24 Jan 2004 08:33:05 +0000 (08:33 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 24 Jan 2004 08:33:05 +0000 (08:33 +0000)
elf/dl-reloc.c

index 21d1871..0fda3de 100644 (file)
@@ -311,23 +311,25 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
   /* In case we can protect the data now that the relocations are
      done, do it.  */
   if (l->l_relro_size != 0)
-    {
-      ElfW(Addr) start = ((l->l_addr + l->l_relro_addr)
-                         & ~(GL(dl_pagesize) - 1));
-      ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size)
-                       & ~(GL(dl_pagesize) - 1));
+    _dl_protect_relro (l);
+}
+INTDEF (_dl_relocate_object)
 
-      if (start != end
-         && __mprotect ((void *) start, end - start, PROT_READ) < 0)
-       {
-         errstring = N_("\
+void internal_function
+_dl_protect_relro (struct link_map *l)
+{
+  ElfW(Addr) start = ((l->l_addr + l->l_relro_addr) & ~(GL(dl_pagesize) - 1));
+  ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size)
+                   & ~(GL(dl_pagesize) - 1));
+
+  if (start != end
+      && __mprotect ((void *) start, end - start, PROT_READ) < 0)
+    {
+      const char *errstring = N_("\
 cannot apply additional memory protection after relocation");
-         goto call_error;
-       }
+      INTUSE(_dl_signal_error) (errno, l->l_name, NULL, errstring);
     }
 }
-INTDEF (_dl_relocate_object)
-
 
 void
 internal_function __attribute_noinline__