|
05/14/2008 4:22 PM
post8066
|
Hi Mario,
It would appear that _Unwind_Resume was found by the linker in one of the
shared objects,
whereas under windows it wasn't, so it was pulled into the executable.
Now which one was it found in, and why the difference?!!
Mario Charest wrote:
> I have a project sitting on a QNX6 box. I can build it either from QNX6
> or from the IDE hosted on Windows, mix the two. The QNX6 disk is
> mounted via smbd, and I got Eclipse 4.5 setup to point to the project on
> the QNX6 box. Everything is based on custom makefiles. Because make
> is launches from the same set of files the compiler/linker options are
> identical in both cases.
>
> Now the problem is that the executable generated from QNX6 and Windows
> are of different size and by a lot. We are talking 90K difference ( on
> a 200k executable) once striped the difference goes down to 14K which is
> still a lot.
>
> From what I can gather the Windows version seems to pull out more stuff
> from libgcc.a then the QNX setup does.
>
> The following is some stuff is a small sample of entries I see in the
> map file generated by the Windows host that are not QNX host:
>
>
C:/QNX632/host/win32/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/libgcc.a
(unwind-dw2-fde.o)
>
>
>
C:/QNX632/host/win32/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/libgcc.a
(unwind-dw2.o)
> (_Unwind_Find_FDE)
>
> ...
>
>
C:/QNX632/host/win32/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/libgcc.a
(unwind-dw2-fde.o)
>
>
>
C:/QNX632/host/win32/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/libgcc.a
(unwind-dw2.o)
> (_Unwind_Find_FDE)
>
> ...
>
> .text 0x080676f0 0x164c
>
C:/QNX632/host/win32/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/libgcc.a
(unwind-dw2.o)
>
> 0x08068cb0 _Unwind_GetIP
> 0x08068b18 _Unwind_Resume_or_Rethrow
> 0x080678ec _Unwind_GetRegionStart
> 0x08068bf4 _Unwind_Backtrace
> ...
>
>
> I have attached the two mapfiles. Suggestion welcome.
>
>
>
> _______________________________________________
> General
> http://community.qnx.com/sf/go/post8062
>
--
cburgess@qnx.com
|
|
|
|
|
|
05/14/2008 4:29 PM
post8067
|
I remember investigating this size difference a while back. If I recall correctly, what happened was that 3.3.5 on
Neutrino was configured against a different set of binutils (the build machine's native 2.10 binutils as opposed to the
2.12 available in SP2 and newer) than the Windows hosted gcc. The misconfigure meant that the Neutrino compiler was
configured without HAVE_AS_LEB128 support. This meant that gcc would generate different exception handling code on
Windows than on Neutrino.
Regards,
Ryan Mansfield
|
|
|
|
|