Dropping the optimisation on src/libraries/qmfclient/ from -O2 to -O1 fixes the issue:
# objdump -C -t src/libraries/qmfclient/build/libqmfclient.so.1.0.0 |grep QMailThreadSort|grep serial|cut -d' ' -f5- F .text 0000000000000012 void QMailThreadSortKey::serialize<QDataStream>(QDataStream&) const F .text 00000000000000a1 void MailSortKeyImpl<QMailThreadSortKey>::deserialize<QDataStream>(QDataStream&) F .text 0000000000000048 void QMailThreadSortKey::deserialize<QDataStream>(QDataStream&) F .text 00000000000000cb void MailSortKeyImpl<QMailThreadSortKey>::serialize<QDataStream>(QDataStream&) const .. albeit defining a pair of new symbols... The functions themselves are public. class QMF_EXPORT QMailThreadSortKey { public: enum Property { Id, ServerUid }; typedef QMailSortKeyArgument<Property> ArgumentType; public: <snip> bool isEmpty() const; const QList<ArgumentType> &arguments() const; template <typename Stream> void serialize(Stream &stream) const; template <typename Stream> void deserialize(Stream &stream); Why is gcc-4.7 overriding the class and optimising away a public symbol in -O2 when it does not in -O1 or in gcc-4.6 with -O2? -- Neil Williams ============= http://www.linux.codehelp.co.uk/
pgpVJo4UKVg7b.pgp
Description: PGP signature