* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS) [dumpbin]:

Symbols in "pick any" sections are not global. Use
awk, not sed, in the global_symbol_pipe so that keeping
track of sections is easier.
* doc/libtool.texi (libtool script contents): Update to hint
at new findings concerning "pick any" sections.
This commit is contained in:
Peter Ekberg 2005-09-08 08:25:35 +00:00 committed by Ralf Wildenhues
parent ea0ebd6da1
commit aa7580d941
3 changed files with 22 additions and 6 deletions

View File

@ -1,3 +1,12 @@
2005-09-08 Peter Ekberg <peda@axentia.se>
* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS) [dumpbin]:
Symbols in "pick any" sections are not global. Use
awk, not sed, in the global_symbol_pipe so that keeping
track of sections is easier.
* doc/libtool.texi (libtool script contents): Update to hint
at new findings concerning "pick any" sections.
2005-09-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* tests/early-libtool.at (config.status): Use EXEEXT

View File

@ -5017,7 +5017,8 @@ formats:
@end example
The @var{size} of the global variables are not zero and the @var{section}
of the global functions are not "UNDEF".
of the global functions are not "UNDEF". Symbols in "pick any" sections
("pick any" appears in the section header) are not global either.
@end defvar
@defvar RANLIB

16
libltdl/m4/libtool.m4 vendored
View File

@ -3078,11 +3078,17 @@ for ac_symprfx in "" "_"; do
# and D for any global variable.
# Also find C++ and __fastcall symbols from MSVC++,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$SED -n -e ['/ UNDEF [^|]*()/d; / 00* UNDEF /d;
s/.*().*External *| *$ac_symprfx$sympat.*/T $ac_symprfx\1 \1/p;
s/.*External *| *$ac_symprfx$sympat.*/D $ac_symprfx\1 \1/p;
s/.*().*External *| *\([@?][_A-Za-z0-9@?]*\).*/T \1 \1/p;
s/.*External *| *\([@?][_A-Za-z0-9@?]*\).*/D \1 \1/p']"
lt_cv_sys_global_symbol_pipe="$AWK ['
{last_section=section; section=\$ 3}
/Section length .*#relocs.*(pick any)/{hide[last_section]=1}
\$ 0!~/External *\|/{next}
/ 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next}
{if(hide[section]) next}
{f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"}
{split(\$ 0, a, /\||\r/); split(a[2], s)}
s[1]~/^[@?]/{print s[1], s[1]; next}
s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}
' prfx=^$ac_symprfx]"
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi