Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-12-21 21:19:48 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-12-21 21:19:48 +0400
commitf500a700b15d6a55202cfac4cc05039ba23e9361 (patch)
treea49bf641fed48fc2537d70e8b7c2aa04108eae84 /winsup/cygwin/dcrt0.cc
parent40fb18380bf18739b8e6bd4a05fc7b02cbc8e84b (diff)
* dcrt0.cc (_dll_crt0): Rephrase comments. Set $ebp to NULL, as in
the pthread stack setup. * wow64.cc (wow64_revert_to_original_stack): Rephrase some comments. Return _tlsbase-16 rather than _main_tls-4 so as not to waste stack.
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r--winsup/cygwin/dcrt0.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index 8d5017715..827ab143d 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -951,19 +951,21 @@ _dll_crt0 ()
description. */
if (wow64_needs_stack_adjustment && !dynamically_loaded)
{
- /* Must be static since it's referenced after the stack pointers have
- been moved. */
+ /* Must be static since it's referenced after the stack and frame
+ pointer registers have been changed. */
static PVOID allocationbase = 0;
- /* Check if we just move the stack. See comment in
+ /* Check if we just move the stack. If so, wow64_revert_to_original_stack
+ returns a non-NULL, 16 byte aligned address. See comments in
wow64_revert_to_original_stack for the gory details. */
PVOID stackaddr = wow64_revert_to_original_stack (allocationbase);
if (stackaddr)
{
- /* 2nd half of the stack move. Set stack pointers to new address. */
+ /* 2nd half of the stack move. Set stack pointer to new address.
+ Set frame pointer to 0. */
__asm__ ("\n\
movl %[ADDR], %%esp \n\
- movl %%esp, %%ebp \n"
+ xorl %%ebp, %%ebp \n"
: : [ADDR] "r" (stackaddr));
/* Now we're back on the original stack. Free up space taken by the
former main thread stack and set DeallocationStack correctly. */