Jacek Caban : winegcc: Add support for -Wl,-delayload argument.

Alexandre Julliard julliard at winehq.org
Tue Nov 12 16:56:06 CST 2019


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Nov 11 19:56:49 2019 +0100

winegcc: Add support for -Wl,-delayload argument.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/winegcc/winegcc.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index fa4407f913..140ca07822 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -226,6 +226,7 @@ struct options
     strarray* compiler_args;
     strarray* winebuild_args;
     strarray* files;
+    strarray* delayimports;
 };
 
 #ifdef __i386__
@@ -1164,6 +1165,12 @@ static void build(struct options* opts)
     for ( j = 0 ; j < opts->winebuild_args->size ; j++ )
         strarray_add(spec_args, opts->winebuild_args->base[j]);
 
+    if (!is_pe)
+    {
+        for (j = 0; j < opts->delayimports->size; j++)
+            strarray_add(spec_args, strmake("-d%s", opts->delayimports->base[j]));
+    }
+
     /* add resource files */
     for ( j = 0; j < files->size; j++ )
 	if (files->base[j][1] == 'r') strarray_add(spec_args, files->base[j]);
@@ -1203,6 +1210,12 @@ static void build(struct options* opts)
 
     strarray_add(link_args, spec_o_name);
 
+    if (is_pe)
+    {
+        for (j = 0; j < opts->delayimports->size; j++)
+            strarray_add(spec_args, strmake("-Wl,-delayload,%s", opts->delayimports->base[j]));
+    }
+
     for ( j = 0; j < files->size; j++ )
     {
 	const char* name = files->base[j] + 2;
@@ -1423,6 +1436,7 @@ int main(int argc, char **argv)
     opts.linker_args = strarray_alloc();
     opts.compiler_args = strarray_alloc();
     opts.winebuild_args = strarray_alloc();
+    opts.delayimports = strarray_alloc();
     opts.pic = 1;
 
     /* determine the processor type */
@@ -1672,6 +1686,11 @@ int main(int argc, char **argv)
                                 opts.subsystem = strdup( Wl->base[++j] );
                                 continue;
                             }
+                            if (!strcmp(Wl->base[j], "-delayload") && j < Wl->size - 1)
+                            {
+                                strarray_add( opts.delayimports, Wl->base[++j] );
+                                continue;
+                            }
                             if (!strcmp(Wl->base[j], "-static")) linking = -1;
                             strarray_add(opts.linker_args, strmake("-Wl,%s",Wl->base[j]));
                         }




More information about the wine-cvs mailing list