Create a huge array in bss to reserve the memory area we need for PE
binaries, to prevent exec shield from mapping system libraries there.
diff --git a/loader/main.c b/loader/main.c
index 638e2ae..07e0d0f 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -20,8 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
-
-extern void wine_init( int argc, char *argv[], char *error, int error_size );
+#include "wine/library.h"
/**********************************************************************
* main
@@ -30,6 +29,11 @@
{
char error[1024];
+#ifdef __i386__
+ static char pe_load[256*1024*1024] __attribute__((aligned(4096)));
+ wine_set_pe_load_area( pe_load, sizeof(pe_load) );
+#endif
+
wine_init( argc, argv, error, sizeof(error) );
fprintf( stderr, "wine: failed to initialize: %s\n", error );
exit(1);