]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: 32 bit: remove old code to 16 bit align stack
authorCorinna Vinschen <corinna@vinschen.de>
Fri, 28 Feb 2020 13:31:56 +0000 (14:31 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Fri, 28 Feb 2020 14:02:09 +0000 (15:02 +0100)
Aligning the stack pointer using an asm statement isn't any longer
supported.  gcc-9.2.0 generates the following warning:

  init.cc:33:46: error: listing the stack pointer register '%esp'
  in a clobber list is deprecated [-Werror=deprecated]
  [...]
  init.cc:33:46: note: the value of the stack pointer after an
  'asm' statement must be the same as it was before the statement

Replace the asm expression with the gcc function attribute
`force_align_arg_pointer'.  This aligns the stack exactly as
required.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/crt0.c
winsup/cygwin/init.cc

index fee4b2e24cc9d4193deccdd26411b36cb05f8b55..ec7959a0fef3b128a00474cd3e361365447b8469 100644 (file)
@@ -16,20 +16,12 @@ extern int main (int argc, char **argv);
 
 void cygwin_crt0 (int (*main) (int, char **));
 
+#ifdef __i386__
+__attribute__ ((force_align_arg_pointer))
+#endif
 void
 mainCRTStartup ()
 {
-#ifdef __i386__
-#if __GNUC_PREREQ(6,0)
-#pragma GCC diagnostic ignored "-Wframe-address"
-#endif
-  (void)__builtin_return_address(1);
-#if __GNUC_PREREQ(6,0)
-#pragma GCC diagnostic pop
-#endif
-  asm volatile ("andl $-16,%%esp" ::: "%esp");
-#endif
-
   cygwin_crt0 (main);
 
   /* These are never actually called.  They are just here to force the inclusion
index 851a7ffed40efcb0cf5cace247d7bfa01c272fe3..7787b164c6889fee8da5acda285f2d127b1770b4 100644 (file)
@@ -19,19 +19,12 @@ unsigned threadfunc_ix[8];
 static bool dll_finished_loading;
 #define OLDFUNC_OFFSET -1
 
+#ifdef __i386__
+__attribute__ ((force_align_arg_pointer))
+#endif
 static void WINAPI
 threadfunc_fe (VOID *arg)
 {
-#ifdef __i386__
-#if __GNUC_PREREQ(6,0)
-#pragma GCC diagnostic ignored "-Wframe-address"
-#endif
-  (void)__builtin_return_address(1);
-#if __GNUC_PREREQ(6,0)
-#pragma GCC diagnostic pop
-#endif
-  asm volatile ("andl $-16,%%esp" ::: "%esp");
-#endif
   _cygtls::call ((DWORD (*)  (void *, void *)) TlsGetValue (_my_oldfunc), arg);
 }
 
This page took 0.032412 seconds and 5 git commands to generate.