Tomas Hajny wrote:

BTW (just in case you didn't know), one good thing about GDB and the current environment is the possibility of post- mortem debugging in case it crashed completely with a core dump ("core core" in (PM)GDB).

I didn't know that - thanks for the tip.

I have now compiled and run my first program without errors - but it required me to manually modify the .s file before assembly and linking... Here are the details:

In so32dll.pas I have:
function connect(sock:Longint; const s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 3;

That is called from sockets.pas:
Function Connect(Sock:Longint;const Addr; Addrlen:Longint):Boolean;
begin
  Connect:=so32dll.Connect(Sock,so32dll.SockAddr(Addr),AddrLen)=0;
  if not Connect then
    SocketError:=so32dll.sock_errno
  else
    SocketError:=0;
end;

The code generated for that call is:
# [214] Connect:=so32dll.Connect(Sock,so32dll.SockAddr(Addr),AddrLen)=0;
    pushl   -12(%ebp)
    movl    -8(%ebp),%esi
    subl    $16,%esp
    movl    %esp,%edi
    cld
    movl    $16,%ecx
    rep
    movsb
    pushl   -4(%ebp)
    call    SO32DLL_CONNECT$LONGINT$SOCKADDR$LONGINT$$LONGINT

BUT that crashes the program in SO32DLL

I then changed it to:
# [214] Connect:=so32dll.Connect(Sock,so32dll.SockAddr(Addr),AddrLen)=0;
    pushl   -12(%ebp)
    pushl   -8(%ebp)
    pushl   -4(%ebp)
    call    SO32DLL_CONNECT$LONGINT$SOCKADDR$LONGINT$$LONGINT

Ant then it works!!

What do I need to do to make the compiler output that code so my program can run without errors?


Take care,
  Søren

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to