]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
2005-02-07 Ulrich Drepper <drepper@redhat.com>
authorRoland McGrath <roland@gnu.org>
Wed, 16 Feb 2005 11:20:29 +0000 (11:20 +0000)
committerRoland McGrath <roland@gnu.org>
Wed, 16 Feb 2005 11:20:29 +0000 (11:20 +0000)
* elf/dl-load.c (_dl_map_object_from_fd): Makre sure registers are
set correctly.

elf/dl-load.c

index 3da3df7346b2dbebd26ea6047e899c1257ebd8bb..ab1080e51f2cf79ea8747aeb7f3b1cfc2157baf6 100644 (file)
@@ -36,6 +36,7 @@
 #include <dl-osinfo.h>
 #include <stackinfo.h>
 #include <caller.h>
+#include <sysdep.h>
 
 #include <dl-dst.h>
 
@@ -105,13 +106,11 @@ ELF_PREFERRED_ADDRESS_DATA;
 
 
 int __stack_prot attribute_hidden attribute_relro
-  = (PROT_READ|PROT_WRITE
 #if _STACK_GROWS_DOWN && defined PROT_GROWSDOWN
-     |PROT_GROWSDOWN
+  = PROT_GROWSDOWN;
 #elif _STACK_GROWS_UP && defined PROT_GROWSUP
-     |PROT_GROWSUP
+  = PROT_GROWSUP;
 #endif
-     );
 
 
 /* Type for the buffer we put the ELF header and hopefully the program
@@ -1327,12 +1326,16 @@ cannot allocate TLS data structures for initial thread");
          if (__builtin_expect (__check_caller (RETURN_ADDRESS (0),
                                                allow_ldso|allow_libc) == 0,
                                0))
-           __stack_prot |= PROT_EXEC;
+           __stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
          __mprotect ((void *) p, s, PROT_READ);
        }
       else
 #endif
-       __stack_prot |= PROT_EXEC;
+       __stack_prot |= PROT_READ|PROT_WRITE|PROT_EXEC;
+
+#ifdef check_consistency
+      check_consistency ();
+#endif
 
       errval = (*GL(dl_make_stack_executable_hook)) (stack_endp);
       if (errval)