Silverfrost Forums

Welcome to our forums

Linking failing with large obj files

14 Oct 2016 9:45 #18116

It appears that if the size of the compiled obj file is more than 5mb, then linking (in this case into a dll) will fail. The error message is not particularly helpful. If I split the file into two and recompile, then the linking will be succesfull.

Below is the error message 004056b9 sym_compare_name(<ptr><ptr>structÄSYMBOL,<ptr><ptr>structÄSYMBOL) [+0022] 10012322 qsort [+0112] 0040275a build_executable(void) [+0cc9] 00401000 main [+0b3d]

Thanks

14 Oct 2016 11:26 #18117

Actually it appears that there is also another issue, which is related to the total size of the obj files that are linked into the dll - it appears that at around 20Mb of total obj size the linker will fail with the following error

0040275a build_executable(void) [+1658] 00401000 main [+0b3d]

15 Oct 2016 8:04 #18122

We can investigate this SLINK64 issue but it would be a great help if you were able to provide some source code that causes this failure.

18 Oct 2016 11:00 #18158

I sent you an email with the file, many thanks,

20 Jan 2017 10:08 #18726

This bug has been fixed for the next release.

2 Dec 2020 12:57 #26663

Now with 8.70 I am getting the following with a large file

***SLINK64 failure - abnormally large store block

it was working fine in 8.51. I compiled it with ftn95 /windows /sparam 0 /f2k /cfpp /VPARAM bit64 1 /64 /prog

2 Dec 2020 6:05 #26664

What is '/prog' ? It could be interpreted as /pr > /profile, which would dramatically change the size of the executable.

Oops, just found /progress, but it might be worth checking some of these options.

2 Dec 2020 7:56 #26665

StamK

Can you send me the source files. If these have not change from the previous issue then please resend them anyway.

2 Dec 2020 10:44 #26668

It would be interesting to know what is causing this problem. Is the use of variable initialisation in data or F90+ variable declaration statements causing the size problem, or is it other types of coding constructs ?

2 Dec 2020 4:15 #26682

John,

What is '/prog' ? It could be interpreted as /pr > /profile, which would dramatically change the size of the executable.

If you type ftn95 /? e.g. for ftn95 version 8.63 then options /PRofile , /PROGress_meter , /PROMote_long_ints are displayed (besides all the other options). The capitalized parts make the options unique (i.e. /PR is the same as /PRofile). You may see the options you would compile with by typing

ftn95 file.for <your options> /lis

and have a look in file file.lis having been generated as a result of the command. For example ftn95 file.for /PR /lis would generate file file.lis containing a section 'Compiler options in effect:' and in that section you will find the string 'PROFILE;'. Option /PR is only available if /64 is set. Moreover you also find information about the salflibc path and the salflibc version at the eginning of lis file fle.lis.

Unfortunately I could not find options /PRofile , /PROGress_meter if typing

ftn95 --help

and then having a look in

Compiler options - Quick referenc

Regards, Dietmar

3 Dec 2020 12:59 #26689

Paul, I just sent you by email some code that demonstrates the issue. Thanks

3 Dec 2020 1:22 #26694

StamK

SLINK64 has an internal limit on the total size of the object data. I have increased this limit and sent you a link to a new SLINK64 via a personal message.

3 Dec 2020 1:44 #26695

I can confirm that with the updated SLIN64 this issue is magically solved.

Please login to reply.