On Sat, 14 Jul 2012 03:08:09 +0200
Matthias Klose <doko@debian.org> wrote:
> please could you find out, which object files (if there are more than one) do
> export this symbol for a -O1 build, and attach the preprocessed source and
> command line options for these file(s)?
shell script and gzip'd pre-processed cpp file attached. I've tested in a
clean pbuilder chroot and the results for gcc-4.7 demonstrate the bug:
# sh 667341.sh
Starting with -O1
Checking for deserialize symbol:
0000000000003714 w F .text 00000000000000a1 void MailSortKeyImpl<QMailThreadSortKey>::deserialize<QDataStream>(QDataStream&)
0000000000003c40 w F .text 0000000000000048 void QMailThreadSortKey::deserialize<QDataStream>(QDataStream&)
Changing to -O2
Checking for deserialize symbol:
#
(shell script doesn't currently decompress the .cpp.gz)
shell script basically does:
# Line for pre-processed cpp file
g++ -c -pipe -O1 -Wall -W -fPIC -o qmailthreadsortkey.o qmailthreadsortkey.cpp
g++ -Wl,-O1 -shared -Wl,-soname,libqmfclient.so.1 -o libqmfclient.so.1.0.0 qmailthreadsortkey.o -L/usr/lib/${LIBDIR} -lpthread
objdump -C -t libqmfclient.so.1.0.0|grep deserialize
g++ -c -pipe -O2 -Wall -W -fPIC -o qmailthreadsortkey.o qmailthreadsortkey.cpp
g++ -Wl,-O2 -shared -Wl,-soname,libqmfclient.so.1 -o libqmfclient.so.1.0.0 qmailthreadsortkey.o -L/usr/lib/${LIBDIR} -lpthread
objdump -C -t libqmfclient.so.1.0.0|grep deserialize
where LIBDIR is /usr/lib/ followed by `dpkg-architecture -qDEB_HOST_MULTIARCH`
- might not be necessary.
HTH
--
Neil Williams
=============
http://www.linux.codehelp.co.uk/
#!/bin/sh
# Debug support for #667341
set -e
run () {
LIBDIR=`dpkg-architecture -qDEB_HOST_MULTIARCH`
if [ -f qmailthreadsortkey.o ]; then
rm qmailthreadsortkey.o
fi
if [ -f libqmfclient.so.1.0.0 ]; then
rm libqmfclient.so.1.0.0
fi
# Line for pre-processed cpp file
g++ -c -pipe ${OPTS} -Wall -W -fPIC -o qmailthreadsortkey.o qmailthreadsortkey.cpp
# original line which needs libqt4-dev installed
#g++ -c -pipe ${OPTS} -Wall -W -D_REENTRANT -fPIC -DQT_WEBKIT -DQT_BUILD_QCOP_LIB -DQMF_INTERNAL -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtSql -I/usr/include/qt4 -Isupport -I. -o qmailthreadsortkey.o qmailthreadsortkey.cpp
# Line for pre-processed cpp file
g++ -Wl,${OPTS} -shared -Wl,-soname,libqmfclient.so.1 -o libqmfclient.so.1.0.0 qmailthreadsortkey.o -L/usr/lib/${LIBDIR} -lpthread
# original line (shortened) which needs libqt4-dev installed
#g++ -Wl,${OPTS} -shared -Wl,-soname,libqmfclient.so.1 -o libqmfclient.so.1.0.0 qmailthreadsortkey.o -L/usr/lib/${LIBDIR} -lQtSql -lQtNetwork -lQtCore -lpthread
echo "Checking for deserialize symbol:"
objdump -C -t libqmfclient.so.1.0.0|grep deserialize
}
echo "Starting with -O1"
OPTS="-O1"
run
echo "Changing to -O2"
OPTS="-O2"
run
Attachment:
qmailthreadsortkey.cpp.gz
Description: Binary data
Attachment:
pgpE0yKMSIk1O.pgp
Description: PGP signature