Ok I have fixed up my Mac OSX stack patch a bit as per the feedback -- thanks much
This only patches windef.h
There still needs to be some solution for msvcrt AND any other api entry points that are not denoted with __stdcall or __cdecl or WINAPI or WINAPIV.... This means that Morrowwind (uses msvcrt:pow just cause) will crash on OSX atm (bad alignment)
- Nick
Nick Burns wrote:
diff -u -p -r1.114 ChangeLog --- ChangeLog 24 May 2006 18:09:06 -0000 1.114 +++ ChangeLog 8 Jun 2006 07:06:10 -0000 @@ -1,3 +1,8 @@ +2006-06-08 Nick Burns adger44@hotmail.com
* include/windef.h:
If on Mac OSX (x86) use force_align_arg_pointer to fix the
stack on entry to Wine.
2006-05-24 Alexandre Julliard julliard@winehq.org
* dlls/usp10/tests/usp10.c:
You don't need to patch ChangeLog; it is update each release from GIT history. Just include the text you want in the change log in the email you send the patch with.
Index: include/windef.h
RCS file: /home/wine/wine/include/windef.h,v retrieving revision 1.103 diff -u -p -r1.103 windef.h --- include/windef.h 5 Jun 2006 12:29:21 -0000 1.103 +++ include/windef.h 8 Jun 2006 05:14:30 -0000 @@ -52,7 +52,12 @@ extern "C" { #ifndef __stdcall # ifdef __i386__ # ifdef __GNUC__ -# define __stdcall __attribute__((__stdcall__)) +# ifdef __APPLE__
/* Mac OSX uses 16-byte aligned stack and not a 4-byte one -- so
we must realign on entry */
Shouldn't this be #if defined __APPLE__ && defined __i386__?
+# define __stdcall __attribute__((__stdcall__)) __attribute((force_align_arg_pointer)) +# else +# define __stdcall __attribute__((__stdcall__)) +# endif # elif defined(_MSC_VER) /* Nothing needs to be done. __stdcall already exists */ # else
From: Robert Shearman rob@codeweavers.com Subject: Re: Feedback requested for Mac OSX x86 stack patch -- #2 Date: Thu, 08 Jun 2006 10:36:31 +0100
Nick Burns wrote:
diff -u -p -r1.114 ChangeLog --- ChangeLog 24 May 2006 18:09:06 -0000 1.114 +++ ChangeLog 8 Jun 2006 07:06:10 -0000 @@ -1,3 +1,8 @@ +2006-06-08 Nick Burns adger44@hotmail.com
* include/windef.h:
If on Mac OSX (x86) use force_align_arg_pointer to fix the stack
on entry to Wine.
2006-05-24 Alexandre Julliard julliard@winehq.org * dlls/usp10/tests/usp10.c:
You don't need to patch ChangeLog; it is update each release from GIT history. Just include the text you want in the change log in the email you send the patch with.
Got ya no changelog dealies -- was unsure about that part...
Index: include/windef.h
RCS file: /home/wine/wine/include/windef.h,v retrieving revision 1.103 diff -u -p -r1.103 windef.h --- include/windef.h 5 Jun 2006 12:29:21 -0000 1.103 +++ include/windef.h 8 Jun 2006 05:14:30 -0000 @@ -52,7 +52,12 @@ extern "C" { #ifndef __stdcall # ifdef __i386__ # ifdef __GNUC__ -# define __stdcall __attribute__((__stdcall__)) +# ifdef __APPLE__
/* Mac OSX uses 16-byte aligned stack and not a 4-byte one -- so we
must realign on entry */
Shouldn't this be #if defined __APPLE__ && defined __i386__?
Isnt .. # ifdef __i386__ # ifdef __GNUC__ # ifdef __APPLE__ ... the same? (should it be more clear?)
+# define __stdcall __attribute__((__stdcall__)) __attribute((force_align_arg_pointer)) +# else +# define __stdcall __attribute__((__stdcall__)) +# endif # elif defined(_MSC_VER) /* Nothing needs to be done. __stdcall already exists */ # else
-- Rob Shearman
- Nick