mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 21:48:35 +02:00
* basic framework for debuginfo class added
git-svn-id: trunk@1084 -
This commit is contained in:
parent
c3727c29b2
commit
fdc4925fcd
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -93,6 +93,9 @@ compiler/crc.pas svneol=native#text/plain
|
||||
compiler/cresstr.pas svneol=native#text/plain
|
||||
compiler/cstreams.pas svneol=native#text/plain
|
||||
compiler/cutils.pas svneol=native#text/plain
|
||||
compiler/dbgbase.pas svneol=native#text/plain
|
||||
compiler/dbgdwarf.pas svneol=native#text/plain
|
||||
compiler/dbgstabs.pas svneol=native#text/plain
|
||||
compiler/defcmp.pas svneol=native#text/plain
|
||||
compiler/defutil.pas svneol=native#text/plain
|
||||
compiler/dwarf.pas svneol=native#text/plain
|
||||
|
@ -54,6 +54,25 @@ implementation
|
||||
{$endif}
|
||||
|
||||
,ogcoff
|
||||
|
||||
{**************************************
|
||||
Assembler Readers
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoRaarmgas}
|
||||
,raarmgas
|
||||
{$endif NoRaarmgas}
|
||||
|
||||
{**************************************
|
||||
Debuginfo
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoDbgStabs}
|
||||
,dbgstabs
|
||||
{$endif NoDbgStabs}
|
||||
{$ifndef NoDbgDwarf}
|
||||
,dbgdwarf
|
||||
{$endif NoDbgDwarf}
|
||||
;
|
||||
|
||||
end.
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
This unit is the interface of the compiler which can be used by
|
||||
external programs to link in the compiler
|
||||
|
||||
|
||||
Copyright (c) 1998-2005 by Florian Klaempfl
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -141,9 +141,13 @@ uses
|
||||
{$ENDIF MACOS_USE_FAKE_SYSUTILS}
|
||||
verbose,comphook,systems,
|
||||
cutils,cclasses,globals,options,fmodule,parser,symtable,
|
||||
assemble,link,import,export,tokens,pass_1
|
||||
{ cpu overrides }
|
||||
assemble,link,dbgbase,import,export,tokens,pass_1
|
||||
{ cpu specific commandline options }
|
||||
,cpuswtch
|
||||
{ cpu parameter handling }
|
||||
,cpupara
|
||||
{ procinfo stuff }
|
||||
,cpupi
|
||||
{ cpu codegenerator }
|
||||
,cgcpu
|
||||
{$ifndef NOPASS2}
|
||||
@ -151,10 +155,6 @@ uses
|
||||
{$endif}
|
||||
{ cpu targets }
|
||||
,cputarg
|
||||
{ cpu parameter handling }
|
||||
,cpupara
|
||||
{ procinfo stuff }
|
||||
,cpupi
|
||||
{ system information for source system }
|
||||
{ the information about the target os }
|
||||
{ are pulled in by the t_* units }
|
||||
@ -207,29 +207,6 @@ uses
|
||||
{$ifdef win32}
|
||||
,i_win
|
||||
{$endif win32}
|
||||
{ assembler readers }
|
||||
{$ifdef i386}
|
||||
{$ifndef NoRa386Int}
|
||||
,ra386int
|
||||
{$endif NoRa386Int}
|
||||
{$ifndef NoRa386Att}
|
||||
,ra386att
|
||||
{$endif NoRa386Att}
|
||||
{$else}
|
||||
,rasm
|
||||
{$endif i386}
|
||||
{$ifdef powerpc}
|
||||
,rappcgas
|
||||
{$endif powerpc}
|
||||
{$ifdef x86_64}
|
||||
,rax64att
|
||||
{$endif x86_64}
|
||||
{$ifdef arm}
|
||||
,raarmgas
|
||||
{$endif arm}
|
||||
{$ifdef SPARC}
|
||||
,racpugas
|
||||
{$endif SPARC}
|
||||
;
|
||||
|
||||
function Compile(const cmd:string):longint;
|
||||
@ -273,6 +250,7 @@ begin
|
||||
DoneParser;
|
||||
DoneImport;
|
||||
DoneExport;
|
||||
DoneDebuginfo;
|
||||
DoneLinker;
|
||||
DoneAssembler;
|
||||
DoneAsm;
|
||||
@ -316,6 +294,7 @@ begin
|
||||
InitExport;
|
||||
InitLinker;
|
||||
InitAssembler;
|
||||
InitDebugInfo;
|
||||
InitAsm;
|
||||
CompilerInitedAfterArgs:=true;
|
||||
end;
|
||||
|
84
compiler/dbgbase.pas
Normal file
84
compiler/dbgbase.pas
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
Copyright (c) 2003-2004 by Peter Vreman and Florian Klaempfl
|
||||
|
||||
This units contains support for debug info generation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
unit dbgbase;
|
||||
|
||||
{$i fpcdefs.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
systems;
|
||||
|
||||
type
|
||||
TDebugInfo=class
|
||||
end;
|
||||
TDebugInfoClass=class of TDebugInfo;
|
||||
|
||||
var
|
||||
CDebugInfo : array[tdbg] of TDebugInfoClass;
|
||||
DebugInfo : TDebugInfo;
|
||||
|
||||
procedure InitDebugInfo;
|
||||
procedure DoneDebugInfo;
|
||||
procedure RegisterDebugInfo(const r:tdbginfo;c:TDebugInfoClass);
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
verbose;
|
||||
|
||||
procedure InitDebugInfo;
|
||||
begin
|
||||
if not assigned(CDebugInfo[target_dbg.id]) then
|
||||
begin
|
||||
Comment(V_Fatal,'cg_f_debuginfo_output_not_supported');
|
||||
exit;
|
||||
end;
|
||||
DebugInfo:=CDebugInfo[target_dbg.id].Create;
|
||||
end;
|
||||
|
||||
|
||||
procedure DoneDebugInfo;
|
||||
begin
|
||||
if assigned(DebugInfo) then
|
||||
begin
|
||||
DebugInfo.Free;
|
||||
DebugInfo:=nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure RegisterDebugInfo(const r:tdbginfo;c:TDebugInfoClass);
|
||||
var
|
||||
t : tdbg;
|
||||
begin
|
||||
t:=r.id;
|
||||
if assigned(dbginfos[t]) then
|
||||
writeln('Warning: DebugInfo is already registered!')
|
||||
else
|
||||
Getmem(dbginfos[t],sizeof(tdbginfo));
|
||||
dbginfos[t]^:=r;
|
||||
CDebugInfo[t]:=c;
|
||||
end;
|
||||
|
||||
end.
|
49
compiler/dbgdwarf.pas
Normal file
49
compiler/dbgdwarf.pas
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
Copyright (c) 2003-2004 by Peter Vreman and Florian Klaempfl
|
||||
|
||||
This units contains support for DWARF debug info generation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
unit dbgdwarf;
|
||||
|
||||
{$i fpcdefs.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
DbgBase;
|
||||
|
||||
type
|
||||
TDebugInfoDwarf=class(TDebugInfo)
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Systems;
|
||||
|
||||
const
|
||||
dbg_dwarf_info : tdbginfo =
|
||||
(
|
||||
id : dbg_dwarf;
|
||||
idtxt : 'DWARF';
|
||||
);
|
||||
|
||||
initialization
|
||||
RegisterDebugInfo(dbg_dwarf_info,TDebugInfoDwarf);
|
||||
end.
|
49
compiler/dbgstabs.pas
Normal file
49
compiler/dbgstabs.pas
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
Copyright (c) 2003-2004 by Peter Vreman and Florian Klaempfl
|
||||
|
||||
This units contains support for STABS debug info generation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
unit dbgstabs;
|
||||
|
||||
{$i fpcdefs.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
DbgBase;
|
||||
|
||||
type
|
||||
TDebugInfoStabs=class(TDebugInfo)
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Systems;
|
||||
|
||||
const
|
||||
dbg_stabs_info : tdbginfo =
|
||||
(
|
||||
id : dbg_stabs;
|
||||
idtxt : 'STABS';
|
||||
);
|
||||
|
||||
initialization
|
||||
RegisterDebugInfo(dbg_stabs_info,TDebugInfoStabs);
|
||||
end.
|
@ -88,6 +88,29 @@ implementation
|
||||
|
||||
,ogcoff
|
||||
,ogelf
|
||||
|
||||
{**************************************
|
||||
Assembler Readers
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoRa386Int}
|
||||
,ra386int
|
||||
{$endif NoRa386Int}
|
||||
{$ifndef NoRa386Att}
|
||||
,ra386att
|
||||
{$endif NoRa386Att}
|
||||
|
||||
{**************************************
|
||||
Debuginfo
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoDbgStabs}
|
||||
,dbgstabs
|
||||
{$endif NoDbgStabs}
|
||||
{$ifndef NoDbgDwarf}
|
||||
,dbgdwarf
|
||||
{$endif NoDbgDwarf}
|
||||
|
||||
;
|
||||
|
||||
end.
|
||||
|
@ -39,7 +39,7 @@ implementation
|
||||
aasmtai,aasmcpu,aasmbase,
|
||||
cgbase,cgobj,
|
||||
nbas,ncgutil,
|
||||
link,assemble,import,export,gendef,ppu,comprsrc,
|
||||
link,assemble,import,export,gendef,ppu,comprsrc,dbgbase,
|
||||
cresstr,procinfo,
|
||||
dwarf,pexports,
|
||||
{$ifdef GDB}
|
||||
|
@ -58,8 +58,26 @@ implementation
|
||||
{$ifndef NOAGPPPCMPW}
|
||||
,agppcmpw
|
||||
{$endif}
|
||||
|
||||
|
||||
|
||||
{**************************************
|
||||
Assembler Readers
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoRaPPCGas}
|
||||
,rappcgas
|
||||
{$endif NoRaPPCGas}
|
||||
|
||||
{**************************************
|
||||
Debuginfo
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoDbgStabs}
|
||||
,dbgstabs
|
||||
{$endif NoDbgStabs}
|
||||
{$ifndef NoDbgDwarf}
|
||||
,dbgdwarf
|
||||
{$endif NoDbgDwarf}
|
||||
|
||||
{**************************************
|
||||
Optimizer
|
||||
**************************************}
|
||||
|
@ -52,6 +52,25 @@ implementation
|
||||
|
||||
,CpuGas
|
||||
|
||||
{**************************************
|
||||
Assembler Readers
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoSparcgas}
|
||||
,racpugas
|
||||
{$endif NoSparcgas}
|
||||
|
||||
{**************************************
|
||||
Debuginfo
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoDbgStabs}
|
||||
,dbgstabs
|
||||
{$endif NoDbgStabs}
|
||||
{$ifndef NoDbgDwarf}
|
||||
,dbgdwarf
|
||||
{$endif NoDbgDwarf}
|
||||
|
||||
;
|
||||
|
||||
end.
|
||||
|
@ -157,6 +157,10 @@ interface
|
||||
,res_gnu_wince_windres
|
||||
);
|
||||
|
||||
tdbg = (dbg_none
|
||||
,dbg_stabs,dbg_dwarf
|
||||
);
|
||||
|
||||
tscripttype = (script_none
|
||||
,script_dos,script_unix,script_amiga,
|
||||
script_mpw
|
||||
@ -233,6 +237,12 @@ interface
|
||||
rescmd : string[50];
|
||||
end;
|
||||
|
||||
pdbginfo = ^tdbginfo;
|
||||
tdbginfo = record
|
||||
id : tdbg;
|
||||
idtxt : string[12];
|
||||
end;
|
||||
|
||||
tsystemflags = (tf_none,
|
||||
tf_under_development,
|
||||
tf_need_export,tf_needs_isconsole,
|
||||
@ -284,6 +294,7 @@ interface
|
||||
linkextern : tabstractlinkerclass; { external linker, used by -s }
|
||||
ar : tar;
|
||||
res : tres;
|
||||
dbg : tdbg;
|
||||
script : tscripttype;
|
||||
endian : tendian;
|
||||
alignment : talignmentinfo;
|
||||
@ -320,6 +331,7 @@ interface
|
||||
arinfos : array[tar] of parinfo;
|
||||
resinfos : array[tres] of presinfo;
|
||||
asminfos : array[tasm] of pasminfo;
|
||||
dbginfos : array[tdbg] of pdbginfo;
|
||||
|
||||
source_info : tsysteminfo;
|
||||
target_cpu : tsystemcpu;
|
||||
@ -327,6 +339,7 @@ interface
|
||||
target_asm : tasminfo;
|
||||
target_ar : tarinfo;
|
||||
target_res : tresinfo;
|
||||
target_dbg : tdbginfo;
|
||||
target_cpu_string,
|
||||
target_os_string : string[12]; { for rtl/<X>/,fcl/<X>/, etc. }
|
||||
target_full_string : string[24];
|
||||
@ -335,9 +348,11 @@ interface
|
||||
function set_target_asm(t:tasm):boolean;
|
||||
function set_target_ar(t:tar):boolean;
|
||||
function set_target_res(t:tres):boolean;
|
||||
function set_target_dbg(t:tdbg):boolean;
|
||||
|
||||
function set_target_by_string(const s : string) : boolean;
|
||||
function set_target_asm_by_string(const s : string) : boolean;
|
||||
function set_target_dbg_by_string(const s : string) : boolean;
|
||||
|
||||
procedure set_source_info(const ti : tsysteminfo);
|
||||
|
||||
@ -419,6 +434,7 @@ begin
|
||||
set_target_asm(target_info.assem);
|
||||
set_target_ar(target_info.ar);
|
||||
set_target_res(target_info.res);
|
||||
set_target_dbg(target_info.dbg);
|
||||
target_cpu:=target_info.cpu;
|
||||
target_os_string:=lower(target_info.shortname);
|
||||
target_cpu_string:=cpu2str[target_cpu];
|
||||
@ -445,11 +461,11 @@ end;
|
||||
|
||||
function set_target_ar(t:tar):boolean;
|
||||
begin
|
||||
set_target_ar:=false;
|
||||
result:=false;
|
||||
if assigned(arinfos[t]) then
|
||||
begin
|
||||
target_ar:=arinfos[t]^;
|
||||
set_target_ar:=true;
|
||||
result:=true;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -457,11 +473,23 @@ end;
|
||||
|
||||
function set_target_res(t:tres):boolean;
|
||||
begin
|
||||
set_target_res:=false;
|
||||
result:=false;
|
||||
if assigned(resinfos[t]) then
|
||||
begin
|
||||
target_res:=resinfos[t]^;
|
||||
set_target_res:=true;
|
||||
result:=true;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function set_target_dbg(t:tdbg):boolean;
|
||||
begin
|
||||
result:=false;
|
||||
if assigned(dbginfos[t]) then
|
||||
begin
|
||||
target_dbg:=dbginfos[t]^;
|
||||
result:=true;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -472,14 +500,13 @@ var
|
||||
hs : string;
|
||||
t : tsystem;
|
||||
begin
|
||||
set_target_by_string:=false;
|
||||
{ this should be case insensitive !! PM }
|
||||
result:=false;
|
||||
hs:=upper(s);
|
||||
for t:=low(tsystem) to high(tsystem) do
|
||||
if assigned(targetinfos[t]) and
|
||||
(upper(targetinfos[t]^.shortname)=hs) then
|
||||
begin
|
||||
set_target_by_string:=set_target(t);
|
||||
result:=set_target(t);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -490,14 +517,30 @@ var
|
||||
hs : string;
|
||||
t : tasm;
|
||||
begin
|
||||
set_target_asm_by_string:=false;
|
||||
{ this should be case insensitive !! PM }
|
||||
result:=false;
|
||||
hs:=upper(s);
|
||||
for t:=low(tasm) to high(tasm) do
|
||||
if assigned(asminfos[t]) and
|
||||
(asminfos[t]^.idtxt=hs) then
|
||||
begin
|
||||
set_target_asm_by_string:=set_target_asm(t);
|
||||
result:=set_target_asm(t);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function set_target_dbg_by_string(const s : string) : boolean;
|
||||
var
|
||||
hs : string;
|
||||
t : tdbg;
|
||||
begin
|
||||
result:=false;
|
||||
hs:=upper(s);
|
||||
for t:=low(tdbg) to high(tdbg) do
|
||||
if assigned(dbginfos[t]) and
|
||||
(dbginfos[t]^.idtxt=hs) then
|
||||
begin
|
||||
result:=set_target_dbg(t);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
@ -65,6 +65,7 @@ unit i_amiga;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_amiga;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -127,6 +128,7 @@ unit i_amiga;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_amiga;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
|
@ -62,6 +62,7 @@ unit i_atari;
|
||||
linkextern : ld_m68k_atari;
|
||||
ar : ar_m68k_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
stackalignment : 2;
|
||||
|
@ -65,6 +65,7 @@ unit i_beos;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -68,6 +68,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -130,6 +131,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -192,6 +194,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -253,6 +256,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -314,6 +318,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -375,6 +380,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -439,6 +445,7 @@ unit i_bsd;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
|
@ -73,6 +73,7 @@ unit i_emx;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_emxbind;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
This unit implements support information structures for GameBoy Advance
|
||||
|
||||
|
||||
Copyright (c) 1998-2002 by Peter Vreman
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -54,7 +54,7 @@ unit i_gba;
|
||||
staticClibext : '.a';
|
||||
staticClibprefix : 'lib';
|
||||
sharedClibprefix : 'lib';
|
||||
p_ext_support : false;
|
||||
p_ext_support : false;
|
||||
Cprefix : '';
|
||||
newline : #10;
|
||||
dirsep : '/';
|
||||
@ -65,6 +65,7 @@ unit i_gba;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_go32v2;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -79,6 +79,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_elf;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -141,6 +142,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -203,6 +205,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -265,6 +268,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -327,6 +331,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -390,6 +395,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -452,6 +458,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
@ -514,6 +521,7 @@ unit i_linux;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -64,6 +64,7 @@ unit i_macos;
|
||||
linkextern : nil;
|
||||
ar : ar_mpw_ar;
|
||||
res : res_powerpc_mpw;
|
||||
dbg : dbg_stabs;
|
||||
script : script_mpw;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_morph;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_amiga;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_nwl;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_nwm;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -73,6 +73,7 @@ unit i_os2;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_emxbind;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -62,6 +62,7 @@ unit i_palmos;
|
||||
linkextern : ld_m68k_palmos;
|
||||
ar : ar_m68k_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
stackalignment : 2;
|
||||
|
@ -65,6 +65,7 @@ unit i_sunos;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -126,6 +127,7 @@ unit i_sunos;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_unix;
|
||||
endian : endian_big;
|
||||
alignment :
|
||||
|
@ -67,6 +67,7 @@ unit i_watcom;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_none;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_wdosx;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_gnu_windres;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -65,6 +65,7 @@ unit i_win;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_gnu_windres;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -126,6 +127,7 @@ unit i_win;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_gnu_windres;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -187,6 +189,7 @@ unit i_win;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_gnu_wince_windres;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
@ -248,6 +251,7 @@ unit i_win;
|
||||
linkextern : nil;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_gnu_windres;
|
||||
dbg : dbg_stabs;
|
||||
script : script_dos;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
|
@ -86,24 +86,6 @@ uses
|
||||
cpuinfo,cgbase,cgutils,
|
||||
itcpugas,cgx86;
|
||||
|
||||
{$define ATTOP}
|
||||
{$define INTELOP}
|
||||
|
||||
{$ifdef NORA386INT}
|
||||
{$ifdef NOAG386NSM}
|
||||
{$ifdef NOAG386INT}
|
||||
{$undef INTELOP}
|
||||
{$endif}
|
||||
{$endif}
|
||||
{$endif}
|
||||
|
||||
{$ifdef NORA386ATT}
|
||||
{$ifdef NOAG386ATT}
|
||||
{$undef ATTOP}
|
||||
{$endif}
|
||||
{$endif}
|
||||
|
||||
|
||||
|
||||
{*****************************************************************************
|
||||
Parser Helpers
|
||||
@ -548,15 +530,7 @@ begin
|
||||
opcode:=A_FDIVP
|
||||
else if opcode=A_FDIVR then
|
||||
opcode:=A_FDIVRP;
|
||||
{$ifdef ATTOP}
|
||||
message1(asmr_w_fadd_to_faddp,gas_op2str[opcode]);
|
||||
{$else}
|
||||
{$ifdef INTELOP}
|
||||
message1(asmr_w_fadd_to_faddp,std_op2str[opcode]);
|
||||
{$else}
|
||||
message1(asmr_w_fadd_to_faddp,'fXX');
|
||||
{$endif INTELOP}
|
||||
{$endif ATTOP}
|
||||
end;
|
||||
|
||||
{It is valid to specify some instructions without operand size.}
|
||||
@ -596,15 +570,7 @@ begin
|
||||
(opcode=A_FDIV) or
|
||||
(opcode=A_FDIVR)) then
|
||||
begin
|
||||
{$ifdef ATTOP}
|
||||
message1(asmr_w_adding_explicit_args_fXX,gas_op2str[opcode]);
|
||||
{$else}
|
||||
{$ifdef INTELOP}
|
||||
message1(asmr_w_adding_explicit_args_fXX,std_op2str[opcode]);
|
||||
{$else}
|
||||
message1(asmr_w_adding_explicit_args_fXX,'fXX');
|
||||
{$endif INTELOP}
|
||||
{$endif ATTOP}
|
||||
ops:=2;
|
||||
operands[1].opr.typ:=OPR_REGISTER;
|
||||
operands[2].opr.typ:=OPR_REGISTER;
|
||||
@ -627,15 +593,7 @@ begin
|
||||
(opcode=A_FMULP)
|
||||
) then
|
||||
begin
|
||||
{$ifdef ATTOP}
|
||||
message1(asmr_w_adding_explicit_first_arg_fXX,gas_op2str[opcode]);
|
||||
{$else}
|
||||
{$ifdef INTELOP}
|
||||
message1(asmr_w_adding_explicit_first_arg_fXX,std_op2str[opcode]);
|
||||
{$else}
|
||||
message1(asmr_w_adding_explicit_first_arg_fXX,'fXX');
|
||||
{$endif INTELOP}
|
||||
{$endif ATTOP}
|
||||
ops:=2;
|
||||
operands[2].opr.typ:=OPR_REGISTER;
|
||||
operands[2].opr.reg:=operands[1].opr.reg;
|
||||
@ -658,15 +616,7 @@ begin
|
||||
(opcode=A_FMUL)
|
||||
) then
|
||||
begin
|
||||
{$ifdef ATTOP}
|
||||
message1(asmr_w_adding_explicit_second_arg_fXX,gas_op2str[opcode]);
|
||||
{$else}
|
||||
{$ifdef INTELOP}
|
||||
message1(asmr_w_adding_explicit_second_arg_fXX,std_op2str[opcode]);
|
||||
{$else}
|
||||
message1(asmr_w_adding_explicit_second_arg_fXX,'fXX');
|
||||
{$endif INTELOP}
|
||||
{$endif ATTOP}
|
||||
ops:=2;
|
||||
operands[2].opr.typ:=OPR_REGISTER;
|
||||
operands[2].opr.reg:=NR_ST0;
|
||||
|
@ -59,6 +59,26 @@ implementation
|
||||
|
||||
,ogcoff
|
||||
,ogelf
|
||||
|
||||
{**************************************
|
||||
Assembler Readers
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoRax64att}
|
||||
,rax64att
|
||||
{$endif NoRax64att}
|
||||
|
||||
{**************************************
|
||||
Debuginfo
|
||||
**************************************}
|
||||
|
||||
{$ifndef NoDbgStabs}
|
||||
,dbgstabs
|
||||
{$endif NoDbgStabs}
|
||||
{$ifndef NoDbgDwarf}
|
||||
,dbgdwarf
|
||||
{$endif NoDbgDwarf}
|
||||
|
||||
;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user