Module: wine Branch: master Commit: 0c853f026578dd7c8aede2f716c8e55d816ccf40 URL: https://source.winehq.org/git/wine.git/?a=commit;h=0c853f026578dd7c8aede2f71...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Sep 27 13:57:06 2019 +0200
msvcrt: Move vtbl wrappers together with the other functions.
The .text directive can mess up the variable definitions.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47751 Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/scheduler.c | 52 ++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/dlls/msvcrt/scheduler.c b/dlls/msvcrt/scheduler.c index 9e0de95740..53a9669fea 100644 --- a/dlls/msvcrt/scheduler.c +++ b/dlls/msvcrt/scheduler.c @@ -36,32 +36,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); static int context_id = -1; static int scheduler_id = -1;
-#if defined(__i386__) && !defined(__MINGW32__) - -#define DEFINE_VTBL_WRAPPER(off) \ - __ASM_GLOBAL_FUNC(vtbl_wrapper_ ## off, \ - "popl %eax\n\t" \ - "popl %ecx\n\t" \ - "pushl %eax\n\t" \ - "movl 0(%ecx), %eax\n\t" \ - "jmp *" #off "(%eax)\n\t") - -DEFINE_VTBL_WRAPPER(0); -DEFINE_VTBL_WRAPPER(4); -DEFINE_VTBL_WRAPPER(8); -DEFINE_VTBL_WRAPPER(12); -DEFINE_VTBL_WRAPPER(16); -DEFINE_VTBL_WRAPPER(20); -DEFINE_VTBL_WRAPPER(24); -DEFINE_VTBL_WRAPPER(28); -DEFINE_VTBL_WRAPPER(32); -DEFINE_VTBL_WRAPPER(36); -DEFINE_VTBL_WRAPPER(40); -DEFINE_VTBL_WRAPPER(44); -DEFINE_VTBL_WRAPPER(48); - -#endif - typedef enum { SchedulerKind, MaxConcurrency, @@ -1083,6 +1057,32 @@ void __cdecl _CurrentScheduler__ScheduleTask(void (__cdecl *proc)(void*), void * CurrentScheduler_ScheduleTask(proc, data); }
+#if defined(__i386__) && !defined(__MINGW32__) + +#define DEFINE_VTBL_WRAPPER(off) \ + __ASM_GLOBAL_FUNC(vtbl_wrapper_ ## off, \ + "popl %eax\n\t" \ + "popl %ecx\n\t" \ + "pushl %eax\n\t" \ + "movl 0(%ecx), %eax\n\t" \ + "jmp *" #off "(%eax)\n\t") + +DEFINE_VTBL_WRAPPER(0); +DEFINE_VTBL_WRAPPER(4); +DEFINE_VTBL_WRAPPER(8); +DEFINE_VTBL_WRAPPER(12); +DEFINE_VTBL_WRAPPER(16); +DEFINE_VTBL_WRAPPER(20); +DEFINE_VTBL_WRAPPER(24); +DEFINE_VTBL_WRAPPER(28); +DEFINE_VTBL_WRAPPER(32); +DEFINE_VTBL_WRAPPER(36); +DEFINE_VTBL_WRAPPER(40); +DEFINE_VTBL_WRAPPER(44); +DEFINE_VTBL_WRAPPER(48); + +#endif + extern const vtable_ptr MSVCRT_type_info_vtable; DEFINE_RTTI_DATA0(Context, 0, ".?AVContext@Concurrency@@") DEFINE_RTTI_DATA1(ContextBase, 0, &Context_rtti_base_descriptor, ".?AVContextBase@details@Concurrency@@")