FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Bloated EXEs (reprise)
Posts: 274
Joined: Fri Apr 04, 2008 01:25 PM
Re: Bloated EXEs (reprise)
Posted: Mon Jul 24, 2017 01:43 PM

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?

Best Regards,

Gilbert Kuhnert
CTO Software GmbH
http://www.ctosoftware.de
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Bloated EXEs (reprise)
Posted: Mon Jul 24, 2017 04:39 PM
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.


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++
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Mon Jul 24, 2017 05:27 PM

No, it isn't. If I remove or add an unused lib from the list, the EXE size doesn't change.

EMG

Posts: 274
Joined: Fri Apr 04, 2008 01:25 PM
Re: Bloated EXEs (reprise)
Posted: Mon Jul 24, 2017 08:40 PM
Enrico,

just had a quick look into errsysw.prg and found this comment in it:

Code (fw): Select all Collapse
// Note: automatically executes at startup

proc ErrorSys()
    ErrorBlock( { | e | ErrorDialog( e ) } )
return


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
Best Regards,

Gilbert Kuhnert
CTO Software GmbH
http://www.ctosoftware.de
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Mon Jul 24, 2017 08:54 PM
No, I already tried this (read carefully all the messages please!):

Code (fw): Select all Collapse
FUNCTION MAIN()

    RETURN NIL


FUNCTION ERRORSYS()

    RETURN NIL


EMG
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 07:30 AM
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 ?
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 07:43 AM
hmpaquito wrote:Building exe is task of linker. If exe no decrease on remove lib is a linker problem.


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:Which is your linker name ?


ilink32. But that's irrelevant.

EMG
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 08:09 AM

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, viewtopic.php?f=6&t=33754&start=0

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 08:51 AM

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

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 09:42 AM

send me your .mak file, pls.

Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 10:14 AM

You can use buildx.bat.

EMG

Posts: 195
Joined: Sun Jul 22, 2012 07:01 PM
Re: Bloated EXEs (reprise)
Posted: Tue Jul 25, 2017 07:46 PM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Bloated EXEs (reprise)
Posted: Wed Jul 26, 2017 02:12 AM
gkuhnert 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?


yes
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Bloated EXEs (reprise)
Posted: Wed Jul 26, 2017 07:03 AM
Antonio Linares wrote:
gkuhnert 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?


yes


Then why this sample is still 3195904 in size?

Code (fw): Select all Collapse
FUNCTION MAIN()

    RETURN NIL


FUNCTION ERRORSYS()

    RETURN NIL


EMG
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Bloated EXEs (reprise)
Posted: Wed Jul 26, 2017 09:47 AM

Please check the linked modules in the map file

there is no other way to know it

regards, saludos

Antonio Linares
www.fivetechsoft.com