Browse Source

* declare C-library routines as external in libc so we generate proper
import entries for Darwin

Jonas Maebe 21 years ago
parent
commit
96da72219f
3 changed files with 83 additions and 68 deletions
  1. 59 53
      rtl/unix/oscdeclh.inc
  2. 6 1
      rtl/unix/unix.pp
  3. 18 14
      rtl/unix/unxdeclh.inc

+ 59 - 53
rtl/unix/oscdeclh.inc

@@ -18,74 +18,80 @@
  ***********************************************************************}
  ***********************************************************************}
 
 
 {   var
 {   var
-     Errno : cint; external name 'errno';}
+     Errno : cint; external clib name 'errno';}
 
 
 Type TGrpArr = Array [0..0] of TGid;            { C style array workarounds}
 Type TGrpArr = Array [0..0] of TGid;            { C style array workarounds}
      pGrpArr = ^TGrpArr;
      pGrpArr = ^TGrpArr;
      TFilDes = Array [0..1] of cInt;
      TFilDes = Array [0..1] of cInt;
      pFilDes = ^TFilDes;
      pFilDes = ^TFilDes;
 
 
-    function  FpAccess  (pathname : pchar; amode : cint): cint; cdecl; external name 'access';
-    function  FpChdir	(path : pchar): cint; cdecl; external name 'chdir';
-    function  FpClose	(fd : cint): cint; cdecl; external name 'close';
-    Function  FpClosedir (var dirp : Dir): cInt; cdecl; external name 'closedir';
-    function  FpClosedir (dirp : pdir): cint; cdecl; external name 'closedir';
-    function  FpDup	(oldd:cint):cint; cdecl; external name 'dup';
-    function  FpDup2	(oldd:cint;newd:cint):cint; cdecl; external name 'dup2';
-    function  FpExecve	(path : pchar; argv : ppchar; envp: ppchar): cint; cdecl; external name 'execve';
-    function  FpFork  : TPid; cdecl; external name 'fork';
-    function  FpFstat	(fd : cint; var sb : stat): cint; cdecl; external name 'fstat';
-    function  FpFtruncate(fd : cint; flength : TOff): cint; cdecl; external name 'ftruncate';
-    function  FpLseek	(fd : cint; offset : TOff; whence : cint): TOff; cdecl; external name 'lseek';
-    function  FpMkdir	(path : pchar; mode: TMode):cint; cdecl; external name 'mkdir';
-    function  FpOpen	(path: pchar; flags : cint; mode: TMode):cint; cdecl; external name 'open';
-    function  FpOpendir	(dirname : pchar): pdir; cdecl; external name 'opendir';
-    function  FpRead	(fd: cint; buf: pchar; nbytes : TSize): TSSize; cdecl; external name 'read';
-    function  FpReaddir	(dirp : pdir) : pdirent;cdecl; external name 'readdir';
-    Function  FpReaddir    (var dirp : Dir) : pDirent;cdecl; external name 'readdir';
-    function  FpRename	(old : pchar; newpath: pchar): cint; cdecl;external name 'rename';
-    function  FpRmdir	(path : pchar): cint; cdecl; external name 'rmdir';
-    function  FpSigaction (sig: cint;var act : sigactionrec; var oact : sigactionrec): cint; cdecl; external name 'sigaction';
-    Function  FPSigaction (sig: cInt; act :pSigActionRec;oact:pSigActionRec):cint;cdecl; external name 'sigaction';
+    function  FpAccess  (pathname : pchar; amode : cint): cint; cdecl; external clib name 'access';
+    function  FpChdir	(path : pchar): cint; cdecl; external clib name 'chdir';
+    function  FpClose	(fd : cint): cint; cdecl; external clib name 'close';
+    Function  FpClosedir (var dirp : Dir): cInt; cdecl; external clib name 'closedir';
+    function  FpClosedir (dirp : pdir): cint; cdecl; external clib name 'closedir';
+    function  FpDup	(oldd:cint):cint; cdecl; external clib name 'dup';
+    function  FpDup2	(oldd:cint;newd:cint):cint; cdecl; external clib name 'dup2';
+    function  FpExecve	(path : pchar; argv : ppchar; envp: ppchar): cint; cdecl; external clib name 'execve';
+    function  FpFork  : TPid; cdecl; external clib name 'fork';
+    function  FpFstat	(fd : cint; var sb : stat): cint; cdecl; external clib name 'fstat';
+    function  FpFtruncate(fd : cint; flength : TOff): cint; cdecl; external clib name 'ftruncate';
+    function  FpLseek	(fd : cint; offset : TOff; whence : cint): TOff; cdecl; external clib name 'lseek';
+    function  FpMkdir	(path : pchar; mode: TMode):cint; cdecl; external clib name 'mkdir';
+    function  FpOpen	(path: pchar; flags : cint; mode: TMode):cint; cdecl; external clib name 'open';
+    function  FpOpendir	(dirname : pchar): pdir; cdecl; external clib name 'opendir';
+    function  FpRead	(fd: cint; buf: pchar; nbytes : TSize): TSSize; cdecl; external clib name 'read';
+    function  FpReaddir	(dirp : pdir) : pdirent;cdecl; external clib name 'readdir';
+    Function  FpReaddir    (var dirp : Dir) : pDirent;cdecl; external clib name 'readdir';
+    function  FpRename	(old : pchar; newpath: pchar): cint; cdecl;external clib name 'rename';
+    function  FpRmdir	(path : pchar): cint; cdecl; external clib name 'rmdir';
+    function  FpSigaction (sig: cint;var act : sigactionrec; var oact : sigactionrec): cint; cdecl; external clib name 'sigaction';
+    Function  FPSigaction (sig: cInt; act :pSigActionRec;oact:pSigActionRec):cint;cdecl; external clib name 'sigaction';
+    Function  FpChmod      (path : pChar; Mode : TMode): cInt; cdecl; external clib name 'chmod';
+    Function  FPUtime(path:pchar;times:putimbuf):cint; cdecl; external clib name 'utime';
 
 
     {$ifdef BSD}
     {$ifdef BSD}
-    function FPSigProcMask(how:cint;nset : psigset;oset : psigset):cint;cdecl; external name 'sigprocmask';
+    function FPSigProcMask(how:cint;nset : psigset;oset : psigset):cint;cdecl; external clib name 'sigprocmask';
     {$endif}
     {$endif}
-    function  FpStat	  (path: pchar; var buf : stat): cint; cdecl; external name 'stat';
+    function  FpStat	  (path: pchar; var buf : stat): cint; cdecl; external clib name 'stat';
 //    {$ifdef FPC_IS_SYSTEM}
 //    {$ifdef FPC_IS_SYSTEM}
-    function  FpTime	   (tloc:ptime_t): time_t; cdecl; external name 'time';
+    function  FpTime	   (tloc:ptime_t): time_t; cdecl; external clib name 'time';
 //    {$else}
 //    {$else}
-    Function  FpTime       (var tloc : TTime): TTime; cdecl; external name 'time';
+    Function  FpTime       (var tloc : TTime): TTime; cdecl; external clib name 'time';
 //    {$endif}
 //    {$endif}
-    function  FpUname	(var name: utsname): cint; cdecl; external name 'uname';
-    function  FpUnlink	(path: pchar): cint; cdecl; external name 'unlink';
-    function  FpWaitpid	(pid : TPid; stat_loc : pcint; options: cint): TPid; cdecl; external name 'waitpid';
-    function  FpWrite	(fd: cint;buf:pchar; nbytes : TSize): TSSize; cdecl; external name 'write';
-    procedure FpExit	(status : cint); cdecl; external name '_exit';
-    function  fpmmap	(addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external name 'mmap';
-    function  FpIOCtl   (Handle:cint;Ndx: culong;Data: Pointer):cint; cdecl; external name 'ioctl';
-    Function  FPSelect  (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external name 'select';
-    function  fpgetenv  (name : pchar):pchar; cdecl; external name 'getenv';
-    Function  FpKill       (pid : TPid; sig: cInt): cInt; cdecl; external name 'kill';
-    Function  FpGetpid  : TPid; cdecl;external name 'getpid';
-    Function  FpGetppid : TPid;cdecl;external name 'getppid';
-    Function  FpGetuid  : TUid;cdecl;external name 'getuid';
-    Function  FpGeteuid : TUid;cdecl;external name 'geteuid';
-    Function  FpGetgid  : TGid;cdecl;external name 'getgid';
-    Function  FpGetegid : TGid;cdecl;external name 'getegid';
-    Function  FpSetuid     (uid : TUid): cInt;cdecl;external name 'setuid';
-    Function  FpSetgid     (gid : TGid): cInt;cdecl;external name 'setgid';
-    Function  FpGetgroups  (gidsetsize : cInt; var grouplist : tgrparr):cint; cdecl;external name 'getgroups';
-    Function  FpGetpgrp : TPid;  cdecl;external name 'getpgrp';
-    Function  FpSetsid  : TPid; cdecl;external name 'setsid';
-    Function  FpPipe       (var fildes : tfildes):cInt; cdecl;external name 'pipe';
-    Function  FpFcntl      (fildes : cInt; cmd : cInt): cInt; cdecl external name 'fcntl';   
-    Function  FpFcntl      (fildes : cInt; cmd : cInt; arg :cInt): cInt; cdecl external name 'fcntl';
-    Function  FpFcntl      (fildes : cInt; cmd : cInt; var arg : flock): cInt; cdecl external name 'fcntl';
+    function  FpUname	(var name: utsname): cint; cdecl; external clib name 'uname';
+    function  FpUnlink	(path: pchar): cint; cdecl; external clib name 'unlink';
+    function  FpWaitpid	(pid : TPid; stat_loc : pcint; options: cint): TPid; cdecl; external clib name 'waitpid';
+    function  FpWrite	(fd: cint;buf:pchar; nbytes : TSize): TSSize; cdecl; external clib name 'write';
+    procedure FpExit	(status : cint); cdecl; external clib name '_exit';
+    function  fpmmap	(addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external clib name 'mmap';
+    function  FpIOCtl   (Handle:cint;Ndx: culong;Data: Pointer):cint; cdecl; external clib name 'ioctl';
+    Function  FPSelect  (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external clib name 'select';
+    function  fpgetenv  (name : pchar):pchar; cdecl; external clib name 'getenv';
+    Function  FpKill       (pid : TPid; sig: cInt): cInt; cdecl; external clib name 'kill';
+    Function  FpGetpid  : TPid; cdecl;external clib name 'getpid';
+    Function  FpGetppid : TPid;cdecl;external clib name 'getppid';
+    Function  FpGetuid  : TUid;cdecl;external clib name 'getuid';
+    Function  FpGeteuid : TUid;cdecl;external clib name 'geteuid';
+    Function  FpGetgid  : TGid;cdecl;external clib name 'getgid';
+    Function  FpGetegid : TGid;cdecl;external clib name 'getegid';
+    Function  FpSetuid     (uid : TUid): cInt;cdecl;external clib name 'setuid';
+    Function  FpSetgid     (gid : TGid): cInt;cdecl;external clib name 'setgid';
+    Function  FpGetgroups  (gidsetsize : cInt; var grouplist : tgrparr):cint; cdecl;external clib name 'getgroups';
+    Function  FpGetpgrp : TPid;  cdecl;external clib name 'getpgrp';
+    Function  FpSetsid  : TPid; cdecl;external clib name 'setsid';
+    Function  FpPipe       (var fildes : tfildes):cInt; cdecl;external clib name 'pipe';
+    Function  FpFcntl      (fildes : cInt; cmd : cInt): cInt; cdecl external clib name 'fcntl';   
+    Function  FpFcntl      (fildes : cInt; cmd : cInt; arg :cInt): cInt; cdecl external clib name 'fcntl';
+    Function  FpFcntl      (fildes : cInt; cmd : cInt; var arg : flock): cInt; cdecl external clib name 'fcntl';
 
 
 {
 {
    $Log$
    $Log$
-   Revision 1.5  2004-01-01 16:10:23  marco
+   Revision 1.6  2004-01-04 21:05:01  jonas
+     * declare C-library routines as external in libc so we generate proper
+       import entries for Darwin
+
+   Revision 1.5  2004/01/01 16:10:23  marco
     * fpreadlink(pathstr) moved to unxovl (since not platform specific),
     * fpreadlink(pathstr) moved to unxovl (since not platform specific),
    	small fixes for "make all OPT='-dFPC_USE_LIBC'
    	small fixes for "make all OPT='-dFPC_USE_LIBC'
 
 

+ 6 - 1
rtl/unix/unix.pp

@@ -188,6 +188,7 @@ Procedure Globfree (var p:pglob);
 procedure SigRaise (sig:integer);
 procedure SigRaise (sig:integer);
 
 
 {$ifdef FPC_USE_LIBC}
 {$ifdef FPC_USE_LIBC}
+const clib = 'c';
 {$i unxdeclh.inc}
 {$i unxdeclh.inc}
 {$else}
 {$else}
 {$i unxsysch.inc} //  calls used in system and not reexported from baseunix
 {$i unxsysch.inc} //  calls used in system and not reexported from baseunix
@@ -1410,7 +1411,11 @@ End.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.57  2004-01-04 20:53:02  jonas
+  Revision 1.58  2004-01-04 21:05:01  jonas
+    * declare C-library routines as external in libc so we generate proper
+      import entries for Darwin
+
+  Revision 1.57  2004/01/04 20:53:02  jonas
     * don't use systypes if FPC_USE_LIBC is defined
     * don't use systypes if FPC_USE_LIBC is defined
 
 
   Revision 1.56  2004/01/04 16:24:05  jonas
   Revision 1.56  2004/01/04 16:24:05  jonas

+ 18 - 14
rtl/unix/unxdeclh.inc

@@ -16,23 +16,27 @@
 
 
 type filedesarray=array[0..1] of cint;
 type filedesarray=array[0..1] of cint;
 
 
-function fpMUnMap (P : Pointer; Size : size_t) : cint; cdecl; external name 'munmap';
-Function fStatFS(Fd:Longint;Var Info:tstatfs):cint; cdecl; external name 'fstatfs';
-Function Flock (fd,mode : longint) : cint; cdecl; external name 'flock';
-Function fsync (fd : cint) : cint; cdecl; external name 'fsync';
-Function StatFS  (Path:pchar;Var Info:tstatfs):cint; cdecl; external name 'statfs';
-function pipe (var fildes: filedesarray):cint;  cdecl; external name 'pipe';
-function fpNice(N:cint):cint; cdecl; external name 'nice';
-Function fpGetPriority(Which,Who:cint):cint;      cdecl; external name 'getpriority';
-Function fpSetPriority(Which,Who,What:cint):cint; cdecl; external name 'setpriority';
-Function fpLstat(path:pchar;Info:pstat):cint;     cdecl; external name 'lstat';
-Function fpSymlink(oldname,newname:pchar):cint;   cdecl; external name 'symlink';
-Function fpReadLink(name,linkname:pchar;maxlen:cint):cint;  cdecl; external name 'readlink';
-function fpgettimeofday(tp: ptimeval;tzp:ptimezone):cint;   cdecl; external name 'gettimeofday';
+function fpMUnMap (P : Pointer; Size : size_t) : cint; cdecl; external clib name 'munmap';
+Function fStatFS(Fd:Longint;Var Info:tstatfs):cint; cdecl; external clib name 'fstatfs';
+Function Flock (fd,mode : longint) : cint; cdecl; external clib name 'flock';
+Function fsync (fd : cint) : cint; cdecl; external clib name 'fsync';
+Function StatFS  (Path:pchar;Var Info:tstatfs):cint; cdecl; external clib name 'statfs';
+function pipe (var fildes: filedesarray):cint;  cdecl; external clib name 'pipe';
+function fpNice(N:cint):cint; cdecl; external clib name 'nice';
+Function fpGetPriority(Which,Who:cint):cint;      cdecl; external clib name 'getpriority';
+Function fpSetPriority(Which,Who,What:cint):cint; cdecl; external clib name 'setpriority';
+Function fpLstat(path:pchar;Info:pstat):cint;     cdecl; external clib name 'lstat';
+Function fpSymlink(oldname,newname:pchar):cint;   cdecl; external clib name 'symlink';
+Function fpReadLink(name,linkname:pchar;maxlen:cint):cint;  cdecl; external clib name 'readlink';
+function fpgettimeofday(tp: ptimeval;tzp:ptimezone):cint;   cdecl; external clib name 'gettimeofday';
 
 
 {
 {
    $Log$
    $Log$
-   Revision 1.2  2004-01-01 14:09:14  marco
+   Revision 1.3  2004-01-04 21:05:01  jonas
+     * declare C-library routines as external in libc so we generate proper
+       import entries for Darwin
+
+   Revision 1.2  2004/01/01 14:09:14  marco
     * FPC_USE_LIBC fixes
     * FPC_USE_LIBC fixes
 
 
    Revision 1.1  2003/12/30 12:29:16  marco
    Revision 1.1  2003/12/30 12:29:16  marco