OSDN Git Service

libc_init_static: apply relro earlier.
authorNick Kralevich <nnk@google.com>
Sat, 12 Jan 2013 02:38:26 +0000 (18:38 -0800)
committerNick Kralevich <nnk@google.com>
Sat, 12 Jan 2013 02:38:26 +0000 (18:38 -0800)
The dynamic linker applies relro before the preinit and init
arrays are executed, so we should be consistent for statically
linked executables.

Change-Id: Ia0a49d0e981a6e8791f74eed00280edf576ba139

libc/bionic/libc_init_static.c

index bb3a410..24a4397 100644 (file)
@@ -101,6 +101,8 @@ __noreturn void __libc_init(uintptr_t *elfdata,
     /* Initialize the C runtime environment */
     __libc_init_common(elfdata);
 
+    apply_gnu_relro();
+
     /* Several Linux ABIs don't pass the onexit pointer, and the ones that
      * do never use it.  Therefore, we ignore it.
      */
@@ -122,6 +124,5 @@ __noreturn void __libc_init(uintptr_t *elfdata,
     if (structors->fini_array)
         __cxa_atexit(__libc_fini,structors->fini_array,NULL);
 
-    apply_gnu_relro();
     exit(slingshot(argc, argv, envp));
 }