OSDN Git Service

Move _dl_protect_relro as in ldso.c, thanks to jocke
authorPeter S. Mazinger <ps.m@gmx.net>
Mon, 3 Oct 2005 17:53:21 +0000 (17:53 -0000)
committerPeter S. Mazinger <ps.m@gmx.net>
Mon, 3 Oct 2005 17:53:21 +0000 (17:53 -0000)
ldso/libdl/libdl.c

index edb7c50..9073b73 100644 (file)
@@ -346,15 +346,6 @@ void *dlopen(const char *libname, int flag)
        if (_dl_fixup(dyn_chain, now_flag))
                goto oops;
 
-       if (relro_ptr) {
-               for (rpnt = relro_ptr->next; rpnt; rpnt = rpnt->next) {
-                       if (rpnt->dyn->relro_size)
-                               _dl_protect_relro(rpnt->dyn);
-               }
-       }
-       /* TODO:  Should we set the protections of all pages back to R/O now ? */
-
-
        /* Notify the debugger we have added some objects. */
        if (_dl_debug_addr) {
                dl_brk = (void (*)(void)) _dl_debug_addr->r_brk;
@@ -386,6 +377,15 @@ void *dlopen(const char *libname, int flag)
                }
        }
 #endif
+
+       if (relro_ptr) {
+               for (rpnt = relro_ptr->next; rpnt; rpnt = rpnt->next) {
+                       if (rpnt->dyn->relro_size)
+                               _dl_protect_relro(rpnt->dyn);
+               }
+       }
+       /* TODO:  Should we set the protections of all pages back to R/O now ? */
+
        _dl_unmap_cache();
        return (void *) dyn_chain;