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/
Attachment:
pgpFrMKWafcU1.pgp
Description: PGP signature