2003-09-24 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/dl-execstack.c
+ (_dl_make_stack_executable): Remember that we changed the permission.
+
* sysdeps/ia64/dl-machine.h (RTLD_START): Remove setting of
__libc_stack_end. Patch by David Mosberger.
2003-09-24 Ulrich Drepper <drepper@redhat.com>
+ * allocatestack.c (__make_stacks_executable): Also change
+ permission of the currently unused stacks.
+
* allocatestack.c (change_stack_perm): Split out from
__make_stacks_executable.
(allocate_stack): If the required permission changed between the time
break;
}
+ /* Also change the permission for the currently unused stacks. This
+ might be wasted time but better spend it here than adding a check
+ in the fast path. */
+ list_for_each (runp, &stack_cache)
+ {
+ err = change_stack_perm (list_entry (runp, struct pthread, list)
+#ifdef NEED_SEPARATE_REGISTER_STACK
+ , pagemask
+#endif
+ );
+ if (err != 0)
+ break;
+ }
+
lll_unlock (stack_cache_lock);
if (err == 0)
# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
#endif
+ /* Remember that we changed the permission. */
+ GL(dl_stack_flags) |= PF_X;
+
return 0;
}
rtld_hidden_def (_dl_make_stack_executable)