Hmmm, this undefined reference must be coming from somewhere.
I would run your program in the debugger, then when it has failed, but
is still loaded, do a ‘pidin mem’ to see which shared objects are loaded,
and check them all for __cmpdi2
Xuedong Chen <Xuedong.Chen@igt.com> wrote:
Yes. I did. But no difference.
Xuedong
“Colin Burgess” <> cburgess@qnx.com> > wrote in message
news:9jk44m$bip$> 1@nntp.qnx.com> …
If you are compiling for 6.1, then you have the latest.
Just for laughts, would you try removing the strip-all option and see if
this fixes things?
Xuedong Chen <> Xuedong.Chen@igt.com> > wrote:
Thanks.
My process is dynamically linked against:
- libc.so.2, libm.so.2, libcpp.so.2
- my own shared object.
I used “n -u -D” to list all undefined symbols in my own shared object,
there is no ‘__cmpdi2’ inside of it.
I am working in a cross development environment, I compile/link
everything
in my Win 2000 box, then run it from QNX 6.1 box (I mount my working
directory in Win 2000 box into QNX file system by fs-cifs), I am not
sure if
the header files /library in my Win2000 box are the latest one to match
QNX
6.1, could you please tell me where I can get the latest ?
Xuedong
“Colin Burgess” <> cburgess@qnx.com> > wrote in message
news:9jjs8u$724$> 1@nntp.qnx.com> …
Could it be that one of your shared objects needs it?
use nm -u -D sharedobject.so
Xuedong Chen <> Xuedong.Chen@igt.com> > wrote:
No, here is my link option:
-lang-c++ -Wl,–strip-all
Under QNX 6.0, we disabled the exception, we never see this problem.
Under
QNX 6.1, the exception is enabled. I noticed that compiler generates
“__cmpdi2” symbol for one of my object files. But this symbol
disappear
in
the final executable file after linking.
What I don’t understand is that libgcc.a is a static lib, it should
be
linked into my code at linking time. Why are there some symbol from
it
need
to be resolved at run time?
I used “nm -dynamic” to list all symbols contained in my executable,
actually “__cmpdi2” was not there. It seems to me these errors are
reported
by the run time linker, how does the run time linker know “__cmpdi2”
need to
be resloved for my exeutable?
Please help. Thanks.
Xuedong
“Colin Burgess” <> cburgess@qnx.com> > wrote in message
news:9jilj2$db4$> 1@nntp.qnx.com> …
__cmpdi2 is in /usr/lib/gcc-lib/ntox86/2.95.2/exceptions/libgcc.a,
which
is normally
linked in by default.
Are you using strange linking options such as -nostartup
or -nostdlib?
Xuedong Chen <> Xuedong.Chen@igt.com> > wrote:
Hi all:
When starting a process under QNX 6.1, I always get:
-Started: PID: 217144 /IGT/projects/DriverLightBezel/LightBezel
unknown symbol: __cmpdi2
Could not resolve all symbols
unknown symbol: __cmpdi2
Could not resolve all symbols
unknown symbol: __cmpdi2
Could not resolve all symbols
unknown symbol: __cmpdi2
Could not resolve all symbols
unknown symbol: __cmpdi2
Could not resolve all symbols
unknown symbol: __cmpdi2
Could not resolve all symbols
I don’t think this symbol coming from my object file. Can anybody
help?
Thanks.
Xuedong
\
cburgess@qnx.com
–
cburgess@qnx.com