Dear all,
here follows some strange behaviour using gcc, if someone has any idea to fix :-)
We have some strange link errors while linking some servers. Our code is linked
with Tibco Hawk 4.2 The following lines shows only errors on class AmiStatus but there
are others problems (btw all link errors are related to symbols present in
libtibhawkamicpp.so)
Compilers tested were gcc 3.2.2 and 3.4.2
Our source tree is also compilable on SunOS and AIX, using Hawk 4.2 libraries for
those platforms.
Linking didn't produce any error ...
Is it a gcc bug ? are the Hawk libraries for linux broken ?
Whole gcc output on demand (12Mb)
meaningful details :
gcc link stage error messages [grep on AmiStatus]
/mylibpath/libHAT03.so: undefined reference to `AmiStatus::AmiStatus(void*)'
/mylibpath/libKMI03.so: undefined reference to `AmiStatus::getText()'
/mylibpath/libKMI03.so: undefined reference to `AmiStatus::operator=(AmiStatus const&)'
/mylibpath/libHAT03.so: undefined reference to `AmiStatus::setStatus(int, char const*,
...)'
/mylibpath/libKMI03.so: undefined reference to `AmiStatus::AmiStatus()'
/mylibpath/libKMI03.so: undefined reference to `AmiStatus::operator!=(void*)'
/mylibpath/libHAT03.so: undefined reference to `AmiStatus::operator==(void*)'
additional gcc output obtained in link stage using -Wl,--trace,--print-map,--cref
[grep on AmiStatus]
AmiStatus type_info function /mylibpath/libtibhawkamicpp.so [is a
B entry for nm]
AmiStatus virtual table /mylibpath/libtibhawkamicpp.so [is a
V entry for nm]
AmiStatus::~AmiStatus(void) /mylibpath/libtibhawkamicpp.so [is a
W entry for nm]
AmiStatus::AmiStatus() /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::AmiStatus(void*) /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::getText() /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::operator!=(void*) /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::operator=(AmiStatus const&) /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::operator==(void*) /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::setStatus(int, char const*, ...) /mylibpath/libHAT03.so [is a T entry
for nm]
AmiStatus::~AmiStatus() /mylibpath/libKMI03.so [is a T entry
for nm]
AmiStatus::~AmiStatus() /mylibpath/libKMI03.so [is a T entry
for nm]
typeinfo for AmiStatus /mylibpath/libKMI03.so
typeinfo name for AmiStatus /mylibpath/libKMI03.so
vtable for AmiStatus /mylibpath/libKMI03.so
nm -A on /mylibpath/libtibhawkamicpp.so, as you can see "undefined references" are not
so undefined at all (T)
/mylibpath/libtibhawkamicpp.so:00004230 T AmiStatus::AmiStatus(void)
/mylibpath/libtibhawkamicpp.so:000069c0 W AmiStatus::~AmiStatus(void)
/mylibpath/libtibhawkamicpp.so:00004260 T AmiStatus::AmiStatus(ami_ErrorCode)
/mylibpath/libtibhawkamicpp.so:000043c0 T AmiStatus::AmiStatus(int)
/mylibpath/libtibhawkamicpp.so:00004400 T AmiStatus::AmiStatus(int, char const *)
/mylibpath/libtibhawkamicpp.so:00004340 T AmiStatus::AmiStatus(void *)
/mylibpath/libtibhawkamicpp.so:000042a0 T AmiStatus::AmiStatus(AmiStatus const &)
/mylibpath/libtibhawkamicpp.so:000044d0 T AmiStatus::operator=(ami_ErrorCode)
/mylibpath/libtibhawkamicpp.so:00004510 T AmiStatus::operator=(void *)
/mylibpath/libtibhawkamicpp.so:000045a0 T AmiStatus::operator=(AmiStatus const &)
/mylibpath/libtibhawkamicpp.so:00004440 T AmiStatus::duplicateError(void)
/mylibpath/libtibhawkamicpp.so:000047a0 T AmiStatus::operator==(ami_ErrorCode)
/mylibpath/libtibhawkamicpp.so:00004700 T AmiStatus::operator==(void *)
/mylibpath/libtibhawkamicpp.so:00004640 T AmiStatus::operator==(AmiStatus const &)
/mylibpath/libtibhawkamicpp.so:00004890 T AmiStatus::getCode(void)
/mylibpath/libtibhawkamicpp.so:00004960 T AmiStatus::getFile(void)
/mylibpath/libtibhawkamicpp.so:00004990 T AmiStatus::getLine(void)
/mylibpath/libtibhawkamicpp.so:000048c0 T AmiStatus::getText(void)
/mylibpath/libtibhawkamicpp.so:000048f0 T AmiStatus::getThread(void)
/mylibpath/libtibhawkamicpp.so:000047e0 T AmiStatus::operator!=(ami_ErrorCode)
/mylibpath/libtibhawkamicpp.so:00004750 T AmiStatus::operator!=(void *)
/mylibpath/libtibhawkamicpp.so:000046a0 T AmiStatus::operator!=(AmiStatus const &)
/mylibpath/libtibhawkamicpp.so:00004840 T AmiStatus::operator!(void) const
/mylibpath/libtibhawkamicpp.so:00004820 T AmiStatus::ok(void) const
/mylibpath/libtibhawkamicpp.so:00005bd0 T AmiAsyncMethod::sendError(AmiSubscription *,
AmiStatus &)
/mylibpath/libtibhawkamicpp.so:00004920 T AmiStatus::setStatus(int, char const *,...)
/mylibpath/libtibhawkamicpp.so:000049c0 T AmiStatus::setStatusV(int, char const *,
void *)
/mylibpath/libtibhawkamicpp.so:00004860 T AmiStatus::stamp(char const *, int)
/mylibpath/libtibhawkamicpp.so:00006980 W AmiStatus type_info function
/mylibpath/libtibhawkamicpp.so:00009818 B AmiStatus type_info node
/mylibpath/libtibhawkamicpp.so:00008110 V AmiStatus virtual table
Any ideas ? Thanks in advance
David Denis
tel: +33 (0) 147 627 736
mailto: [EMAIL PROTECTED]
-----------------------------------------------------------------
Visit our Internet site at http://www.reuters.com
Get closer to the financial markets with Reuters Messaging - for more
information and to register, visit http://www.reuters.com/messaging
Any views expressed in this message are those of the individual
sender, except where the sender specifically states them to be
the views of Reuters Ltd.