Alexandre Julliard : winebuild: Put the thunk hint/ name in FirstThunk too instead of zero.
Alexandre Julliard
julliard at winehq.org
Mon Sep 18 14:43:48 CDT 2017
Module: wine
Branch: master
Commit: 75a830e8e16b305cbc341037757749c333540740
URL: http://source.winehq.org/git/wine.git/?a=commit;h=75a830e8e16b305cbc341037757749c333540740
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Sep 18 15:35:20 2017 +0200
winebuild: Put the thunk hint/name in FirstThunk too instead of zero.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/winebuild/import.c | 36 +++++++++++++++++-------------------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 43dfa50..01a418f 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -708,7 +708,7 @@ int has_imports(void)
/* output the import table of a Win32 module */
static void output_immediate_imports(void)
{
- int j;
+ int i, j;
struct import *import;
if (list_empty( &dll_imports )) return; /* no immediate imports */
@@ -742,30 +742,28 @@ 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_names:\n" );
- LIST_FOR_EACH_ENTRY( import, &dll_imports, struct import, entry )
+ /* output the names twice, once for OriginalFirstThunk and once for FirstThunk */
+ for (i = 0; i < 2; i++)
{
- for (j = 0; j < import->nb_imports; j++)
+ output( ".L__wine_spec_import_data_%s:\n", i ? "ptrs" : "names" );
+ LIST_FOR_EACH_ENTRY( import, &dll_imports, struct import, entry )
{
- struct import_func *func = &import->imports[j];
- if (func->name)
- output( "\t%s .L__wine_spec_import_data_%s_%s-.L__wine_spec_rva_base\n",
- get_asm_ptr_keyword(), import->c_name, func->name );
- else
+ for (j = 0; j < import->nb_imports; j++)
{
- if (get_ptr_size() == 8)
- output( "\t.quad 0x800000000000%04x\n", func->ordinal );
+ struct import_func *func = &import->imports[j];
+ if (func->name)
+ output( "\t%s .L__wine_spec_import_data_%s_%s-.L__wine_spec_rva_base\n",
+ get_asm_ptr_keyword(), import->c_name, func->name );
else
- output( "\t.long 0x8000%04x\n", func->ordinal );
+ {
+ if (get_ptr_size() == 8)
+ output( "\t.quad 0x800000000000%04x\n", func->ordinal );
+ else
+ output( "\t.long 0x8000%04x\n", func->ordinal );
+ }
}
+ output( "\t%s 0\n", get_asm_ptr_keyword() );
}
- output( "\t%s 0\n", get_asm_ptr_keyword() );
- }
- output( ".L__wine_spec_import_data_ptrs:\n" );
- LIST_FOR_EACH_ENTRY( import, &dll_imports, struct import, entry )
- {
- for (j = 0; j < import->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" );
More information about the wine-cvs
mailing list