https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123908
Martin Storsjö <martin at martin dot st> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |martin at martin dot st
--- Comment #18 from Martin Storsjö <martin at martin dot st> ---
I can reproduce this.
When libstdc++-6.dll is linked (and libstdc++.dll.a is created at the same
time), it is linked with -Wl,--version-script=libstdc++-symbols.ver, and this
limits which symbols are exposed out from a shared library.
The version script file seems to be composed from different pieces -
regenerating it looks like this:
$ make libstdc++-symbols.ver
cp /build/gcc/libstdc++-v3/config/abi/pre/gnu.ver libstdc++-symbols.ver.tmp
chmod +w libstdc++-symbols.ver.tmp
if test "x../../../../libstdc++-v3/config/abi/pre/float128.ver" != x; then \
if grep '^# Appended to version file.' \
../../../../libstdc++-v3/config/abi/pre/float128.ver > /dev/null 2>&1;
then \
cat ../../../../libstdc++-v3/config/abi/pre/float128.ver >>
libstdc++-symbols.ver.tmp; \
else \
sed -n '1,/DO NOT DELETE/p' libstdc++-symbols.ver.tmp > tmp.top; \
sed -n '/DO NOT DELETE/,$p' libstdc++-symbols.ver.tmp > tmp.bottom; \
cat tmp.top ../../../../libstdc++-v3/config/abi/pre/float128.ver tmp.bottom
> libstdc++-symbols.ver.tmp; \
rm tmp.top tmp.bottom; \
fi; \
fi
/usr/bin/grep -E -v '^[ ]*#(#| |$)' libstdc++-symbols.ver.tmp | \
/build/gcc/build-x86_64/./gcc/xgcc -B/build/gcc/build-x86_64/./gcc/
-L/opt/gcc-mingw/x86_64-w64-mingw32/lib -L/opt/gcc-mingw/mingw/lib -isystem
/opt/gcc-mingw/x86_64-w64-mingw32/include -isystem /opt/gcc-mingw/mingw/include
-B/opt/gcc-mingw/x86_64-w64-mingw32/bin/
-B/opt/gcc-mingw/x86_64-w64-mingw32/lib/ -isystem
/opt/gcc-mingw/x86_64-w64-mingw32/include -isystem
/opt/gcc-mingw/x86_64-w64-mingw32/sys-include -E -P -include ../config.h - >
libstdc++-symbols.ver || (rm -f libstdc++-symbols.ver ; exit 1)
rm -f libstdc++-symbols.ver.tmp