Alexandre Julliard : server: Use a 64-bit machine for IL executables.

Alexandre Julliard julliard at winehq.org
Tue Apr 27 16:08:58 CDT 2021


Module: wine
Branch: master
Commit: 94d19eff22cc8bad73c9165e5e7142c4c1c822c9
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=94d19eff22cc8bad73c9165e5e7142c4c1c822c9

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Apr 27 10:39:57 2021 +0200

server: Use a 64-bit machine for IL executables.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51067
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 server/mapping.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/server/mapping.c b/server/mapping.c
index a8de45482c9..c9d64856024 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -349,6 +349,18 @@ struct memory_view *get_exe_view( struct process *process )
     return LIST_ENTRY( list_head( &process->views ), struct memory_view, entry );
 }
 
+static void set_process_machine( struct process *process, struct memory_view *view )
+{
+    unsigned short machine = view->image.machine;
+
+    if (machine == IMAGE_FILE_MACHINE_I386 && (view->image.image_flags & IMAGE_FLAGS_ComPlusNativeReady))
+    {
+        if (is_machine_supported( IMAGE_FILE_MACHINE_AMD64 )) machine = IMAGE_FILE_MACHINE_AMD64;
+        else if (is_machine_supported( IMAGE_FILE_MACHINE_ARM64 )) machine = IMAGE_FILE_MACHINE_ARM64;
+    }
+    process->machine = machine;
+}
+
 /* add a view to the process list */
 static void add_process_view( struct thread *thread, struct memory_view *view )
 {
@@ -362,7 +374,7 @@ static void add_process_view( struct thread *thread, struct memory_view *view )
         else if (!(view->image.image_charact & IMAGE_FILE_DLL))
         {
             /* main exe */
-            process->machine = view->image.machine;
+            set_process_machine( process, view );
             list_add_head( &process->views, &view->entry );
             if (get_view_nt_name( view, &name ) && (process->image = memdup( name.str, name.len )))
                 process->imagelen = name.len;




More information about the wine-cvs mailing list