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