changeset 13375:460281609f28

force compilers not to optimize/inline extend_stack_for_dll_alloca
author reimar
date Sat, 18 Sep 2004 09:10:47 +0000
parents e94036364011
children 81f6847d688a
files loader/pe_image.c
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/loader/pe_image.c	Sat Sep 18 04:20:13 2004 +0000
+++ b/loader/pe_image.c	Sat Sep 18 09:10:47 2004 +0000
@@ -895,12 +895,14 @@
  * memory below %esp;  it segfaults.
  * The extend_stack_for_dll_alloca() routine just preallocates a big chunk
  * of memory on the stack, for use by the DLLs alloca routine.
+ * Added the noinline attribute as e.g. gcc 3.2.2 inlines this function
+ * in a way that breaks it.
  */
-static void extend_stack_for_dll_alloca(void)
+static void __attribute__((noinline)) extend_stack_for_dll_alloca(void)
 {
 #ifndef __FreeBSD__
-    void* mem=alloca(0x20000);
-    *(int*)mem=0x1234;
+    volatile int* mem=alloca(0x20000);
+    *mem=0x1234;
 #endif
 }