Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2001-08

Linking with C

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Sergey Korshunoff

Hello!

A problems with current version of FPC:

1) Linking a C library to pascal program is done by code (t_linux.pas):
   s:=librarysearchpath.FindFile('crtbegin.o',found)+'crtbegin.o';
   if found then
     LinkRes.AddFileName(s);
   s:=librarysearchpath.FindFile('crti.o',found)+'crti.o';
   if found then
     LinkRes.AddFileName(s);

This is wrong: crti.o must go _before_ crtbegin.o
(in t_beos.pas we have a right sequence, but why this is wrong for other targets?)

==================================================================
-+- t_linux.pas.bak     Wed Jun 13 08:36:28 2001
+++ t_linux.pas Fri Aug 31 20:17:10 2001
@@ -324,10 +324,10 @@
   { try to add crti and crtbegin if linking to C }
   if linklibc then
    begin
-     s:=librarysearchpath.FindFile('crtbegin.o',found)+'crtbegin.o';
+     s:=librarysearchpath.FindFile('crti.o',found)+'crti.o';
      if found then
       LinkRes.AddFileName(s);
-     s:=librarysearchpath.FindFile('crti.o',found)+'crti.o';
+     s:=librarysearchpath.FindFile('crtbegin.o',found)+'crtbegin.o';
      if found then
       LinkRes.AddFileName(s);
    end;
==================================================================

2) There is a code in t_linux.pas:
{ be sure that libc is the last lib }

     if linklibc then
      LinkRes.Add('-lc');
     { when we have -static for the linker the we also need libgcc }
     if (cs_link_staticflag in aktglobalswitches) then
      LinkRes.Add('-lgcc');     { be sure that libc is the last lib }

But I can not get -lgcc in link.res ( FPC -s -XS) ??? After looking in sources:
cs_link_staticflag is not set by -XS or by -XX, but is set by _nondocumented_ flag -Xt

What is purpose of -Xt swith? Why we can not use -XS and -XX insteed of -Xt ? If -Xt is a right thing, then why it is not in FPC help output (FPC -h)?

Regards,
Sergey Korshunoff