libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] libtool on cygwin [2/4]: fix building modules


From: Charles Wilson
Subject: [PATCH] libtool on cygwin [2/4]: fix building modules
Date: Wed, 05 Nov 2003 05:14:52 -0500
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624

$global_symbol_list gives this when applied to nm -B of static lib ("good"):

D _m4_LTX_m4_builtin_table m4_LTX_m4_builtin_table
T _m4_LTX_m4_dump_symbols m4_LTX_m4_dump_symbols
T _m4_LTX_m4_expand_ranges m4_LTX_m4_expand_ranges
T _m4_LTX_m4_init_module m4_LTX_m4_init_module
T _m4_LTX_m4_set_sysval m4_LTX_m4_set_sysval
T _m4_LTX_m4_sysval_flush m4_LTX_m4_sysval_flush
D _m4_sysval m4_sysval

But it gives this when applied to nm -B of import lib ("bad"):

I _m4_0_dll_iname m4_0_dll_iname
I __head_m4_0_dll _head_m4_0_dll
I __imp__m4_sysval _imp__m4_sysval
I __nm__m4_sysval _nm__m4_sysval
I __imp__m4_LTX_m4_sysval_flush _imp__m4_LTX_m4_sysval_flush
T _m4_LTX_m4_sysval_flush m4_LTX_m4_sysval_flush
I __imp__m4_LTX_m4_set_sysval _imp__m4_LTX_m4_set_sysval
T _m4_LTX_m4_set_sysval m4_LTX_m4_set_sysval
I __imp__m4_LTX_m4_init_module _imp__m4_LTX_m4_init_module
T _m4_LTX_m4_init_module m4_LTX_m4_init_module
I __imp__m4_LTX_m4_expand_ranges _imp__m4_LTX_m4_expand_ranges
T _m4_LTX_m4_expand_ranges m4_LTX_m4_expand_ranges
I __imp__m4_LTX_m4_dump_symbols _imp__m4_LTX_m4_dump_symbols
T _m4_LTX_m4_dump_symbols m4_LTX_m4_dump_symbols
I __imp__m4_LTX_m4_builtin_table _imp__m4_LTX_m4_builtin_table
I __nm__m4_LTX_m4_builtin_table _nm__m4_LTX_m4_builtin_table

When building --enable-shared --disable-static, then all you HAVE is the import lib and you're stuck with the "bad" output above.

When given the "good" output above, current $export_symbols_cmds will produce this output:

m4_LTX_m4_builtin_table DATA
m4_LTX_m4_dump_symbols
m4_LTX_m4_expand_ranges
m4_LTX_m4_init_module
m4_LTX_m4_set_sysval
m4_LTX_m4_sysval_flush
m4_sysval DATA

But when given the "bad" output it produces:

_head_m4_0_dll
_imp__m4_LTX_m4_builtin_table
_imp__m4_LTX_m4_dump_symbols
_imp__m4_LTX_m4_expand_ranges
_imp__m4_LTX_m4_init_module
_imp__m4_LTX_m4_set_sysval
_imp__m4_LTX_m4_sysval_flush
_imp__m4_sysval
_nm__m4_LTX_m4_builtin_table
_nm__m4_sysval
m4_0_dll_iname
m4_LTX_m4_dump_symbols
m4_LTX_m4_expand_ranges
m4_LTX_m4_init_module
m4_LTX_m4_set_sysval
m4_LTX_m4_sysval_flush

With the attached patch, both "good" and "bad" $global_symbol_list result in the proper export_symbol list:

m4_LTX_m4_builtin_table DATA
m4_LTX_m4_dump_symbols
m4_LTX_m4_expand_ranges
m4_LTX_m4_init_module
m4_LTX_m4_set_sysval
m4_LTX_m4_sysval_flush
m4_sysval DATA

--
Chuck



2003-11-05  Charles Wilson  <address@hidden>

        * m4/libtool.m4: when extracting symbols from an 
        import lib (occurs if --enable-shared --disable-static),
        the output of $global_symbol_pipe is not the same as
        when extracting from a static library (the default case).
        Add extra filters $export_symbols_cmds to process this 
        sort of output in addition to 'normal' static-lib output.
Index: m4/libtool.m4
===================================================================
RCS file: /cvsroot/libtool/libtool/m4/libtool.m4,v
retrieving revision 1.9
diff -u -r1.9 libtool.m4
--- m4/libtool.m4       30 Oct 2003 14:28:00 -0000      1.9
+++ m4/libtool.m4       3 Nov 2003 16:35:13 -0000
@@ -5080,7 +5080,7 @@
     _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
   ;;
   cygwin* | mingw*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
$global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | 
$SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
$global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | 
$SED -e '\''/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/'\'' | $SED -e 
'\''/^I /d'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > 
$export_symbols'
   ;;
   *)
     _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | 
$global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'

reply via email to

[Prev in Thread] Current Thread [Next in Thread]