QNX 6.0 executable code size vs. QNX 6.2

I would like to hear some comments or explanation from QSSL experts about
code size diffrence generated by qcc compiler for QNX 6.0 and QNX 6.2. I
have build the same project under different QNX versions using the same make
files and resuls are listed below where numbers are none debug executable
size in bytes. Does the size affect executable speed? Are there any
compilation parameters which must be set up for version 6.2?

All applications and librarrys are writen in C++.







6.0B (GNU library) 6.2 (GNU library) 6.2
( Dinkum library )



app1 885476 1140772
2215392

app2 115420 165148
373232

app3 237736 270088
520764

app4 81184 106912
267604

app5 412464 560080
1241000



static 743908 756732
819812

lib



dynamic 204548 389274
1190200

lib



Janusz Ruszel.

I’m not a C++ guy, but I’ll take a crack at this. IIRC in 6.0 C++ exceptions
weren’t supported or turned on when compiling. Since they are now supported
and enabled (I think as of 6.1) it could explain the size difference (since they
do add a fair bit of code from what I understand).

The ecpp lib should be the embedded dinkum C++ lib and I think it doesn’t have exception
support.

Dave Rempel

Janusz Ruszel <janusz_ruszel@baxter.com> wrote:

I would like to hear some comments or explanation from QSSL experts about
code size diffrence generated by qcc compiler for QNX 6.0 and QNX 6.2. I
have build the same project under different QNX versions using the same make
files and resuls are listed below where numbers are none debug executable
size in bytes. Does the size affect executable speed? Are there any
compilation parameters which must be set up for version 6.2?

All applications and librarrys are writen in C++.





6.0B (GNU library) 6.2 (GNU library) 6.2
( Dinkum library )



app1 885476 1140772
2215392

app2 115420 165148
373232

app3 237736 270088
520764

app4 81184 106912
267604

app5 412464 560080
1241000



static 743908 756732
819812

lib



dynamic 204548 389274
1190200

lib

Janusz Ruszel.

Okay, but what about difference between the GNU libraries? Or does the GNU
library support exceptions in the 6.2?

– igor

“David Rempel” <drempel@qnx.com> wrote in message
news:aokk61$785$1@nntp.qnx.com

I’m not a C++ guy, but I’ll take a crack at this. IIRC in 6.0 C++
exceptions
weren’t supported or turned on when compiling. Since they are now
supported
and enabled (I think as of 6.1) it could explain the size difference
(since they
do add a fair bit of code from what I understand).

The ecpp lib should be the embedded dinkum C++ lib and I think it doesn’t
have exception
support.

Dave Rempel

Janusz Ruszel <> janusz_ruszel@baxter.com> > wrote:

I would like to hear some comments or explanation from QSSL experts
about
code size diffrence generated by qcc compiler for QNX 6.0 and QNX 6.2. I
have build the same project under different QNX versions using the same
make
files and resuls are listed below where numbers are none debug
executable
size in bytes. Does the size affect executable speed? Are there any
compilation parameters which must be set up for version 6.2?

All applications and librarrys are writen in C++.







6.0B (GNU library) 6.2 (GNU library)
6.2
( Dinkum library )



app1 885476 1140772
2215392

app2 115420 165148
373232

app3 237736 270088
520764

app4 81184 106912
267604

app5 412464 560080
1241000



static 743908 756732
819812

lib



dynamic 204548 389274
1190200

lib



Janusz Ruszel.

Without looking at the numbers, I would suggest that you use the size
utility to generate the numbers. As one developer I know once told me
“ls is useless for code generation statistics”.

Thomas

Janusz Ruszel <janusz_ruszel@baxter.com> wrote:

I would like to hear some comments or explanation from QSSL experts about
code size diffrence generated by qcc compiler for QNX 6.0 and QNX 6.2. I
have build the same project under different QNX versions using the same make
files and resuls are listed below where numbers are none debug executable
size in bytes. Does the size affect executable speed? Are there any
compilation parameters which must be set up for version 6.2?

All applications and librarrys are writen in C++.





6.0B (GNU library) 6.2 (GNU library) 6.2
( Dinkum library )



app1 885476 1140772
2215392

app2 115420 165148
373232

app3 237736 270088
520764

app4 81184 106912
267604

app5 412464 560080
1241000



static 743908 756732
819812

lib



dynamic 204548 389274
1190200

lib



Janusz Ruszel.

Thomas (toe-mah) Fletcher QNX Software Systems
thomasf@qnx.com Core OS Technology Group
(613)-591-0931 http://www.qnx.com/

thomasf@qnx.com wrote:

Without looking at the numbers, I would suggest that you use the size
utility to generate the numbers. As one developer I know once told me
“ls is useless for code generation statistics”.

Unless you’re worried about installation footprint (say to an embedded
flash device), in which case it is the only metric :wink: But in that
situation you’d “strip” things prior to installation (and they should
reduce down to close to the “size” sums).

David Rempel wrote:

I’m not a C++ guy, but I’ll take a crack at this. IIRC in 6.0 C++ exceptions
weren’t supported or turned on when compiling. Since they are now supported
and enabled (I think as of 6.1) it could explain the size difference (since they
do add a fair bit of code from what I understand).

The ecpp lib should be the embedded dinkum C++ lib and I think it doesn’t have exception
support.

I wish it were that easy. Exceptions were turned on (and worked as much
as we could tell).

I also tried compiling in 6.2 with -fno-default-inline and a couple
other combinations of those flags with no noticable difference. :frowning:

Rick…


\

Rick Duff Internet: rick@astranetwork.com
Astra Network QUICS: rgduff
QNX Consulting and Custom Programming URL: http://www.astranetwork.com
+1 (204) 987-7475 Fax: +1 (204) 987-7479

John Garvey wrote:

thomasf@qnx.com > wrote:

Without looking at the numbers, I would suggest that you use the size
utility to generate the numbers. As one developer I know once told me
“ls is useless for code generation statistics”.


Unless you’re worried about installation footprint (say to an embedded
flash device), in which case it is the only metric > :wink: > But in that
situation you’d “strip” things prior to installation (and they should
reduce down to close to the “size” sums).

Ya, unfortunately flash footprint is an important part of the
consideration, and these are stripped sizes.

Rick…


\

Rick Duff Internet: rick@astranetwork.com
Astra Network QUICS: rgduff
QNX Consulting and Custom Programming URL: http://www.astranetwork.com
+1 (204) 987-7475 Fax: +1 (204) 987-7479

The difference is the change from the GNU libstdc++ C++ library to the Dinkum
library. They are different implementations, the Dinkum C++ lib being a
lot closer to the ISO standard.

If you are having serious size issues and ISO vs GNU isn’t such a big
deal to you, then use -Vgcc_ntox86_gpp which will select the GNU library.

Colin

Janusz Ruszel <janusz_ruszel@baxter.com> wrote:

I would like to hear some comments or explanation from QSSL experts about
code size diffrence generated by qcc compiler for QNX 6.0 and QNX 6.2. I
have build the same project under different QNX versions using the same make
files and resuls are listed below where numbers are none debug executable
size in bytes. Does the size affect executable speed? Are there any
compilation parameters which must be set up for version 6.2?

All applications and librarrys are writen in C++.





6.0B (GNU library) 6.2 (GNU library) 6.2
( Dinkum library )



app1 885476 1140772
2215392

app2 115420 165148
373232

app3 237736 270088
520764

app4 81184 106912
267604

app5 412464 560080
1241000



static 743908 756732
819812

lib



dynamic 204548 389274
1190200

lib



Janusz Ruszel.


cburgess@qnx.com