Bloated EXEs (reprise)
- gkuhnert
- Posts: 274
- Joined: Fri Apr 04, 2008 1:25 pm
- Location: Aachen - Germany // Kerkrade - Netherlands
- Contact:
Re: Bloated EXEs (reprise)
Antonio,
did you mean by "FWH libs replace Harbour errorsys", that the FWH owned errorsys is linked automatically and the size of the .exe can be explained by this?
did you mean by "FWH libs replace Harbour errorsys", that the FWH owned errorsys is linked automatically and the size of the .exe can be explained by this?
Re: Bloated EXEs (reprise)
Allright, but note what increase problem is no a fwh problem or harbour problem: it's a C linker problem from Embarcadero company if you use Borland C++Enrico Maria Giordano wrote:Please note that I'm not using any Harbour functions in my sample so EXE size should not increase even if FWH redefines any of those.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
No, it isn't. If I remove or add an unused lib from the list, the EXE size doesn't change.
EMG
EMG
- gkuhnert
- Posts: 274
- Joined: Fri Apr 04, 2008 1:25 pm
- Location: Aachen - Germany // Kerkrade - Netherlands
- Contact:
Re: Bloated EXEs (reprise)
Enrico,
just had a quick look into errsysw.prg and found this comment in it:
So I assume as it executes automatically at startup and it is fivehx.lib which contains ErrorSys(), it will automatically be linked in, increasing the file size of our .exe
just had a quick look into errsysw.prg and found this comment in it:
Code: Select all
// Note: automatically executes at startup
proc ErrorSys()
ErrorBlock( { | e | ErrorDialog( e ) } )
return
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
No, I already tried this (read carefully all the messages please!):
EMG
Code: Select all
FUNCTION MAIN()
RETURN NIL
FUNCTION ERRORSYS()
RETURN NIL
Re: Bloated EXEs (reprise)
Allright, but note what increase problem is no a fwh problem or harbour problem: it's a C linker problem
Enrico Maria Giordano wrote:No, it isn't. If I remove or add an unused lib from the list, the EXE size doesn't change.
EMG
No, it isn't ??
Building exe is task of linker. If exe no decrease on remove lib is a linker problem.
Which is your linker name ?
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
The linker is forced to link a module if a symbol of that module is referenced in the program. In my sample, no FWH symbols are referenced. This is demonstrated by the fact that the linker doesn't complain if I remove the FWH libs from the list. So we have to find the reason why 2.4 MB of FWH modules are linked but not used. The only reason I can think of is that FWH redefines some of the xHarbour symbols.hmpaquito wrote:Building exe is task of linker. If exe no decrease on remove lib is a linker problem.
ilink32. But that's irrelevant.hmpaquito wrote:Which is your linker name ?
EMG
Re: Bloated EXEs (reprise)
Can you paste a map file piece ?
Perhap, the trick is searchs map some file symbol in rtl of xHarbour and if founded then they are.
You work es very usefull for found if fwh overwrite some basis rtl functions.
I have a no explicable problem with harbour+ fwh... only if fwh is linking, http://forums.fivetechsupport.com/viewt ... 54&start=0
Perhap, the trick is searchs map some file symbol in rtl of xHarbour and if founded then they are.
You work es very usefull for found if fwh overwrite some basis rtl functions.
I have a no explicable problem with harbour+ fwh... only if fwh is linking, http://forums.fivetechsupport.com/viewt ... 54&start=0
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
It's almost 1 MB, too much to paste here. Please send me a private message and I will send back the map file to you.
EMG
EMG
Re: Bloated EXEs (reprise)
send me your .mak file, pls.
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
I wanted to share my observations.
First, on WIndows, I use msvc and msvc64 exclusively. Never BCC.
If I compile the sample program as is I wind up with a 650 KB executable.
If I add #include "fivewin.ch" to the top of the sample, but still with no calls at all to FWH code, and no other changes to my build scripts, I wind up with a 3.8 MB executable.
When I write programs that need to run as services I never include any part of FWH as it was not designed to run headless in a service, and will surprise with popups (MsgInfo(), etc. buried in certain classes and functions) where there should never be any desktop interaction. I share this because it is where I first noticed the .exe size differences, but I never thought much about it because the larger was always something destined for the desktop.
Robb
First, on WIndows, I use msvc and msvc64 exclusively. Never BCC.
If I compile the sample program as is I wind up with a 650 KB executable.
If I add #include "fivewin.ch" to the top of the sample, but still with no calls at all to FWH code, and no other changes to my build scripts, I wind up with a 3.8 MB executable.
When I write programs that need to run as services I never include any part of FWH as it was not designed to run headless in a service, and will surprise with popups (MsgInfo(), etc. buried in certain classes and functions) where there should never be any desktop interaction. I share this because it is where I first noticed the .exe size differences, but I never thought much about it because the larger was always something destined for the desktop.
Robb
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Bloated EXEs (reprise)
yesgkuhnert wrote:Antonio,
did you mean by "FWH libs replace Harbour errorsys", that the FWH owned errorsys is linked automatically and the size of the .exe can be explained by this?
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Bloated EXEs (reprise)
Then why this sample is still 3195904 in size?Antonio Linares wrote:yesgkuhnert wrote:Antonio,
did you mean by "FWH libs replace Harbour errorsys", that the FWH owned errorsys is linked automatically and the size of the .exe can be explained by this?
Code: Select all
FUNCTION MAIN()
RETURN NIL
FUNCTION ERRORSYS()
RETURN NIL
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Bloated EXEs (reprise)
Please check the linked modules in the map file
there is no other way to know it
there is no other way to know it