mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-29 12:50:37 +01:00
+ basic darwin support added
This commit is contained in:
parent
999b859bc8
commit
9de6468186
@ -39,8 +39,8 @@ implementation
|
||||
{$ifndef NOTARGETLINUX}
|
||||
,t_linux
|
||||
{$endif}
|
||||
{$ifndef NOTARGETFREEBSD}
|
||||
,t_fbsd
|
||||
{$ifndef NOTARGETBSD}
|
||||
,t_bsd
|
||||
{$endif}
|
||||
{$ifndef NOTARGETSUNOS}
|
||||
,t_sunos
|
||||
@ -88,7 +88,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.11 2003-04-25 12:04:31 florian
|
||||
Revision 1.12 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.11 2003/04/25 12:04:31 florian
|
||||
* merged agx64att and ag386att to x86/agx86att
|
||||
|
||||
Revision 1.10 2003/03/23 23:33:10 hajny
|
||||
|
||||
@ -101,6 +101,8 @@ unit cgcpu;
|
||||
|
||||
procedure g_stackframe_entry_sysv(list : taasmoutput;localsize : longint);
|
||||
procedure g_return_from_proc_sysv(list : taasmoutput;parasize : aword);
|
||||
procedure g_stackframe_entry_aix(list : taasmoutput;localsize : longint);
|
||||
procedure g_return_from_proc_aix(list : taasmoutput;parasize : aword);
|
||||
procedure g_stackframe_entry_mac(list : taasmoutput;localsize : longint);
|
||||
procedure g_return_from_proc_mac(list : taasmoutput;parasize : aword);
|
||||
|
||||
@ -921,11 +923,13 @@ const
|
||||
procedure tcgppc.g_stackframe_entry(list : taasmoutput;localsize : longint);
|
||||
|
||||
begin
|
||||
case target_info.system of
|
||||
system_powerpc_macos:
|
||||
case target_info.abi of
|
||||
abi_powerpc_macos:
|
||||
g_stackframe_entry_mac(list,localsize);
|
||||
system_powerpc_linux:
|
||||
g_stackframe_entry_sysv(list,localsize)
|
||||
abi_powerpc_sysv:
|
||||
g_stackframe_entry_sysv(list,localsize);
|
||||
abi_powerpc_aix:
|
||||
g_stackframe_entry_aix(list,localsize);
|
||||
else
|
||||
internalerror(2204001);
|
||||
end;
|
||||
@ -934,17 +938,25 @@ const
|
||||
procedure tcgppc.g_return_from_proc(list : taasmoutput;parasize : aword);
|
||||
|
||||
begin
|
||||
case target_info.system of
|
||||
system_powerpc_macos:
|
||||
case target_info.abi of
|
||||
abi_powerpc_macos:
|
||||
g_return_from_proc_mac(list,parasize);
|
||||
system_powerpc_linux:
|
||||
g_return_from_proc_sysv(list,parasize)
|
||||
abi_powerpc_sysv:
|
||||
g_return_from_proc_sysv(list,parasize);
|
||||
abi_powerpc_aix:
|
||||
g_return_from_proc_aix(list,parasize);
|
||||
else
|
||||
internalerror(2204001);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgppc.g_stackframe_entry_aix(list : taasmoutput;localsize : longint);
|
||||
begin
|
||||
g_stackframe_entry_sysv(list,localsize);
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgppc.g_stackframe_entry_sysv(list : taasmoutput;localsize : longint);
|
||||
{ generated the entry code of a procedure/function. Note: localsize is the }
|
||||
{ sum of the size necessary for local variables and the maximum possible }
|
||||
@ -1150,6 +1162,13 @@ const
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgppc.g_return_from_proc_aix(list : taasmoutput;parasize : aword);
|
||||
begin
|
||||
g_return_from_proc_sysv(list,parasize);
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgppc.g_return_from_proc_sysv(list : taasmoutput;parasize : aword);
|
||||
|
||||
var
|
||||
@ -2392,7 +2411,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.93 2003-05-15 22:14:42 florian
|
||||
Revision 1.94 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.93 2003/05/15 22:14:42 florian
|
||||
* fixed last commit, changing lastsaveintreg to r31 caused some strange problems
|
||||
|
||||
Revision 1.92 2003/05/15 21:37:00 florian
|
||||
|
||||
@ -42,6 +42,9 @@ implementation
|
||||
{$ifndef NOTARGETMACOS}
|
||||
,t_macos
|
||||
{$endif}
|
||||
{$ifndef NOTARGETDARWIN}
|
||||
,t_bsd
|
||||
{$endif}
|
||||
|
||||
{**************************************
|
||||
Assemblers
|
||||
@ -58,7 +61,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2002-08-20 21:40:44 florian
|
||||
Revision 1.6 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.5 2002/08/20 21:40:44 florian
|
||||
+ target macos for ppc added
|
||||
+ frame work for mpw assembler output
|
||||
|
||||
|
||||
@ -109,7 +109,7 @@ interface
|
||||
target_i386_openbsd, { 24 }
|
||||
target_m68k_openbsd, { 25 }
|
||||
system_x86_64_linux, { 26 }
|
||||
system_powerpc_macosx, { 27 }
|
||||
system_powerpc_darwin, { 27 }
|
||||
system_i386_EMX { 28 }
|
||||
);
|
||||
|
||||
@ -147,7 +147,9 @@ interface
|
||||
,script_dos,script_unix,script_amiga
|
||||
);
|
||||
|
||||
tabi = (abi_default,abi_powerpc_sysv,abi_powerpc_aix);
|
||||
tabi = (abi_default
|
||||
,abi_powerpc_sysv,abi_powerpc_aix,abi_powerpc_macos
|
||||
);
|
||||
|
||||
{*****************************************************************************
|
||||
Structures
|
||||
@ -681,7 +683,10 @@ finalization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.61 2003-05-18 15:15:59 florian
|
||||
Revision 1.62 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.61 2003/05/18 15:15:59 florian
|
||||
+ added abi field to tsysteminfo
|
||||
|
||||
Revision 1.60 2003/03/23 23:21:42 hajny
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
{ This unit implements support information structures for FreeBSD/NetBSD.
|
||||
OpenBSD and Darwin must be added still.}
|
||||
|
||||
unit i_fbsd;
|
||||
unit i_bsd;
|
||||
|
||||
interface
|
||||
|
||||
@ -222,6 +222,71 @@ unit i_fbsd;
|
||||
use_function_relative_addresses : true
|
||||
);
|
||||
|
||||
system_powerpc_darwin_info : tsysteminfo =
|
||||
(
|
||||
system : system_powerpc_darwin;
|
||||
name : 'Darwin for PowerPC';
|
||||
shortname : 'Darwin';
|
||||
flags : [tf_under_development];
|
||||
cpu : cpu_powerpc;
|
||||
unit_env : 'BSDUNITS';
|
||||
extradefines : 'UNIX;BSD;HASUNIX';
|
||||
sourceext : '.pp';
|
||||
pasext : '.pas';
|
||||
exeext : '';
|
||||
defext : '.def';
|
||||
scriptext : '.sh';
|
||||
smartext : '.sl';
|
||||
unitext : '.ppu';
|
||||
unitlibext : '.ppl';
|
||||
asmext : '.s';
|
||||
objext : '.o';
|
||||
resext : '.res';
|
||||
resobjext : '.or';
|
||||
sharedlibext : '.so';
|
||||
staticlibext : '.a';
|
||||
staticlibprefix : 'libp';
|
||||
sharedlibprefix : 'lib';
|
||||
sharedClibext : '.so';
|
||||
staticClibext : '.a';
|
||||
staticClibprefix : 'lib';
|
||||
sharedClibprefix : 'lib';
|
||||
Cprefix : '';
|
||||
newline : #10;
|
||||
dirsep : '/';
|
||||
files_case_relevent : true;
|
||||
assem : as_gas;
|
||||
assemextern : as_gas;
|
||||
link : nil;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
(
|
||||
procalign : 16;
|
||||
loopalign : 4;
|
||||
jumpalign : 0;
|
||||
constalignmin : 0;
|
||||
constalignmax : 1;
|
||||
varalignmin : 0;
|
||||
varalignmax : 1;
|
||||
localalignmin : 0;
|
||||
localalignmax : 1;
|
||||
paraalign : 4;
|
||||
recordalignmin : 0;
|
||||
recordalignmax : 2;
|
||||
maxCrecordalign : 4
|
||||
);
|
||||
first_parm_offset : 8;
|
||||
heapsize : 256*1024;
|
||||
stacksize : 262144;
|
||||
DllScanSupported:false;
|
||||
use_function_relative_addresses : true;
|
||||
abi : abi_powerpc_aix;
|
||||
);
|
||||
|
||||
implementation
|
||||
|
||||
initialization
|
||||
@ -238,10 +303,18 @@ initialization
|
||||
set_source_info(system_m68k_NetBSD_info);
|
||||
{$endif NetBSD}
|
||||
{$endif cpu68}
|
||||
{$ifdef cpupowerpc}
|
||||
{$ifdef Darwin}
|
||||
set_source_info(system_powerpc_darwin_info);
|
||||
{$endif Darwin}
|
||||
{$endif cpu68}
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2003-01-11 16:35:15 marco
|
||||
Revision 1.1 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.2 2003/01/11 16:35:15 marco
|
||||
* HASUNIX defined for now.
|
||||
|
||||
Revision 1.1 2002/09/06 15:03:51 carl
|
||||
@ -22,7 +22,7 @@
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
unit t_fbsd;
|
||||
unit t_bsd;
|
||||
|
||||
{$i fpcdefs.inc}
|
||||
|
||||
@ -36,24 +36,24 @@ implementation
|
||||
verbose,systems,globtype,globals,
|
||||
symconst,script,
|
||||
fmodule,aasmbase,aasmtai,aasmcpu,cpubase,symsym,symdef,
|
||||
import,export,link,i_fbsd;
|
||||
import,export,link,i_bsd;
|
||||
|
||||
type
|
||||
timportlibfreebsd=class(timportlib)
|
||||
timportlibbsd=class(timportlib)
|
||||
procedure preparelib(const s:string);override;
|
||||
procedure importprocedure(aprocdef:tprocdef;const module:string;index:longint;const name:string);override;
|
||||
procedure importvariable(vs:tvarsym;const name,module:string);override;
|
||||
procedure generatelib;override;
|
||||
end;
|
||||
|
||||
texportlibfreebsd=class(texportlib)
|
||||
texportlibbsd=class(texportlib)
|
||||
procedure preparelib(const s : string);override;
|
||||
procedure exportprocedure(hp : texported_item);override;
|
||||
procedure exportvar(hp : texported_item);override;
|
||||
procedure generatelib;override;
|
||||
end;
|
||||
|
||||
tlinkerfreebsd=class(texternallinker)
|
||||
tlinkerbsd=class(texternallinker)
|
||||
private
|
||||
Glibc2,
|
||||
Glibc21,
|
||||
@ -71,12 +71,12 @@ implementation
|
||||
TIMPORTLIBLINUX
|
||||
*****************************************************************************}
|
||||
|
||||
procedure timportlibfreebsd.preparelib(const s : string);
|
||||
procedure timportlibbsd.preparelib(const s : string);
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
procedure timportlibfreebsd.importprocedure(aprocdef:tprocdef;const module:string;index:longint;const name:string);
|
||||
procedure timportlibbsd.importprocedure(aprocdef:tprocdef;const module:string;index:longint;const name:string);
|
||||
begin
|
||||
{ insert sharedlibrary }
|
||||
current_module.linkothersharedlibs.add(SplitName(module),link_allways);
|
||||
@ -90,7 +90,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure timportlibfreebsd.importvariable(vs:tvarsym;const name,module:string);
|
||||
procedure timportlibbsd.importvariable(vs:tvarsym;const name,module:string);
|
||||
begin
|
||||
{ insert sharedlibrary }
|
||||
current_module.linkothersharedlibs.add(SplitName(module),link_allways);
|
||||
@ -100,7 +100,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure timportlibfreebsd.generatelib;
|
||||
procedure timportlibbsd.generatelib;
|
||||
begin
|
||||
end;
|
||||
|
||||
@ -109,12 +109,12 @@ end;
|
||||
TEXPORTLIBLINUX
|
||||
*****************************************************************************}
|
||||
|
||||
procedure texportlibfreebsd.preparelib(const s:string);
|
||||
procedure texportlibbsd.preparelib(const s:string);
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
procedure texportlibfreebsd.exportprocedure(hp : texported_item);
|
||||
procedure texportlibbsd.exportprocedure(hp : texported_item);
|
||||
var
|
||||
hp2 : texported_item;
|
||||
begin
|
||||
@ -151,14 +151,14 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure texportlibfreebsd.exportvar(hp : texported_item);
|
||||
procedure texportlibbsd.exportvar(hp : texported_item);
|
||||
begin
|
||||
hp.is_var:=true;
|
||||
exportprocedure(hp);
|
||||
end;
|
||||
|
||||
|
||||
procedure texportlibfreebsd.generatelib;
|
||||
procedure texportlibbsd.generatelib;
|
||||
var
|
||||
hp2 : texported_item;
|
||||
begin
|
||||
@ -192,14 +192,14 @@ end;
|
||||
TLINKERLINUX
|
||||
*****************************************************************************}
|
||||
|
||||
Constructor TLinkerFreeBSD.Create;
|
||||
Constructor TLinkerBSD.Create;
|
||||
begin
|
||||
Inherited Create;
|
||||
LibrarySearchPath.AddPath('/lib;/usr/lib;/usr/X11R6/lib',true);
|
||||
end;
|
||||
|
||||
|
||||
procedure TLinkerFreeBSD.SetDefaultInfo;
|
||||
procedure TLinkerBSD.SetDefaultInfo;
|
||||
{
|
||||
This will also detect which libc version will be used
|
||||
}
|
||||
@ -249,7 +249,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
Function TLinkerFreeBSD.WriteResponseFile(isdll:boolean) : Boolean;
|
||||
Function TLinkerBSD.WriteResponseFile(isdll:boolean) : Boolean;
|
||||
Var
|
||||
linkres : TLinkRes;
|
||||
i : longint;
|
||||
@ -405,7 +405,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TLinkerFreeBSD.MakeExecutable:boolean;
|
||||
function TLinkerBSD.MakeExecutable:boolean;
|
||||
var
|
||||
binstr,
|
||||
cmdstr : string;
|
||||
@ -457,7 +457,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
Function TLinkerFreeBSD.MakeSharedLibrary:boolean;
|
||||
Function TLinkerBSD.MakeSharedLibrary:boolean;
|
||||
var
|
||||
binstr,
|
||||
cmdstr : string;
|
||||
@ -499,26 +499,36 @@ end;
|
||||
|
||||
initialization
|
||||
{$ifdef i386}
|
||||
RegisterExternalLinker(system_i386_FreeBSD_info,TLinkerFreeBSD);
|
||||
RegisterExternalLinker(system_i386_NetBSD_info,TLinkerFreeBSD);
|
||||
RegisterImport(system_i386_freebsd,timportlibfreebsd);
|
||||
RegisterExport(system_i386_freebsd,texportlibfreebsd);
|
||||
RegisterExternalLinker(system_i386_FreeBSD_info,TLinkerBSD);
|
||||
RegisterExternalLinker(system_i386_NetBSD_info,TLinkerBSD);
|
||||
RegisterImport(system_i386_freebsd,timportlibbsd);
|
||||
RegisterExport(system_i386_freebsd,texportlibbsd);
|
||||
RegisterTarget(system_i386_freebsd_info);
|
||||
RegisterImport(system_i386_netbsd,timportlibfreebsd);
|
||||
RegisterExport(system_i386_netbsd,texportlibfreebsd);
|
||||
RegisterImport(system_i386_netbsd,timportlibbsd);
|
||||
RegisterExport(system_i386_netbsd,texportlibbsd);
|
||||
RegisterTarget(system_i386_netbsd_info);
|
||||
{$endif i386}
|
||||
{$ifdef m68k}
|
||||
// RegisterExternalLinker(system_m68k_FreeBSD_info,TLinkerFreeBSD);
|
||||
RegisterExternalLinker(system_m68k_NetBSD_info,TLinkerFreeBSD);
|
||||
RegisterImport(system_m68k_netbsd,timportlibfreebsd);
|
||||
RegisterExport(system_m68k_netbsd,texportlibfreebsd);
|
||||
// RegisterExternalLinker(system_m68k_FreeBSD_info,TLinkerBSD);
|
||||
RegisterExternalLinker(system_m68k_NetBSD_info,TLinkerBSD);
|
||||
RegisterImport(system_m68k_netbsd,timportlibbsd);
|
||||
RegisterExport(system_m68k_netbsd,texportlibbsd);
|
||||
RegisterTarget(system_m68k_netbsd_info);
|
||||
{$endif m68k}
|
||||
{$ifdef powerpc}
|
||||
// RegisterExternalLinker(system_m68k_FreeBSD_info,TLinkerBSD);
|
||||
RegisterExternalLinker(system_powerpc_darwin_info,TLinkerBSD);
|
||||
RegisterImport(system_powerpc_darwin,timportlibbsd);
|
||||
RegisterExport(system_powerpc_darwin,texportlibbsd);
|
||||
RegisterTarget(system_powerpc_darwin_info);
|
||||
{$endif powerpc}
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2003-04-27 07:29:52 peter
|
||||
Revision 1.1 2003-05-20 23:54:00 florian
|
||||
+ basic darwin support added
|
||||
|
||||
Revision 1.5 2003/04/27 07:29:52 peter
|
||||
* aktprocdef cleanup, aktprocdef is now always nil when parsing
|
||||
a new procdef declaration
|
||||
* aktprocsym removed
|
||||
Loading…
Reference in New Issue
Block a user