+ added wdosx support (patch from Pavel)

This commit is contained in:
carl 2002-04-04 18:30:22 +00:00
parent 555c30ce2f
commit 0ee2ac7451
10 changed files with 101 additions and 36 deletions

View File

@ -128,7 +128,7 @@ begin
While not current_module.ResourceFiles.Empty do
begin
case target_info.target of
target_i386_win32:
target_i386_win32,target_i386_wdosx:
hr:=new(presourcefile,init(current_module.ResourceFiles.getfirst));
else
Message(scan_e_resourcefiles_not_supported);
@ -142,7 +142,10 @@ end;
end.
{
$Log$
Revision 1.10 2001-08-07 18:47:12 peter
Revision 1.11 2002-04-04 18:32:37 carl
+ added wdosx support (patch from Pavel)
Revision 1.10 2001/08/07 18:47:12 peter
* merged netbsd start
* profile for win32

View File

@ -629,7 +629,7 @@ uses
if AllowOutput and (OutputFile<>'') and (compile_level=1) then
n:=OutputFile;
staticlibfilename:=stringdup(p+target_info.staticlibprefix+n+target_info.staticlibext);
if target_info.target=target_i386_WIN32 then
if target_info.target in [target_i386_WIN32,target_i386_wdosx] then
sharedlibfilename:=stringdup(p+n+target_info.sharedlibext)
else
sharedlibfilename:=stringdup(p+target_info.sharedlibprefix+n+target_info.sharedlibext);
@ -687,7 +687,10 @@ uses
end.
{
$Log$
Revision 1.11 2001-08-04 10:23:54 peter
Revision 1.12 2002-04-04 18:34:00 carl
+ added wdosx support (patch from Pavel)
Revision 1.11 2001/08/04 10:23:54 peter
* updates so it works with the ide
Revision 1.10 2001/06/03 15:15:31 peter

View File

@ -125,7 +125,7 @@ begin
writeln(t,'STACKSIZE'#9+tostr(stacksize));
writeln(t,'HEAPSIZE'#9+tostr(heapsize));
end;
target_i386_win32 :
target_i386_win32, target_i386_wdosx :
begin
if description<>'' then
writeln(t,'DESCRIPTION '+''''+description+'''');
@ -160,7 +160,10 @@ end;
end.
{
$Log$
Revision 1.6 2001-04-13 01:22:07 peter
Revision 1.7 2002-04-04 18:36:46 carl
+ added wdosx support (patch from Pavel)
Revision 1.6 2001/04/13 01:22:07 peter
* symtable change to classes
* range check generation and errors fixed, make cycle DEBUG=1 works
* memory leaks fixed

View File

@ -156,10 +156,19 @@ implementation
{$endif}
;
{$ifndef NOTARGETWIN32}
{$ifdef NOTARGETWIN32}
{$define __NOWINPECOFF__}
{$endif}
{$ifdef NOTARGETWDOSX}
{$define __NOWINPECOFF__}
{$endif}
{$ifndef __NOWINPECOFF__}
const
winstackpagesize = 4096;
{$endif}
{$endif}
{*****************************************************************************
Helpers
@ -1185,6 +1194,7 @@ implementation
case target_info.target of
target_i386_win32,
target_i386_freebsd,
target_i386_wdosx,
target_i386_linux:
begin
getaddrlabel(pl);
@ -1490,9 +1500,9 @@ implementation
r : treference;
power,len : longint;
opsize : topsize;
{$ifndef NOTARGETWIN32}
{$ifndef __NOWINPECOFF__}
again,ok : tasmlabel;
{$endif}
{$endif}
begin
if (tsym(p).typ=varsym) and
(tvarsym(p).varspez=vs_value) and
@ -1749,7 +1759,7 @@ implementation
emitinsertcall('FPC_INITIALIZELOCALTHREADVARS');
{ initialize profiling for win32 }
if (target_info.target=target_I386_WIN32) and
if (target_info.target in [target_I386_WIN32,target_I386_wdosx]) and
(cs_profile in aktmoduleswitches) then
emitinsertcall('__monstartup');
end;
@ -1835,7 +1845,7 @@ implementation
nostackframe:=false;
if stackframe<>0 then
begin
{$ifndef NOTARGETWIN32}
{$ifndef __NOWINPECOFF__}
{ windows guards only a few pages for stack growing, }
{ so we have to access every page first }
if (target_info.target=target_i386_win32) and
@ -1866,11 +1876,11 @@ implementation
end
end
else
{$endif NOTARGETWIN32}
{$endif __NOWINPECOFF__}
exprasmList.insert(Taicpu.Op_const_reg(A_SUB,S_L,stackframe,R_ESP));
if (cs_check_stack in aktlocalswitches) and
not(target_info.target in [target_i386_freebsd,target_i386_netbsd,
target_i386_linux,target_i386_win32]) then
target_i386_linux,target_i386_win32,target_i386_wdosx]) then
begin
emitinsertcall('FPC_STACKCHECK');
exprasmList.insert(Taicpu.Op_const(A_PUSH,S_L,stackframe));
@ -2609,11 +2619,17 @@ implementation
end;
{$endif test_dest_loc}
{$ifdef __NOWINPECOFF__}
{$undef __NOWINPECOFF__}
{$endif}
end.
{
$Log$
Revision 1.19 2002-04-02 17:11:33 peter
Revision 1.20 2002-04-04 18:30:22 carl
+ added wdosx support (patch from Pavel)
Revision 1.19 2002/04/02 17:11:33 peter
* tlocation,treference update
* LOC_CONSTANT added for better constant handling
* secondadd splitted in multiple routines

View File

@ -60,6 +60,9 @@ implementation
{$ifndef NOTARGETBEOS}
,t_beos
{$endif}
{$ifndef NOTARGETWDOSX}
,t_wdosx
{$endif}
{**************************************
Assemblers
@ -82,7 +85,10 @@ implementation
end.
{
$Log$
Revision 1.3 2002-03-28 20:48:04 carl
Revision 1.4 2002-04-04 18:31:37 carl
+ added wdosx support (patch from Pavel)
Revision 1.3 2002/03/28 20:48:04 carl
- remove go32v1 support
Revision 1.2 2001/06/03 15:12:47 peter

View File

@ -1160,14 +1160,38 @@ implementation
'.stab','.stabstr')
);
as_i386_pecoffwdosx_info : tasminfo =
(
id : as_i386_pecoffwdosx;
idtxt : 'PECOFFWDOSX';
asmbin : '';
asmcmd : '';
supported_target : target_i386_wdosx;
outputbinary : true;
allowdirect : false;
externals : true;
needar : false;
labelprefix_only_inside_procedure: false;
labelprefix : '.L';
comment : '';
secnames : ('',
'.text','.data','.bss',
'.idata$2','.idata$4','.idata$5','.idata$6','.idata$7','.edata',
'.stab','.stabstr')
);
initialization
RegisterAssembler(as_i386_coff_info,TCoffAssembler);
RegisterAssembler(as_i386_pecoff_info,TPECoffAssembler);
RegisterAssembler(as_i386_pecoffwdosx_info,TPECoffAssembler);
end.
{
$Log$
Revision 1.16 2001-09-17 21:29:12 peter
Revision 1.17 2002-04-04 18:38:30 carl
+ added wdosx support (patch from Pavel)
Revision 1.16 2001/09/17 21:29:12 peter
* merged netbsd, fpu-overflow from fixes branch
Revision 1.15 2001/05/06 17:13:23 jonas

View File

@ -123,7 +123,7 @@ end;
procedure set_default_link_type;
begin
if (target_info.target=target_i386_win32) then
if (target_info.target in [target_i386_win32,target_i386_wdosx]) then
begin
def_symbol('FPC_LINK_SMART');
undef_symbol('FPC_LINK_STATIC');
@ -1646,7 +1646,10 @@ finalization
end.
{
$Log$
Revision 1.64 2001-12-03 21:48:42 peter
Revision 1.65 2002-04-04 18:39:45 carl
+ added wdosx support (patch from Pavel)
Revision 1.64 2001/12/03 21:48:42 peter
* freemem change to value parameter
* torddef low/high range changed to int64

View File

@ -96,7 +96,7 @@ implementation
an underline }
if InternalProcName[1]='_' then
delete(InternalProcName,1,1)
else if (target_info.target=target_i386_win32) and UseDeffileForExport then
else if (target_info.target in [target_i386_win32,target_i386_wdosx]) and UseDeffileForExport then
begin
Message(parser_e_dlltool_unit_var_problem);
Message(parser_e_dlltool_unit_var_problem2);
@ -118,7 +118,7 @@ implementation
end;
hp.options:=hp.options or eo_index;
pt.free;
if target_info.target=target_i386_win32 then
if target_info.target in [target_i386_win32,target_i386_wdosx] then
DefString:=srsym.realname+'='+InternalProcName+' @ '+tostr(hp.index)
else
DefString:=srsym.realname+'='+InternalProcName; {Index ignored!}
@ -173,7 +173,10 @@ end.
{
$Log$
Revision 1.16 2001-11-02 22:58:04 peter
Revision 1.17 2002-04-04 18:41:07 carl
+ added wdosx support (patch from Pavel)
Revision 1.16 2001/11/02 22:58:04 peter
* procsym definition rewrite
Revision 1.15 2001/04/18 22:01:57 peter

View File

@ -73,7 +73,7 @@ implementation
end;
DLLscanner.Free;
{ Recreate import section }
if (target_info.target=target_i386_win32) then
if (target_info.target in [target_i386_win32,target_i386_wdosx]) then
begin
if assigned(importssection)then
importssection.clear
@ -98,7 +98,7 @@ implementation
begin
{ regenerate the importssection for win32 }
if assigned(importssection) and
(target_info.target=target_i386_win32) then
(target_info.target in [target_i386_win32,target_i386_wdosx]) then
begin
importsSection.clear;
importlib.generatesmartlib;
@ -1181,7 +1181,7 @@ implementation
{ internal assembler uses rva for stabs info
so it should work with relocated DLLs }
if RelocSection and
(target_info.target=target_i386_win32) and
(target_info.target in [target_i386_win32,target_i386_wdosx]) and
(target_info.assem<>as_i386_pecoff) then
begin
include(aktglobalswitches,cs_link_strip);
@ -1220,7 +1220,7 @@ implementation
stringdispose(current_module.realmodulename);
current_module.modulename:=stringdup(pattern);
current_module.realmodulename:=stringdup(orgpattern);
if (target_info.target=target_i386_WIN32) then
if (target_info.target in [target_i386_WIN32,target_i386_wdosx]) then
exportlib.preparelib(pattern);
consume(_ID);
if token=_LKLAMMER then
@ -1231,7 +1231,7 @@ implementation
end;
consume(_SEMICOLON);
end
else if (target_info.target=target_i386_WIN32) then
else if (target_info.target in [target_i386_WIN32,target_i386_wdosx]) then
exportlib.preparelib(current_module.modulename^);
{ global switches are read, so further changes aren't allowed }
@ -1305,7 +1305,7 @@ implementation
{ Add symbol to the exports section for win32 so smartlinking a
DLL will include the edata section }
if assigned(exportlib) and
(target_info.target=target_i386_win32) and
(target_info.target in [target_i386_win32,target_i386_wdosx]) and
assigned(current_module._exports.first) then
codesegment.concat(tai_const_symbol.create(exportlib.edatalabel));
@ -1370,7 +1370,7 @@ implementation
importlib.generatelib;
if islibrary or
(target_info.target=target_i386_WIN32) or
(target_info.target in [target_i386_WIN32,target_i386_wdosx]) or
(target_info.target=target_i386_NETWARE) then
exportlib.generatelib;
@ -1428,7 +1428,10 @@ implementation
end.
{
$Log$
Revision 1.56 2002-04-02 17:11:29 peter
Revision 1.57 2002-04-04 18:42:49 carl
+ added wdosx support (patch from Pavel)
Revision 1.56 2002/04/02 17:11:29 peter
* tlocation,treference update
* LOC_CONSTANT added for better constant handling
* secondadd splitted in multiple routines

View File

@ -303,9 +303,7 @@ implementation
aktprocsym=nil. But in that case code=nil. hus we should check for
code=nil, when we use aktprocsym.}
{ set the framepointer to esp for assembler functions }
{ but only if the are no local variables }
{ already done in assembler_block }
{ set the start offset to the start of the temp area in the stack }
tg.setfirsttemp(procinfo^.firsttemp_offset);
{ ... and generate assembler }
@ -770,8 +768,8 @@ implementation
Message(parser_e_syntax_error);
consume_all_until(_SEMICOLON);
end
else if islibrary or (target_info.target=target_i386_WIN32)
or (target_info.target=target_i386_Netware) then // AD
else if islibrary or (target_info.target in [target_i386_WIN32,target_i386_wdosx,target_i386_Netware])
then // AD
read_exports;
end
else break;
@ -819,7 +817,10 @@ implementation
end.
{
$Log$
Revision 1.45 2002-03-31 20:26:36 jonas
Revision 1.46 2002-04-04 18:45:19 carl
+ added wdosx support (patch from Pavel)
Revision 1.45 2002/03/31 20:26:36 jonas
+ a_loadfpu_* and a_loadmm_* methods in tcg
* register allocation is now handled by a class and is mostly processor
independent (+rgobj.pas and i386/rgcpu.pas)