On Wed, Sep 28, 2005 at 11:03:49AM +0200, Ralf Wildenhues wrote:
> Hi Peter,
> 
> * Peter Ekberg wrote on Tue, Sep 27, 2005 at 02:13:46PM CEST:
> > * Ralf Wildenhues wrote on Sunday, September 25, 2005 15:10 CEST:
> > > 
> > > That's just because you try to avoid any extra copy, which requires
> > > quite some logic, as seen in your proposed patch.
> > 
> > I you don't mind the extra copy, here's a patch which does that instead.
> 
> Hmm.  The improved simplicity is very appealing.  However, I think the
> *.uexp file should be removed after linking (see $delfiles).

Fixed in this patch, I also cleaned up the temporary files used to
filter the dll symbols.

> (The fact that we don't fail on write errors is of course an issue in 
> both cases; lets worry about this later, not now.)
> 
> Also, you should make this conditional on nonempty $include_expsyms;
> no need to punish all users here.

Right...

> > > > Ok, here's a patch. I renamed the orig_export_symbols variable
> > > > as it's now not always the original export_symbols value...
> > > 
> > > I tried hard to find an error in the patch, but failed.
> > > Please install, I think it's ok.
> > 
> > Yes, I tested thoroughly, it was a mess.
> 
> I'm sorry.

No problem, a mess/maze once in a while can be fun.

> >     * libltdl/config/ltmain.m4sh (func_mode_link): Don't modify
> >     user provided symbols file.
> 
> Well, which approach do you like better?  I'd have a slight preference
> for this one, but don't care too much.

I can certainly live without the entangled maze that was the first attempt.

        * libltdl/config/ltmain.m4sh (func_mode_link): Don't modify
        user provided symbols file. Adjust removal of temporary files
        and also remove temporary files used during symbols file
        filtering.

Cheers,
Peter
Index: libltdl/config/ltmain.m4sh
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.11
diff -u -r1.11 ltmain.m4sh
--- libltdl/config/ltmain.m4sh  25 Sep 2005 07:35:58 -0000      1.11
+++ libltdl/config/ltmain.m4sh  28 Sep 2005 15:11:12 -0000
@@ -4932,6 +4932,13 @@
        # Use standard objects if they are pic
        test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e 
"$lo2o" | $NL2SP`
 
+       delfiles=
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+         export_symbols="$output_objdir/$libname.uexp"
+         delfiles="$delfiles $export_symbols"
+       fi
+
        orig_export_symbols=
        case $host_os in
        cygwin* | mingw*)
@@ -4999,6 +5006,7 @@
          # global variables. join(1) would be nice here, but unfortunately
          # isn't a blessed tool.
          $opt_dry_run || $SED -e '/[[ ,]]DATA/!d;s,\(.*\)\([[ 
\,]].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+         delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
          export_symbols=$output_objdir/$libname.def
          $opt_dry_run || $SED -f $output_objdir/$libname.filter < 
$orig_export_symbols > $export_symbols
        fi
@@ -5084,7 +5092,6 @@
          test_cmds=
          concat_cmds=
          objlist=
-         delfiles=
          last_robj=
          k=1
 
@@ -5211,9 +5218,10 @@
              cmds=$archive_cmds
            fi
          fi
+       fi
 
-         # Append the command to remove the reloadable object files
-         # to the just-reset $cmds.
+       if test -n "$delfiles"; then
+         # Append the command to remove temporary files to $cmds.
          eval cmds=\"\$cmds~\$RM $delfiles\"
        fi
 

Reply via email to