* basic framework for debuginfo class added

git-svn-id: trunk@1084 -
This commit is contained in:
peter 2005-09-15 08:34:51 +00:00
parent c3727c29b2
commit fdc4925fcd
31 changed files with 387 additions and 95 deletions

3
.gitattributes vendored
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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