Alexandre Julliard : winebuild: Generate MS-style imports using the OriginalFirstThunk field.

Alexandre Julliard julliard at winehq.org
Fri Sep 5 06:57:40 CDT 2008


Module: wine
Branch: master
Commit: 1abf80909981c9424b8bcc47ea363d02f585bf4f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1abf80909981c9424b8bcc47ea363d02f585bf4f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Sep  4 21:52:58 2008 +0200

winebuild: Generate MS-style imports using the OriginalFirstThunk field.

---

 tools/winebuild/import.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 5e0c172..4f6b5ba 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -746,7 +746,8 @@ static void output_immediate_imports(void)
     {
         if (dll_imports[i]->delay) continue;
         dll_name = make_c_identifier( dll_imports[i]->spec->file_name );
-        output( "\t.long 0\n" );     /* OriginalFirstThunk */
+        output( "\t.long .L__wine_spec_import_data_names+%d-.L__wine_spec_rva_base\n",  /* OriginalFirstThunk */
+                 j * get_ptr_size() );
         output( "\t.long 0\n" );     /* TimeDateStamp */
         output( "\t.long 0\n" );     /* ForwarderChain */
         output( "\t.long .L__wine_spec_import_name_%s-.L__wine_spec_rva_base\n", /* Name */
@@ -762,7 +763,7 @@ static void output_immediate_imports(void)
     output( "\t.long 0\n" );     /* FirstThunk */
 
     output( "\n\t.align %d\n", get_alignment(get_ptr_size()) );
-    output( ".L__wine_spec_import_data_ptrs:\n" );
+    output( ".L__wine_spec_import_data_names:\n" );
     for (i = 0; i < nb_imports; i++)
     {
         if (dll_imports[i]->delay) continue;
@@ -783,6 +784,13 @@ static void output_immediate_imports(void)
         }
         output( "\t%s 0\n", get_asm_ptr_keyword() );
     }
+    output( ".L__wine_spec_import_data_ptrs:\n" );
+    for (i = 0; i < nb_imports; i++)
+    {
+        if (dll_imports[i]->delay) continue;
+        for (j = 0; j < dll_imports[i]->nb_imports; j++) output( "\t%s 0\n", get_asm_ptr_keyword() );
+        output( "\t%s 0\n", get_asm_ptr_keyword() );
+    }
     output( ".L__wine_spec_imports_end:\n" );
 
     for (i = 0; i < nb_imports; i++)




More information about the wine-cvs mailing list