Silverfrost Forums

Welcome to our forums

FTN95 64-bit beta test

9 Nov 2015 11:16 #16978

Paul, Will i be able to use third-party 32bit LIB files with 64bit code in the places where more then 2GB is not needed?

9 Nov 2015 11:39 #16979

Dan

No, that would not work. Also it is unlikely that you will be able to use third party 64 bit static lib files, at least not at the moment.

If you need to use a third party compiler, then you will probably need to create a 64 bit DLL.

11 Nov 2015 11:00 #16988

Paul,

Is it possible to post an example of building and loading/using a .dll with slink64, say with three .f95 files. (an example with SLINK also would be good) Would there be any change if one of the .f95 files also had a module ?

John

12 Nov 2015 8:40 #16994
slink /dll /exportall file1.obj file2.obj file3.obj /file:mylib.dll

slink64 file1.obj file2.obj file3.obj /file mylib.dll

You can use modules but module data is only local to its own DLL or executable. Data can not be shared.

4 Jan 2016 10:01 #17108

Hello Paul,

in a post of mine as of 2nd November 2015 I addressed an integer*2 problem which you told me about that it had been fixed.

Now I wonder how I would get hold of this fix. Is it a part of the Beta version addressed by the link

http://www.ftn95.co.uk/ftn95/ftn95-8.00beta/FTN95_Update_Beta.2.exe

?

Regards, Dietmar

4 Jan 2016 11:31 #17109

Dietmar

It will be in any beta released after that date. I understand that a beta 3 is about to be released.

4 Jan 2016 1:30 #17111

On Fri Oct 30, 2015,

Quoted from PaulLaidler

I was hoping that a DOS command like COPY would do the trick but I have tried COPY and it does not work for me.

I do not know what you exactly did, but for using the CMD.EXE COPY command with non-text files you must use the /B option. Otherwise, each file will be truncated at the first CTRL+Z (0x1A) byte (a gift to us that originated in VMS and CPM). I cannot verify this comment/suggestion because the beta release has not been made generally available.

4 Jan 2016 2:12 #17112

I will have used /B. The 64 bit beta is available on request provided that you have a support licence.

15 Feb 2016 3:03 #17191

In what state F64 is right now? 'When i'm 64' 😃?

15 Feb 2016 8:32 #17193

When are you 64?

We are hoping the 64-bit compiler will be quite soon.


-- Admin Silverfrost Limited
15 Feb 2016 8:32 #17194

When are you 64?

We are hoping the 64-bit compiler will be quite soon.


-- Admin Silverfrost Limited
15 Feb 2016 11:20 #17197

Well, it will take some time to me to reach 64 😃

I count months from the point i expected it to be ready a year ago. Every month of delay for me like an extra tooth pain

Will the 64 bit debugger work with it too?

15 Feb 2016 11:20 #17198

Well, it will take some time to me to reach 64 😃

I count months from the point i expected it to be ready a year ago. Every month of delay for me like an extra tooth pain

Will the 64 bit debugger work with it too?

16 Feb 2016 8:49 #17202

There is a 64-bit debugger (a beta one I must add).


-- Admin Silverfrost Limited
17 Feb 2016 2:55 #17214

Please accelerate the release

Hope you are talking about true 64bit debugger, not the trick of scaling the task down to 32bit and use older 32bit debugger to find the error. That is totally unacceptable for me as scaling down the elephant to mosquito and then back

17 Feb 2016 8:39 #17216

I have seen those elephant mosquitoes and they are impressive beasts


-- Admin Silverfrost Limited
18 Feb 2016 7:14 #17217

OK, but please do not leave from your sight while working on F64 that those are still a mosquitos, while we need the elephants 😃

17 Mar 2016 4:35 #17311

one more month... one+ year delay. what the hell, Silverfrost?

23 Mar 2016 5:14 #17333

Hello,

having successfully ported some small Fortran applications (with and without a GUI) from 32 bit to 64 bit, we have tried to do the same for a bigger application, too. Because there is no way to produce static libraries in the 64 bit version of the SALFORD compile environment, we decided to create an object file for every of our libraries and link against these object files.

However, we ran into several proplems where slim64.exe produced an access violation at run time. One of these problems is the following.

IMPLICIT NONE
      
      INTEGER*2 plus
      
      INTEGER*2 a,b,res
      
      a=1
      b=2
      
      res=plus(a,b)
      
      write(*,*) 'a=',a,'b=',b,'res=',res
      
      stop
      end
      
      function plus(x,y)
      integer*2 x,y
      integer*2 plus
      
      plus=x+y
      return
      end

We compiled sample2 successfully using command

ftn95 sample2 /ALL_WARNINGS/NON_STANDARD/SINGLE_THREADED/OLD_ARRAYS/ALT_KINDS/PERSIST/ZEROISE/UNLIMITED_ERRORS/FIXED_FORMAT/SAVE/NO_WARN73/WIDE_SOURCE /CFPP /BINARY_folder SALFORD64 /64

, we linked using command

slink64 sample2.lnk

with file sample2. lnk loading the object file twice!

Link file sample2.lnk is

lo salford64\sample2 lo salford64\sample2 file salford64\sample2.exe

This resulted in the runtime error mentioned above with error file

Runtime error from program:c:\win32app\silverfrost_ftn95-8.00_beta.14\ftn95\slink64.exe Access Violation The instruction at address 00407515 attempted to read from location 00000018

00407464 build_exception_table(<ptr>char,<ptr>char,int) [+00b1] 004026e6 build_executable(void) [+1348] 00401000 main [+0b3d]

eax=0358a304 ebx=0000167f ecx=00000000 edx=0358a370 esi=0358a328 edi=00000002 ebp=0358a340 esp=0358a304 IOPL=1 ds=002b es=002b fs=0053 gs=002b cs=0023 ss=002b flgs=00010293 [CA OP NZ NS DN NV]

00407515 mov esi,[ecx+0x18] 00407518 mov edx,[ebp+0x8] 0040751b mov [edx],esi

The link could be executed successfully if deleting one of the load object statements in the link file sample2.lnk. However, it is very strange that slink64 results in a runtime error and does **not **produce an error message like 'object loaded several times', e.g.

Moreover, when linking against libraries, in some cases we loaded special libraries several times. This forced us to filter the link files produced from our 32 build environment, creating link files where static libraries (.lib) were substituted by object files (.obj) and where there were no multiple loads. However, we then ran into the same runtime error when loading about 30 object files (being different in pairs) within slink64. And that is why we have created this entry.

We started with a link file loading several object files of the form

004026e6 build_executable(void) [+1348] 00401000 main [+0b3d]

eax=0358a304 ebx=0000167f ecx=00000000 edx=0358a370 esi=0358a328 edi=00000002 ebp=0358a340 esp=0358a304 IOPL=1 ds=002b es=002b fs=0053 gs=002b cs=0023 ss=002b flgs=00010293 [CA OP NZ NS DN NV]

00407515 mov esi,[ecx+0x18] 00407518 mov edx,[ebp+0x8] 0040751b mov [edx],esi

The link could be executed successfully if deleting one of the load object statements in the link file sample2.lnk. However, it is very strange that slink64 results in a runtime error and does **not **produce an error message like 'object loaded several times', e.g.

Moreover, when linking against libraries, in some cases we loaded special libraries several times. This forced us to filter the link files produced from our 32 build environment, creating link files where static libraries (.lib) were substituted by object files (.obj) and where there were no multiple loads. However, we then ran into the same runtime error when loading about 30 object files (being different in pairs) within slink64. And that is why we have created this entry.

We started with a link file loading several object files of the form

004026e6 build_executable(void) [+1348] 00401000 main [+0b3d]

eax=0358a304 ebx=0000167f ecx=00000000 edx=0358a370 esi=0358a328 edi=00000002 ebp=0358a340 esp=0358a304 IOPL=1 ds=002b es=002b fs=0053 gs=002b cs=0023 ss=002b flgs=00010293 [CA OP NZ NS DN NV]

00407515 mov esi,[ecx+0x18] 00407518 mov edx,[ebp+0x8] 0040751b mov [edx],esi

The link could be executed successfully if deleting one of the load object statements in the link file sample2.lnk. However, it is very strange that slink64 results in a runtime error and does **not **produce an error message like 'object loaded several times', e.g.

Moreover, when linking against libraries, in some cases we loaded special libraries several times. This forced us to filter the link files produced from our 32 build environment, creating link files where static libraries (.lib) were substituted by object files (.obj) and where there were no multiple loads. However, we then ran into the same runtime error when loading about 30 object files (being different in pairs) within slink64. And that is why we have created this entry.

We started with a link file loading several object files of the form

004026e6 build_executable(void) [+1348] 00401000 main [+0b3d]

eax=0358a304 ebx=0000167f ecx=00000000 edx=0358a370 esi=0358a328 edi=00000002 ebp=0358a340 esp=0358a304 IOPL=1 ds=002b es=002b fs=0053 gs=002b cs=0023 ss=002b flgs=00010293 [CA OP NZ NS DN NV]

00407515 mov esi,[ecx+0x18] 00407518 mov edx,[ebp+0x8] 0040751b mov [edx],esi

The link could be executed successfully if deleting one of the load object statements in the link file sample2.lnk. However, it is very strange that slink64 results in a runtime error and does **not **produce an error message like 'object loaded several times', e.g.

Moreover, when linking against libraries, in some cases we loaded special libraries several times. This forced us to filter the link files produced from our 32 build environment, creating link files where static libraries (.lib) were substituted by object files (.obj) and where there were no multiple loads. However, we then ran into the same runtime error when loading about 30 object files (being different in pairs) within slink64. And that is why we have created this entry.

We started with a link file loading several object files of the form

[quote:b752783d2a]salford64\filenname1.obj

or

[quote:b752783d2a]..\lib64\filename2.obj

. We linked successfully in the sense that the runtime error mentioned above did **not **occur. Of cource we did not succeed in creating an exe file working correctly (we sometimes could create an executable ignoring unresolved symbols; however, when executing it we ran into problems where subroutines or functions were missing). Finally we added a first object file as the last of the load statements where the runtime error mentioned above occurred. Our first idea was that this object file (say sample.obj) was corrupted. But deleting some of the other object files made the linking step **not **produce the runtime error any more although sample.obj was loaded.

We have no idea of what has gone wrong and would appreciate any hint.

We should remark that we used the beta 3 version of the salford 64 bit compile enviroment.

Regards, Dietmar

23 Mar 2016 8:16 #17334

Can you check that none of the object files has zero size. There is a bug in the latest release that has now been fixed.

Please login to reply.