+ basic darwin support added

This commit is contained in:
florian 2003-05-20 23:54:00 +00:00
parent 999b859bc8
commit 9de6468186
6 changed files with 166 additions and 47 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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