mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-29 20:20:16 +02:00
* local browser support fixed
This commit is contained in:
parent
a314a01b9d
commit
7b45b6a4a9
@ -375,7 +375,7 @@ implementation
|
|||||||
symb:=tstoredsym(symt.search(upper(ss)));
|
symb:=tstoredsym(symt.search(upper(ss)));
|
||||||
if not assigned(symb) then
|
if not assigned(symb) then
|
||||||
begin
|
begin
|
||||||
symt:=tprocsym(sym).definition.parast;
|
symt:=tprocsym(sym).definition.localst;
|
||||||
sym:=tstoredsym(symt.search(ss));
|
sym:=tstoredsym(symt.search(ss));
|
||||||
if symb=nil then
|
if symb=nil then
|
||||||
symb:=tstoredsym(symt.search(upper(ss)));
|
symb:=tstoredsym(symt.search(upper(ss)));
|
||||||
@ -461,11 +461,6 @@ implementation
|
|||||||
writesymtable(prdef.localst);
|
writesymtable(prdef.localst);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if assigned(tprocdef(prdef).defref) then
|
|
||||||
begin
|
|
||||||
browserlog.AddLog('***'+tprocdef(prdef).name+'***');
|
|
||||||
browserlog.AddLogRefs(tprocdef(prdef).defref);
|
|
||||||
end;
|
|
||||||
prdef:=tprocdef(prdef).nextoverloaded;
|
prdef:=tprocdef(prdef).nextoverloaded;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -519,7 +514,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.8 2001-04-18 22:01:53 peter
|
Revision 1.9 2001-08-19 09:39:27 peter
|
||||||
|
* local browser support fixed
|
||||||
|
|
||||||
|
Revision 1.8 2001/04/18 22:01:53 peter
|
||||||
* registration of targets and assemblers
|
* registration of targets and assemblers
|
||||||
|
|
||||||
Revision 1.7 2001/04/13 01:22:06 peter
|
Revision 1.7 2001/04/13 01:22:06 peter
|
||||||
|
@ -303,8 +303,8 @@ uses
|
|||||||
if not onlysource then
|
if not onlysource then
|
||||||
begin
|
begin
|
||||||
fnd:=PPUSearchPath('.');
|
fnd:=PPUSearchPath('.');
|
||||||
if (not fnd) and (current_module.outputpath^<>'') then
|
if (not fnd) and (outputpath^<>'') then
|
||||||
fnd:=PPUSearchPath(current_module.outputpath^);
|
fnd:=PPUSearchPath(outputpath^);
|
||||||
end;
|
end;
|
||||||
if (not fnd) and (fn<>'') then
|
if (not fnd) and (fn<>'') then
|
||||||
begin
|
begin
|
||||||
@ -330,7 +330,7 @@ uses
|
|||||||
if (not fnd) then
|
if (not fnd) then
|
||||||
fnd:=SourceSearchPath('.');
|
fnd:=SourceSearchPath('.');
|
||||||
if (not fnd) then
|
if (not fnd) then
|
||||||
fnd:=SearchPathList(current_module.LocalUnitSearchPath);
|
fnd:=SearchPathList(LocalUnitSearchPath);
|
||||||
if (not fnd) then
|
if (not fnd) then
|
||||||
fnd:=SearchPathList(UnitSearchPath);
|
fnd:=SearchPathList(UnitSearchPath);
|
||||||
|
|
||||||
@ -341,7 +341,7 @@ uses
|
|||||||
filename:=copy(filename,1,8);
|
filename:=copy(filename,1,8);
|
||||||
fnd:=SearchPath('.');
|
fnd:=SearchPath('.');
|
||||||
if (not fnd) then
|
if (not fnd) then
|
||||||
fnd:=SearchPathList(current_module.LocalUnitSearchPath);
|
fnd:=SearchPathList(LocalUnitSearchPath);
|
||||||
if not fnd then
|
if not fnd then
|
||||||
fnd:=SearchPathList(UnitSearchPath);
|
fnd:=SearchPathList(UnitSearchPath);
|
||||||
end;
|
end;
|
||||||
@ -686,22 +686,22 @@ uses
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ load browser }
|
{ load browser }
|
||||||
if (current_module.flags and uf_has_browser)<>0 then
|
if (flags and uf_has_browser)<>0 then
|
||||||
begin
|
begin
|
||||||
tstoredsymtable(globalsymtable).load_browser(ppufile);
|
tstoredsymtable(globalsymtable).load_references(ppufile,true);
|
||||||
unitindex:=1;
|
unitindex:=1;
|
||||||
while assigned(map^[unitindex]) do
|
while assigned(map^[unitindex]) do
|
||||||
begin
|
begin
|
||||||
{ each unit wrote one browser entry }
|
{ each unit wrote one browser entry }
|
||||||
tstoredsymtable(globalsymtable).load_browser(ppufile);
|
tstoredsymtable(globalsymtable).load_references(ppufile,false);
|
||||||
inc(unitindex);
|
inc(unitindex);
|
||||||
end;
|
end;
|
||||||
b:=ppufile.readentry;
|
b:=ppufile.readentry;
|
||||||
if b<>ibendbrowser then
|
if b<>ibendbrowser then
|
||||||
Message1(unit_f_ppu_invalid_entry,tostr(b));
|
Message1(unit_f_ppu_invalid_entry,tostr(b));
|
||||||
end;
|
end;
|
||||||
if ((current_module.flags and uf_local_browser)<>0) then
|
if ((flags and uf_local_browser)<>0) then
|
||||||
tstaticsymtable(current_module.localsymtable).load_browser(ppufile);
|
tstaticsymtable(localsymtable).load_references(ppufile,true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -772,18 +772,18 @@ uses
|
|||||||
{ write all browser section }
|
{ write all browser section }
|
||||||
if (flags and uf_has_browser)<>0 then
|
if (flags and uf_has_browser)<>0 then
|
||||||
begin
|
begin
|
||||||
tstoredsymtable(globalsymtable).write_browser(ppufile);
|
tstoredsymtable(globalsymtable).write_references(ppufile,true);
|
||||||
pu:=tused_unit(used_units.first);
|
pu:=tused_unit(used_units.first);
|
||||||
while assigned(pu) do
|
while assigned(pu) do
|
||||||
begin
|
begin
|
||||||
tstoredsymtable(pu.u.globalsymtable).write_browser(ppufile);
|
tstoredsymtable(pu.u.globalsymtable).write_references(ppufile,false);
|
||||||
pu:=tused_unit(pu.next);
|
pu:=tused_unit(pu.next);
|
||||||
end;
|
end;
|
||||||
ppufile.writeentry(ibendbrowser);
|
ppufile.writeentry(ibendbrowser);
|
||||||
end;
|
end;
|
||||||
if ((flags and uf_local_browser)<>0) and
|
if ((flags and uf_local_browser)<>0) and
|
||||||
assigned(localsymtable) then
|
assigned(localsymtable) then
|
||||||
tstaticsymtable(localsymtable).write_browser(ppufile);
|
tstaticsymtable(localsymtable).write_references(ppufile,true);
|
||||||
|
|
||||||
{ the last entry ibend is written automaticly }
|
{ the last entry ibend is written automaticly }
|
||||||
|
|
||||||
@ -1180,7 +1180,10 @@ uses
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.9 2001-06-18 20:36:23 peter
|
Revision 1.10 2001-08-19 09:39:27 peter
|
||||||
|
* local browser support fixed
|
||||||
|
|
||||||
|
Revision 1.9 2001/06/18 20:36:23 peter
|
||||||
* -Ur switch (merged)
|
* -Ur switch (merged)
|
||||||
* masm fixes (merged)
|
* masm fixes (merged)
|
||||||
* quoted filenames for go32v2 and win32
|
* quoted filenames for go32v2 and win32
|
||||||
|
@ -70,7 +70,6 @@ interface
|
|||||||
function size:longint;override;
|
function size:longint;override;
|
||||||
function alignment:longint;override;
|
function alignment:longint;override;
|
||||||
function is_publishable : boolean;override;
|
function is_publishable : boolean;override;
|
||||||
function is_in_current : boolean;
|
|
||||||
{ debug }
|
{ debug }
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
function stabstring : pchar;virtual;
|
function stabstring : pchar;virtual;
|
||||||
@ -540,8 +539,8 @@ interface
|
|||||||
function haspara:boolean;
|
function haspara:boolean;
|
||||||
function mangledname : string;
|
function mangledname : string;
|
||||||
procedure setmangledname(const s : string);
|
procedure setmangledname(const s : string);
|
||||||
procedure load_references(ppufile:tcompilerppufile);
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
function write_references(ppufile:tcompilerppufile) : boolean;
|
function write_references(ppufile:tcompilerppufile;locals:boolean):boolean;
|
||||||
function fullprocname:string;
|
function fullprocname:string;
|
||||||
function fullprocnamewithret:string;
|
function fullprocnamewithret:string;
|
||||||
function cplusplusmangledname : string;
|
function cplusplusmangledname : string;
|
||||||
@ -701,6 +700,7 @@ interface
|
|||||||
pbestrealtype : ^ttype = @s64floattype;
|
pbestrealtype : ^ttype = @s64floattype;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
{ GDB Helpers }
|
{ GDB Helpers }
|
||||||
function typeglobalnumber(const s : string) : string;
|
function typeglobalnumber(const s : string) : string;
|
||||||
@ -742,6 +742,7 @@ implementation
|
|||||||
gendef
|
gendef
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
Helpers
|
Helpers
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -855,33 +856,6 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function tstoreddef.is_in_current : boolean;
|
|
||||||
var
|
|
||||||
p : tsymtable;
|
|
||||||
begin
|
|
||||||
p:=owner;
|
|
||||||
is_in_current:=false;
|
|
||||||
while assigned(p) do
|
|
||||||
begin
|
|
||||||
if (p=tsymtable(current_module.globalsymtable)) or (p=tsymtable(current_module.localsymtable))
|
|
||||||
or (p.symtabletype in [globalsymtable,staticsymtable]) then
|
|
||||||
begin
|
|
||||||
is_in_current:=true;
|
|
||||||
exit;
|
|
||||||
end
|
|
||||||
else if p.symtabletype in [localsymtable,parasymtable,objectsymtable] then
|
|
||||||
begin
|
|
||||||
if assigned(p.defowner) then
|
|
||||||
p:=tobjectdef(p.defowner).owner
|
|
||||||
else
|
|
||||||
exit;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure tstoreddef.writedef(ppufile:tcompilerppufile);
|
procedure tstoreddef.writedef(ppufile:tcompilerppufile);
|
||||||
begin
|
begin
|
||||||
ppufile.putword(indexnr);
|
ppufile.putword(indexnr);
|
||||||
@ -3515,9 +3489,10 @@ implementation
|
|||||||
end;
|
end;
|
||||||
tparasymtable(parast).write(ppufile);
|
tparasymtable(parast).write(ppufile);
|
||||||
|
|
||||||
{ save localsymtable for inline procedures, this has no influence
|
{ save localsymtable for inline procedures or when local
|
||||||
on the crc }
|
browser info is requested, this has no influence on the crc }
|
||||||
if (pocall_inline in proccalloptions) then
|
if (pocall_inline in proccalloptions) or
|
||||||
|
((current_module.flags and uf_local_browser)<>0) then
|
||||||
begin
|
begin
|
||||||
oldintfcrc:=ppufile.do_crc;
|
oldintfcrc:=ppufile.do_crc;
|
||||||
ppufile.do_crc:=false;
|
ppufile.do_crc:=false;
|
||||||
@ -3568,9 +3543,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Const local_symtable_index : longint = $8001;
|
procedure tprocdef.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
|
|
||||||
procedure tprocdef.load_references(ppufile:tcompilerppufile);
|
|
||||||
var
|
var
|
||||||
pos : tfileposinfo;
|
pos : tfileposinfo;
|
||||||
oldsymtablestack,
|
oldsymtablestack,
|
||||||
@ -3589,43 +3562,28 @@ Const local_symtable_index : longint = $8001;
|
|||||||
end;
|
end;
|
||||||
if move_last then
|
if move_last then
|
||||||
lastwritten:=lastref;
|
lastwritten:=lastref;
|
||||||
if ((current_module.flags and uf_local_browser)<>0)
|
if ((current_module.flags and uf_local_browser)<>0) and
|
||||||
and is_in_current then
|
locals then
|
||||||
begin
|
begin
|
||||||
oldsymtablestack:=symtablestack;
|
tparasymtable(parast).load_references(ppufile,locals);
|
||||||
st:=aktlocalsymtable;
|
tlocalsymtable(localst).load_references(ppufile,locals);
|
||||||
parast:=tparasymtable.create;
|
|
||||||
tparasymtable(parast).load(ppufile);
|
|
||||||
parast.defowner:=self;
|
|
||||||
aktlocalsymtable:=parast;
|
|
||||||
tparasymtable(parast).deref;
|
|
||||||
parast.next:=owner;
|
|
||||||
tparasymtable(parast).load_browser(ppufile);
|
|
||||||
aktlocalsymtable:=st;
|
|
||||||
localst:=tlocalsymtable.create;
|
|
||||||
tlocalsymtable(localst).load(ppufile);
|
|
||||||
localst.defowner:=self;
|
|
||||||
aktlocalsymtable:=localst;
|
|
||||||
symtablestack:=parast;
|
|
||||||
tlocalsymtable(localst).deref;
|
|
||||||
localst.next:=parast;
|
|
||||||
tlocalsymtable(localst).load_browser(ppufile);
|
|
||||||
aktlocalsymtable:=st;
|
|
||||||
symtablestack:=oldsymtablestack;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function tprocdef.write_references(ppufile:tcompilerppufile) : boolean;
|
Const
|
||||||
|
local_symtable_index : longint = $8001;
|
||||||
|
|
||||||
|
function tprocdef.write_references(ppufile:tcompilerppufile;locals:boolean):boolean;
|
||||||
var
|
var
|
||||||
ref : tref;
|
ref : tref;
|
||||||
st : tsymtable;
|
|
||||||
pdo : tobjectdef;
|
pdo : tobjectdef;
|
||||||
move_last : boolean;
|
move_last : boolean;
|
||||||
begin
|
begin
|
||||||
move_last:=lastwritten=lastref;
|
move_last:=lastwritten=lastref;
|
||||||
if move_last and (((current_module.flags and uf_local_browser)=0)
|
if move_last and
|
||||||
or not is_in_current) then
|
(((current_module.flags and uf_local_browser)=0) or
|
||||||
|
not locals) then
|
||||||
exit;
|
exit;
|
||||||
{ write address of this symbol }
|
{ write address of this symbol }
|
||||||
ppufile.putderef(self);
|
ppufile.putderef(self);
|
||||||
@ -3651,8 +3609,8 @@ Const local_symtable_index : longint = $8001;
|
|||||||
end;
|
end;
|
||||||
ppufile.writeentry(ibdefref);
|
ppufile.writeentry(ibdefref);
|
||||||
write_references:=true;
|
write_references:=true;
|
||||||
if ((current_module.flags and uf_local_browser)<>0)
|
if ((current_module.flags and uf_local_browser)<>0) and
|
||||||
and is_in_current then
|
locals then
|
||||||
begin
|
begin
|
||||||
pdo:=_class;
|
pdo:=_class;
|
||||||
if (owner.symtabletype<>localsymtable) then
|
if (owner.symtabletype<>localsymtable) then
|
||||||
@ -3665,27 +3623,12 @@ Const local_symtable_index : longint = $8001;
|
|||||||
end;
|
end;
|
||||||
pdo:=pdo.childof;
|
pdo:=pdo.childof;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ we need TESTLOCALBROWSER para and local symtables
|
|
||||||
PPU files are then easier to read PM }
|
|
||||||
if not assigned(parast) then
|
|
||||||
parast:=tparasymtable.create;
|
|
||||||
parast.defowner:=self;
|
|
||||||
st:=aktlocalsymtable;
|
|
||||||
aktlocalsymtable:=parast;
|
|
||||||
tstoredsymtable(parast).write(ppufile);
|
|
||||||
parast.unitid:=local_symtable_index;
|
parast.unitid:=local_symtable_index;
|
||||||
inc(local_symtable_index);
|
inc(local_symtable_index);
|
||||||
tstoredsymtable(parast).write_browser(ppufile);
|
|
||||||
if not assigned(localst) then
|
|
||||||
localst:=tlocalsymtable.create;
|
|
||||||
localst.defowner:=self;
|
|
||||||
aktlocalsymtable:=localst;
|
|
||||||
tstoredsymtable(localst).write(ppufile);
|
|
||||||
localst.unitid:=local_symtable_index;
|
localst.unitid:=local_symtable_index;
|
||||||
inc(local_symtable_index);
|
inc(local_symtable_index);
|
||||||
tstoredsymtable(localst).write_browser(ppufile);
|
tstoredsymtable(parast).write_references(ppufile,locals);
|
||||||
aktlocalsymtable:=st;
|
tstoredsymtable(localst).write_references(ppufile,locals);
|
||||||
{ decrement for }
|
{ decrement for }
|
||||||
local_symtable_index:=local_symtable_index-2;
|
local_symtable_index:=local_symtable_index-2;
|
||||||
pdo:=_class;
|
pdo:=_class;
|
||||||
@ -5546,8 +5489,8 @@ Const local_symtable_index : longint = $8001;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.42 2001-08-12 22:09:40 peter
|
Revision 1.43 2001-08-19 09:39:27 peter
|
||||||
* write also dynamicarray flag to ppu
|
* local browser support fixed
|
||||||
|
|
||||||
Revision 1.41 2001/08/12 20:04:33 peter
|
Revision 1.41 2001/08/12 20:04:33 peter
|
||||||
* fpu_used=0 when simplify_ppu is used
|
* fpu_used=0 when simplify_ppu is used
|
||||||
|
@ -64,8 +64,8 @@ interface
|
|||||||
function stabstring : pchar;virtual;
|
function stabstring : pchar;virtual;
|
||||||
procedure concatstabto(asmlist : taasmoutput);virtual;
|
procedure concatstabto(asmlist : taasmoutput);virtual;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
procedure load_references(ppufile:tcompilerppufile);virtual;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);virtual;
|
||||||
function write_references(ppufile:tcompilerppufile) : boolean;virtual;
|
function write_references(ppufile:tcompilerppufile;locals:boolean):boolean;virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
tlabelsym = class(tstoredsym)
|
tlabelsym = class(tstoredsym)
|
||||||
@ -115,8 +115,8 @@ interface
|
|||||||
procedure order_overloaded;
|
procedure order_overloaded;
|
||||||
procedure write(ppufile:tcompilerppufile);override;
|
procedure write(ppufile:tcompilerppufile);override;
|
||||||
procedure deref;override;
|
procedure deref;override;
|
||||||
procedure load_references(ppufile:tcompilerppufile);override;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
function write_references(ppufile:tcompilerppufile) : boolean;override;
|
function write_references(ppufile:tcompilerppufile;locals:boolean):boolean;override;
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
function stabstring : pchar;override;
|
function stabstring : pchar;override;
|
||||||
procedure concatstabto(asmlist : taasmoutput);override;
|
procedure concatstabto(asmlist : taasmoutput);override;
|
||||||
@ -133,8 +133,8 @@ interface
|
|||||||
procedure write(ppufile:tcompilerppufile);override;
|
procedure write(ppufile:tcompilerppufile);override;
|
||||||
procedure deref;override;
|
procedure deref;override;
|
||||||
function gettypedef:tdef;override;
|
function gettypedef:tdef;override;
|
||||||
procedure load_references(ppufile:tcompilerppufile);override;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
function write_references(ppufile:tcompilerppufile) : boolean;override;
|
function write_references(ppufile:tcompilerppufile;locals:boolean):boolean;override;
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
function stabstring : pchar;override;
|
function stabstring : pchar;override;
|
||||||
procedure concatstabto(asmlist : taasmoutput);override;
|
procedure concatstabto(asmlist : taasmoutput);override;
|
||||||
@ -394,7 +394,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tstoredsym.load_references(ppufile:tcompilerppufile);
|
procedure tstoredsym.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
pos : tfileposinfo;
|
pos : tfileposinfo;
|
||||||
move_last : boolean;
|
move_last : boolean;
|
||||||
@ -418,7 +418,7 @@ implementation
|
|||||||
interface parsing of other units PM
|
interface parsing of other units PM
|
||||||
moduleindex must be checked !! }
|
moduleindex must be checked !! }
|
||||||
|
|
||||||
function tstoredsym.write_references(ppufile:tcompilerppufile) : boolean;
|
function tstoredsym.write_references(ppufile:tcompilerppufile;locals:boolean):boolean;
|
||||||
var
|
var
|
||||||
ref : tref;
|
ref : tref;
|
||||||
symref_written,move_last : boolean;
|
symref_written,move_last : boolean;
|
||||||
@ -783,12 +783,12 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tprocsym.load_references(ppufile:tcompilerppufile);
|
procedure tprocsym.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
(*var
|
(*var
|
||||||
prdef,prdef2 : tprocdef;
|
prdef,prdef2 : tprocdef;
|
||||||
b : byte; *)
|
b : byte; *)
|
||||||
begin
|
begin
|
||||||
inherited load_references(ppufile);
|
inherited load_references(ppufile,locals);
|
||||||
(*prdef:=definition;
|
(*prdef:=definition;
|
||||||
done in tsymtable.load_browser (PM)
|
done in tsymtable.load_browser (PM)
|
||||||
{ take care about operators !! }
|
{ take care about operators !! }
|
||||||
@ -807,18 +807,18 @@ implementation
|
|||||||
end; *)
|
end; *)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function tprocsym.write_references(ppufile:tcompilerppufile) : boolean;
|
function tprocsym.write_references(ppufile:tcompilerppufile;locals:boolean) : boolean;
|
||||||
var
|
var
|
||||||
prdef : tprocdef;
|
prdef : tprocdef;
|
||||||
begin
|
begin
|
||||||
write_references:=false;
|
write_references:=false;
|
||||||
if not inherited write_references(ppufile) then
|
if not inherited write_references(ppufile,locals) then
|
||||||
exit;
|
exit;
|
||||||
write_references:=true;
|
write_references:=true;
|
||||||
prdef:=definition;
|
prdef:=definition;
|
||||||
while assigned(prdef) and (prdef.owner=definition.owner) do
|
while assigned(prdef) and (prdef.owner=definition.owner) do
|
||||||
begin
|
begin
|
||||||
prdef.write_references(ppufile);
|
prdef.write_references(ppufile,locals);
|
||||||
prdef:=prdef.nextoverloaded;
|
prdef:=prdef.nextoverloaded;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1428,7 +1428,7 @@ implementation
|
|||||||
varstate:=vs_declared;
|
varstate:=vs_declared;
|
||||||
varalign:=size_2_align(l);
|
varalign:=size_2_align(l);
|
||||||
varalign:=used_align(varalign,aktalignment.localalignmin,aktalignment.localalignmax);
|
varalign:=used_align(varalign,aktalignment.localalignmin,aktalignment.localalignmax);
|
||||||
address:=align(owner.datasize,varalign)+l;
|
address:=align(owner.datasize+l,varalign);
|
||||||
owner.datasize:=address;
|
owner.datasize:=address;
|
||||||
end;
|
end;
|
||||||
staticsymtable :
|
staticsymtable :
|
||||||
@ -2142,33 +2142,34 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure ttypesym.load_references(ppufile:tcompilerppufile);
|
procedure ttypesym.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
begin
|
begin
|
||||||
inherited load_references(ppufile);
|
inherited load_references(ppufile,locals);
|
||||||
if (restype.def.deftype=recorddef) then
|
if (restype.def.deftype=recorddef) then
|
||||||
tstoredsymtable(trecorddef(restype.def).symtable).load_browser(ppufile);
|
tstoredsymtable(trecorddef(restype.def).symtable).load_references(ppufile,locals);
|
||||||
if (restype.def.deftype=objectdef) then
|
if (restype.def.deftype=objectdef) then
|
||||||
tstoredsymtable(tobjectdef(restype.def).symtable).load_browser(ppufile);
|
tstoredsymtable(tobjectdef(restype.def).symtable).load_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function ttypesym.write_references(ppufile:tcompilerppufile) : boolean;
|
function ttypesym.write_references(ppufile:tcompilerppufile;locals:boolean):boolean;
|
||||||
begin
|
begin
|
||||||
if not inherited write_references(ppufile) then
|
if not inherited write_references(ppufile,locals) then
|
||||||
|
begin
|
||||||
{ write address of this symbol if record or object
|
{ write address of this symbol if record or object
|
||||||
even if no real refs are there
|
even if no real refs are there
|
||||||
because we need it for the symtable }
|
because we need it for the symtable }
|
||||||
if (restype.def.deftype=recorddef) or
|
if (restype.def.deftype in [recorddef,objectdef]) then
|
||||||
(restype.def.deftype=objectdef) then
|
begin
|
||||||
begin
|
ppufile.putderef(self);
|
||||||
ppufile.putderef(self);
|
ppufile.writeentry(ibsymref);
|
||||||
ppufile.writeentry(ibsymref);
|
end;
|
||||||
end;
|
end;
|
||||||
write_references:=true;
|
write_references:=true;
|
||||||
if (restype.def.deftype=recorddef) then
|
if (restype.def.deftype=recorddef) then
|
||||||
tstoredsymtable(trecorddef(restype.def).symtable).write_browser(ppufile);
|
tstoredsymtable(trecorddef(restype.def).symtable).write_references(ppufile,locals);
|
||||||
if (restype.def.deftype=objectdef) then
|
if (restype.def.deftype=objectdef) then
|
||||||
tstoredsymtable(tobjectdef(restype.def).symtable).write_browser(ppufile);
|
tstoredsymtable(tobjectdef(restype.def).symtable).write_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2239,8 +2240,8 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.17 2001-08-12 22:11:52 peter
|
Revision 1.18 2001-08-19 09:39:28 peter
|
||||||
* errordef.typesym is not updated anymore
|
* local browser support fixed
|
||||||
|
|
||||||
Revision 1.16 2001/08/12 20:00:26 peter
|
Revision 1.16 2001/08/12 20:00:26 peter
|
||||||
* don't write fpuregable for varoptions
|
* don't write fpuregable for varoptions
|
||||||
|
@ -70,8 +70,8 @@ interface
|
|||||||
{ load/write }
|
{ load/write }
|
||||||
procedure load(ppufile:tcompilerppufile);virtual;
|
procedure load(ppufile:tcompilerppufile);virtual;
|
||||||
procedure write(ppufile:tcompilerppufile);virtual;
|
procedure write(ppufile:tcompilerppufile);virtual;
|
||||||
procedure load_browser(ppufile:tcompilerppufile);virtual;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);virtual;
|
||||||
procedure write_browser(ppufile:tcompilerppufile);virtual;
|
procedure write_references(ppufile:tcompilerppufile;locals:boolean);virtual;
|
||||||
procedure deref;virtual;
|
procedure deref;virtual;
|
||||||
procedure derefimpl;virtual;
|
procedure derefimpl;virtual;
|
||||||
procedure insert(sym : tsymentry);override;
|
procedure insert(sym : tsymentry);override;
|
||||||
@ -97,8 +97,8 @@ interface
|
|||||||
public
|
public
|
||||||
procedure load(ppufile:tcompilerppufile);override;
|
procedure load(ppufile:tcompilerppufile);override;
|
||||||
procedure write(ppufile:tcompilerppufile);override;
|
procedure write(ppufile:tcompilerppufile);override;
|
||||||
procedure load_browser(ppufile:tcompilerppufile);override;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
procedure write_browser(ppufile:tcompilerppufile);override;
|
procedure write_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
trecordsymtable = class(tabstractrecordsymtable)
|
trecordsymtable = class(tabstractrecordsymtable)
|
||||||
@ -117,8 +117,8 @@ interface
|
|||||||
public
|
public
|
||||||
procedure load(ppufile:tcompilerppufile);override;
|
procedure load(ppufile:tcompilerppufile);override;
|
||||||
procedure write(ppufile:tcompilerppufile);override;
|
procedure write(ppufile:tcompilerppufile);override;
|
||||||
procedure load_browser(ppufile:tcompilerppufile);override;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
procedure write_browser(ppufile:tcompilerppufile);override;
|
procedure write_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
tlocalsymtable = class(tabstractlocalsymtable)
|
tlocalsymtable = class(tabstractlocalsymtable)
|
||||||
@ -168,8 +168,8 @@ interface
|
|||||||
constructor create(const n : string);
|
constructor create(const n : string);
|
||||||
procedure load(ppufile:tcompilerppufile);override;
|
procedure load(ppufile:tcompilerppufile);override;
|
||||||
procedure write(ppufile:tcompilerppufile);override;
|
procedure write(ppufile:tcompilerppufile);override;
|
||||||
procedure load_browser(ppufile:tcompilerppufile);override;
|
procedure load_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
procedure write_browser(ppufile:tcompilerppufile);override;
|
procedure write_references(ppufile:tcompilerppufile;locals:boolean);override;
|
||||||
procedure insert(sym : tsymentry);override;
|
procedure insert(sym : tsymentry);override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -435,7 +435,7 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tstoredsymtable.load_browser(ppufile:tcompilerppufile);
|
procedure tstoredsymtable.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
b : byte;
|
b : byte;
|
||||||
sym : tstoredsym;
|
sym : tstoredsym;
|
||||||
@ -452,7 +452,7 @@ implementation
|
|||||||
sym:=tstoredsym(ppufile.getderef);
|
sym:=tstoredsym(ppufile.getderef);
|
||||||
resolvesym(tsym(sym));
|
resolvesym(tsym(sym));
|
||||||
if assigned(sym) then
|
if assigned(sym) then
|
||||||
sym.load_references(ppufile);
|
sym.load_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
ibdefref :
|
ibdefref :
|
||||||
begin
|
begin
|
||||||
@ -462,7 +462,7 @@ implementation
|
|||||||
begin
|
begin
|
||||||
if prdef.deftype<>procdef then
|
if prdef.deftype<>procdef then
|
||||||
Message(unit_f_ppu_read_error);
|
Message(unit_f_ppu_read_error);
|
||||||
tprocdef(prdef).load_references(ppufile);
|
tprocdef(prdef).load_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
ibendsymtablebrowser :
|
ibendsymtablebrowser :
|
||||||
@ -474,16 +474,16 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tstoredsymtable.write_browser(ppufile:tcompilerppufile);
|
procedure tstoredsymtable.write_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
pd : tstoredsym;
|
pd : tstoredsym;
|
||||||
begin
|
begin
|
||||||
ppufile.writeentry(ibbeginsymtablebrowser);
|
ppufile.writeentry(ibbeginsymtablebrowser);
|
||||||
{ foreach is used to write all symbols }
|
{ write all symbols }
|
||||||
pd:=tstoredsym(symindex.first);
|
pd:=tstoredsym(symindex.first);
|
||||||
while assigned(pd) do
|
while assigned(pd) do
|
||||||
begin
|
begin
|
||||||
pd.write_references(ppufile);
|
pd.write_references(ppufile,locals);
|
||||||
pd:=tstoredsym(pd.indexnext);
|
pd:=tstoredsym(pd.indexnext);
|
||||||
end;
|
end;
|
||||||
ppufile.writeentry(ibendsymtablebrowser);
|
ppufile.writeentry(ibendsymtablebrowser);
|
||||||
@ -985,6 +985,15 @@ implementation
|
|||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
{ returns true, if p contains data which needs init/final code }
|
||||||
|
function tstoredsymtable.needs_init_final : boolean;
|
||||||
|
begin
|
||||||
|
b_needs_init_final:=false;
|
||||||
|
foreach({$ifdef FPCPROCVAR}@{$endif}_needs_init_final);
|
||||||
|
needs_init_final:=b_needs_init_final;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TAbstractRecordSymtable
|
TAbstractRecordSymtable
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -1022,27 +1031,27 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tabstractrecordsymtable.load_browser(ppufile:tcompilerppufile);
|
procedure tabstractrecordsymtable.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
storesymtable : tsymtable;
|
storesymtable : tsymtable;
|
||||||
begin
|
begin
|
||||||
storesymtable:=aktrecordsymtable;
|
storesymtable:=aktrecordsymtable;
|
||||||
aktrecordsymtable:=self;
|
aktrecordsymtable:=self;
|
||||||
|
|
||||||
inherited load_browser(ppufile);
|
inherited load_references(ppufile,locals);
|
||||||
|
|
||||||
aktrecordsymtable:=storesymtable;
|
aktrecordsymtable:=storesymtable;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tabstractrecordsymtable.write_browser(ppufile:tcompilerppufile);
|
procedure tabstractrecordsymtable.write_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
storesymtable : tsymtable;
|
storesymtable : tsymtable;
|
||||||
begin
|
begin
|
||||||
storesymtable:=aktrecordsymtable;
|
storesymtable:=aktrecordsymtable;
|
||||||
aktrecordsymtable:=self;
|
aktrecordsymtable:=self;
|
||||||
|
|
||||||
inherited write_browser(ppufile);
|
inherited write_references(ppufile,locals);
|
||||||
|
|
||||||
aktrecordsymtable:=storesymtable;
|
aktrecordsymtable:=storesymtable;
|
||||||
end;
|
end;
|
||||||
@ -1059,16 +1068,6 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ returns true, if p contains data which needs init/final code }
|
|
||||||
function tstoredsymtable.needs_init_final : boolean;
|
|
||||||
begin
|
|
||||||
b_needs_init_final:=false;
|
|
||||||
foreach({$ifdef FPCPROCVAR}@{$endif}_needs_init_final);
|
|
||||||
needs_init_final:=b_needs_init_final;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TRecordSymtable
|
TRecordSymtable
|
||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
@ -1199,27 +1198,27 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tabstractlocalsymtable.load_browser(ppufile:tcompilerppufile);
|
procedure tabstractlocalsymtable.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
storesymtable : tsymtable;
|
storesymtable : tsymtable;
|
||||||
begin
|
begin
|
||||||
storesymtable:=aktlocalsymtable;
|
storesymtable:=aktlocalsymtable;
|
||||||
aktlocalsymtable:=self;
|
aktlocalsymtable:=self;
|
||||||
|
|
||||||
inherited load_browser(ppufile);
|
inherited load_references(ppufile,locals);
|
||||||
|
|
||||||
aktlocalsymtable:=storesymtable;
|
aktlocalsymtable:=storesymtable;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tabstractlocalsymtable.write_browser(ppufile:tcompilerppufile);
|
procedure tabstractlocalsymtable.write_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
var
|
var
|
||||||
storesymtable : tsymtable;
|
storesymtable : tsymtable;
|
||||||
begin
|
begin
|
||||||
storesymtable:=aktlocalsymtable;
|
storesymtable:=aktlocalsymtable;
|
||||||
aktlocalsymtable:=self;
|
aktlocalsymtable:=self;
|
||||||
|
|
||||||
inherited load_browser(ppufile);
|
inherited write_references(ppufile,locals);
|
||||||
|
|
||||||
aktlocalsymtable:=storesymtable;
|
aktlocalsymtable:=storesymtable;
|
||||||
end;
|
end;
|
||||||
@ -1472,19 +1471,19 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tstaticsymtable.load_browser(ppufile:tcompilerppufile);
|
procedure tstaticsymtable.load_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
begin
|
begin
|
||||||
aktstaticsymtable:=self;
|
aktstaticsymtable:=self;
|
||||||
|
|
||||||
inherited load_browser(ppufile);
|
inherited load_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tstaticsymtable.write_browser(ppufile:tcompilerppufile);
|
procedure tstaticsymtable.write_references(ppufile:tcompilerppufile;locals:boolean);
|
||||||
begin
|
begin
|
||||||
aktstaticsymtable:=self;
|
aktstaticsymtable:=self;
|
||||||
|
|
||||||
inherited write_browser(ppufile);
|
inherited write_references(ppufile,locals);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2072,7 +2071,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.40 2001-08-06 21:40:49 peter
|
Revision 1.41 2001-08-19 09:39:29 peter
|
||||||
|
* local browser support fixed
|
||||||
|
|
||||||
|
Revision 1.40 2001/08/06 21:40:49 peter
|
||||||
* funcret moved from tprocinfo to tprocdef
|
* funcret moved from tprocinfo to tprocdef
|
||||||
|
|
||||||
Revision 1.39 2001/07/29 22:12:58 peter
|
Revision 1.39 2001/07/29 22:12:58 peter
|
||||||
|
@ -48,6 +48,7 @@ var
|
|||||||
ppufile : tppufile;
|
ppufile : tppufile;
|
||||||
space : string;
|
space : string;
|
||||||
read_member : boolean;
|
read_member : boolean;
|
||||||
|
unitindex : longint;
|
||||||
verbose : longint;
|
verbose : longint;
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
@ -344,7 +345,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure read_abstract_proc_def;
|
{ Read abstract procdef and return if inline procdef }
|
||||||
type
|
type
|
||||||
tproccalloption=(pocall_none,
|
tproccalloption=(pocall_none,
|
||||||
pocall_clearstack, { Use IBM flat calling convention. (Used by GCC.) }
|
pocall_clearstack, { Use IBM flat calling convention. (Used by GCC.) }
|
||||||
@ -390,6 +391,7 @@ type
|
|||||||
po_varargs { printf like arguments }
|
po_varargs { printf like arguments }
|
||||||
);
|
);
|
||||||
tprocoptions=set of tprocoption;
|
tprocoptions=set of tprocoption;
|
||||||
|
function read_abstract_proc_def:tproccalloptions;
|
||||||
type
|
type
|
||||||
tproccallopt=record
|
tproccallopt=record
|
||||||
mask : tproccalloption;
|
mask : tproccalloption;
|
||||||
@ -477,6 +479,7 @@ begin
|
|||||||
writeln;
|
writeln;
|
||||||
end;
|
end;
|
||||||
ppufile.getsmallset(proccalloptions);
|
ppufile.getsmallset(proccalloptions);
|
||||||
|
read_abstract_proc_def:=proccalloptions;
|
||||||
if proccalloptions<>[] then
|
if proccalloptions<>[] then
|
||||||
begin
|
begin
|
||||||
write(space,' CallOptions : ');
|
write(space,' CallOptions : ');
|
||||||
@ -862,6 +865,7 @@ var
|
|||||||
oldread_member : boolean;
|
oldread_member : boolean;
|
||||||
totaldefs,l,j,
|
totaldefs,l,j,
|
||||||
defcnt : longint;
|
defcnt : longint;
|
||||||
|
calloption : tproccalloptions;
|
||||||
begin
|
begin
|
||||||
defcnt:=0;
|
defcnt:=0;
|
||||||
with ppufile do
|
with ppufile do
|
||||||
@ -934,12 +938,13 @@ begin
|
|||||||
readtype;
|
readtype;
|
||||||
writeln(space,' Range : ',getlongint,' to ',getlongint);
|
writeln(space,' Range : ',getlongint,' to ',getlongint);
|
||||||
writeln(space,' Is Constructor : ',(getbyte<>0));
|
writeln(space,' Is Constructor : ',(getbyte<>0));
|
||||||
|
writeln(space,' Is Dynamic : ',(getbyte<>0));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ibprocdef :
|
ibprocdef :
|
||||||
begin
|
begin
|
||||||
readcommondef('Procedure definition');
|
readcommondef('Procedure definition');
|
||||||
read_abstract_proc_def;
|
calloption:=read_abstract_proc_def;
|
||||||
writeln(space,' Used Register : ',getbyte);
|
writeln(space,' Used Register : ',getbyte);
|
||||||
writeln(space,' Mangled name : ',getstring);
|
writeln(space,' Mangled name : ',getstring);
|
||||||
writeln(space,' Number : ',getlongint);
|
writeln(space,' Number : ',getlongint);
|
||||||
@ -949,13 +954,22 @@ begin
|
|||||||
readdefref;
|
readdefref;
|
||||||
write (space,' File Pos : ');
|
write (space,' File Pos : ');
|
||||||
readposinfo;
|
readposinfo;
|
||||||
|
if (pocall_inline in calloption) then
|
||||||
|
begin
|
||||||
|
write (space,' FuncretSym : ');
|
||||||
|
readdefref;
|
||||||
|
end;
|
||||||
space:=' '+space;
|
space:=' '+space;
|
||||||
{ parast }
|
{ parast }
|
||||||
readdefinitions(false);
|
readdefinitions(false);
|
||||||
readsymbols;
|
readsymbols;
|
||||||
{ localst }
|
{ localst }
|
||||||
{readdefinitions(false);
|
if (pocall_inline in calloption) or
|
||||||
readsymbols;}
|
((ppufile.header.flags and uf_local_browser) <> 0) then
|
||||||
|
begin
|
||||||
|
readdefinitions(false);
|
||||||
|
readsymbols;
|
||||||
|
end;
|
||||||
delete(space,1,4);
|
delete(space,1,4);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1276,50 +1290,49 @@ begin
|
|||||||
repeat
|
repeat
|
||||||
b:=readentry;
|
b:=readentry;
|
||||||
case b of
|
case b of
|
||||||
ibbeginsymtablebrowser :
|
ibbeginsymtablebrowser :
|
||||||
{ here we must read object and record symtables !! }
|
begin
|
||||||
begin
|
{ here we must read object and record symtables !! }
|
||||||
indent:=indent+' ';
|
indent:=indent+' ';
|
||||||
Writeln(indent,'Record/Object symtable');
|
Writeln(indent,'Record/Object symtable');
|
||||||
readbrowser;
|
readbrowser;
|
||||||
Indent:=Copy(Indent,1,Length(Indent)-2);
|
Indent:=Copy(Indent,1,Length(Indent)-2);
|
||||||
end;
|
end;
|
||||||
ibsymref : begin
|
ibsymref :
|
||||||
readsymref;
|
begin
|
||||||
readref;
|
readsymref;
|
||||||
end;
|
readref;
|
||||||
ibdefref : begin
|
end;
|
||||||
readdefref;
|
ibdefref :
|
||||||
readref;
|
begin
|
||||||
if (ppufile.header.flags and uf_local_browser)<>0 then
|
readdefref;
|
||||||
begin
|
readref;
|
||||||
{ parast and localst }
|
if ((ppufile.header.flags and uf_local_browser)<>0) and
|
||||||
indent:=indent+' ';
|
(UnitIndex=0) then
|
||||||
Writeln(indent,'Parasymtable for function');
|
begin
|
||||||
readdefinitions(false);
|
{ parast and localst }
|
||||||
readsymbols;
|
indent:=indent+' ';
|
||||||
b:=ppufile.readentry;
|
b:=ppufile.readentry;
|
||||||
if b=ibbeginsymtablebrowser then
|
if b=ibbeginsymtablebrowser then
|
||||||
readbrowser;
|
readbrowser;
|
||||||
Writeln(indent,'Localsymtable for function');
|
b:=ppufile.readentry;
|
||||||
readdefinitions(false);
|
if b=ibbeginsymtablebrowser then
|
||||||
readsymbols;
|
readbrowser;
|
||||||
b:=ppufile.readentry;
|
Indent:=Copy(Indent,1,Length(Indent)-2);
|
||||||
if b=ibbeginsymtablebrowser then
|
end;
|
||||||
readbrowser;
|
end;
|
||||||
Indent:=Copy(Indent,1,Length(Indent)-2);
|
iberror :
|
||||||
end;
|
begin
|
||||||
end;
|
Writeln('Error in PPU');
|
||||||
iberror : begin
|
exit;
|
||||||
Writeln('Error in PPU');
|
end;
|
||||||
exit;
|
ibendsymtablebrowser :
|
||||||
end;
|
break;
|
||||||
ibendsymtablebrowser : break;
|
else
|
||||||
else
|
begin
|
||||||
begin
|
WriteLn('!! Skipping unsupported PPU Entry in Browser: ',b);
|
||||||
WriteLn('!! Skipping unsupported PPU Entry in Browser: ',b);
|
Halt;
|
||||||
Halt;
|
end;
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
until false;
|
until false;
|
||||||
end;
|
end;
|
||||||
@ -1332,7 +1345,7 @@ end;
|
|||||||
|
|
||||||
procedure dofile (filename : string);
|
procedure dofile (filename : string);
|
||||||
var
|
var
|
||||||
b,unitindex : byte;
|
b : byte;
|
||||||
begin
|
begin
|
||||||
{ reset }
|
{ reset }
|
||||||
space:='';
|
space:='';
|
||||||
@ -1468,13 +1481,10 @@ begin
|
|||||||
Writeln;
|
Writeln;
|
||||||
Writeln('Static browser section');
|
Writeln('Static browser section');
|
||||||
Writeln('---------------');
|
Writeln('---------------');
|
||||||
|
UnitIndex:=0;
|
||||||
b:=ppufile.readentry;
|
b:=ppufile.readentry;
|
||||||
if b=ibbeginsymtablebrowser then
|
if b=ibbeginsymtablebrowser then
|
||||||
begin
|
readbrowser
|
||||||
Writeln('Unit ',UnitIndex);
|
|
||||||
readbrowser;
|
|
||||||
Inc(UnitIndex);
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
Writeln('Wrong end browser entry ',b,' should be ',ibendbrowser);
|
Writeln('Wrong end browser entry ',b,' should be ',ibendbrowser);
|
||||||
end;
|
end;
|
||||||
@ -1550,7 +1560,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 2001-06-29 19:42:18 peter
|
Revision 1.6 2001-08-19 09:39:29 peter
|
||||||
|
* local browser support fixed
|
||||||
|
|
||||||
|
Revision 1.5 2001/06/29 19:42:18 peter
|
||||||
* new flags added
|
* new flags added
|
||||||
|
|
||||||
Revision 1.4 2001/06/04 11:53:15 peter
|
Revision 1.4 2001/06/04 11:53:15 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user