More Cygwin breakage

Dmitry Timoshkov dmitry at baikal.ru
Sat Feb 21 11:13:38 CST 2004


"Alexandre Julliard" <julliard at winehq.org> wrote:

> That doesn't mean it shouldn't be fixed. Sure someone will have to do
> that work, but it's much better than hiding the problem by adding
> extra code to Wine.

Just to make you all know: I've found and fixed a bug in dlltool preventing
exporting non-named and forwarded DLL entries.

The patch is attached.

Changelog:
2004-02-22  Dmitry Timoshkov  <dmitry at baikal.ru>

    * dlltool.c (gen_exp_file): Even not named exported entries need a name
    in the Export Name Table in the case case they are forwarded to a name
    in another DLL.

Here is a simplest test case which shows a problem:

--- test.def --
LIBRARY test.dll

EXPORTS
  exported_api=kernel32.GetVersion @1 NONAME
--- EOF ---

$>dllwrap --def test.def -o test.dll
test.exp(.edata+0x34):fake: undefined reference to `f1'
collect2: ld returned 1 exit status
dllwrap: gcc exited with status 1

-- 
Dmitry.
-------------- next part --------------
--- src/binutils/dlltool.c	Tue Nov 25 19:50:04 2003
+++ dlltool.c	Sat Feb 21 16:42:04 2004
@@ -1841,13 +1841,13 @@ gen_exp_file (void)
 
       fprintf(f,"%s Export Name Table\n", ASM_C);
       for (i = 0; (exp = d_exports_lexically[i]); i++)
-	if (!exp->noname || show_allnames)
-	  {
+	{
+	  if (!exp->noname || show_allnames)
 	    fprintf (f, "n%d:	%s	\"%s\"\n",
 		     exp->ordinal, ASM_TEXT, xlate (exp->name));
-	    if (exp->forward != 0)
-	      fprintf (f, "f%d:	%s	\"%s\"\n",
-		       exp->forward, ASM_TEXT, exp->internal_name);
+	  if (exp->forward != 0)
+	    fprintf (f, "f%d:	%s	\"%s\"\n",
+		     exp->forward, ASM_TEXT, exp->internal_name);
 	  }
 
       if (a_list)


More information about the wine-devel mailing list