mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-24 14:29:22 +02:00
* Fixes to make it compilable under BP again.
This commit is contained in:
parent
cb936cddb2
commit
d9445e22e9
@ -29,8 +29,7 @@
|
|||||||
deftype:=abstractdef;
|
deftype:=abstractdef;
|
||||||
owner := nil;
|
owner := nil;
|
||||||
next := nil;
|
next := nil;
|
||||||
sym := nil;
|
number := 0;
|
||||||
indexnb := 0;
|
|
||||||
if registerdef then
|
if registerdef then
|
||||||
symtablestack^.registerdef(@self);
|
symtablestack^.registerdef(@self);
|
||||||
has_rtti:=false;
|
has_rtti:=false;
|
||||||
@ -49,19 +48,20 @@
|
|||||||
end;
|
end;
|
||||||
lastglobaldef := @self;
|
lastglobaldef := @self;
|
||||||
nextglobal := nil;
|
nextglobal := nil;
|
||||||
|
sym := nil;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor tdef.load;
|
constructor tdef.load;
|
||||||
begin
|
begin
|
||||||
|
{$ifdef GDB}
|
||||||
deftype:=abstractdef;
|
deftype:=abstractdef;
|
||||||
indexnb := 0;
|
is_def_stab_written := false;
|
||||||
|
number := 0;
|
||||||
sym := nil;
|
sym := nil;
|
||||||
owner := nil;
|
owner := nil;
|
||||||
next := nil;
|
next := nil;
|
||||||
has_rtti:=false;
|
has_rtti:=false;
|
||||||
{$ifdef GDB}
|
|
||||||
is_def_stab_written := false;
|
|
||||||
globalnb := 0;
|
globalnb := 0;
|
||||||
if assigned(lastglobaldef) then
|
if assigned(lastglobaldef) then
|
||||||
begin
|
begin
|
||||||
@ -580,7 +580,7 @@
|
|||||||
|
|
||||||
constructor torddef.init(t : tbasetype;v,b : longint);
|
constructor torddef.init(t : tbasetype;v,b : longint);
|
||||||
begin
|
begin
|
||||||
inherited init;
|
tdef.init;
|
||||||
deftype:=orddef;
|
deftype:=orddef;
|
||||||
low:=v;
|
low:=v;
|
||||||
high:=b;
|
high:=b;
|
||||||
@ -590,7 +590,7 @@
|
|||||||
|
|
||||||
constructor torddef.load;
|
constructor torddef.load;
|
||||||
begin
|
begin
|
||||||
inherited load;
|
tdef.load;
|
||||||
deftype:=orddef;
|
deftype:=orddef;
|
||||||
typ:=tbasetype(readbyte);
|
typ:=tbasetype(readbyte);
|
||||||
low:=readlong;
|
low:=readlong;
|
||||||
@ -1356,11 +1356,13 @@
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function tarraydef.needs_rtti : boolean;
|
function tarraydef.needs_rtti : boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
needs_rtti:=definition^.needs_rtti;
|
needs_rtti:=definition^.needs_rtti;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure tarraydef.generate_rtti;
|
procedure tarraydef.generate_rtti;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{ first, generate the rtti of the element type, else we get mixed }
|
{ first, generate the rtti of the element type, else we get mixed }
|
||||||
{ up because the rtti would be mixed }
|
{ up because the rtti would be mixed }
|
||||||
@ -1795,15 +1797,13 @@
|
|||||||
localst^.next:=parast;
|
localst^.next:=parast;
|
||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
defref:=nil;
|
defref:=nil;
|
||||||
lastwritten:=nil;
|
if make_ref then
|
||||||
refcount:=0;
|
add_new_ref(defref,@tokenpos);
|
||||||
if (cs_browser in aktswitches) and make_ref then
|
|
||||||
begin
|
|
||||||
defref:=new(pref,init(defref,@tokenpos));
|
|
||||||
inc(refcount);
|
|
||||||
end;
|
|
||||||
lastref:=defref;
|
lastref:=defref;
|
||||||
|
lastwritten:=nil;
|
||||||
|
refcount:=1;
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
|
|
||||||
{ first, we assume, that all registers are used }
|
{ first, we assume, that all registers are used }
|
||||||
{$ifdef i386}
|
{$ifdef i386}
|
||||||
usedregisters:=$ff;
|
usedregisters:=$ff;
|
||||||
@ -1821,8 +1821,10 @@
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
constructor tprocdef.load;
|
constructor tprocdef.load;
|
||||||
|
|
||||||
var
|
var
|
||||||
s : string;
|
s : string;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{ deftype:=procdef; this is at the wrong place !! }
|
{ deftype:=procdef; this is at the wrong place !! }
|
||||||
inherited load;
|
inherited load;
|
||||||
@ -1852,78 +1854,47 @@
|
|||||||
localst:=nil;
|
localst:=nil;
|
||||||
forwarddef:=false;
|
forwarddef:=false;
|
||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
|
if (current_module^.flags and uf_uses_browser)<>0 then
|
||||||
|
load_references
|
||||||
|
else
|
||||||
|
begin
|
||||||
lastref:=nil;
|
lastref:=nil;
|
||||||
lastwritten:=nil;
|
lastwritten:=nil;
|
||||||
defref:=nil;
|
defref:=nil;
|
||||||
refcount:=0;
|
refcount:=0;
|
||||||
if (current_module^.flags and uf_has_browser)<>0 then
|
end;
|
||||||
load_references;
|
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
|
|
||||||
{$ifdef NEWPPU}
|
|
||||||
|
|
||||||
procedure tprocdef.load_references;
|
procedure tprocdef.load_references;
|
||||||
var
|
|
||||||
pos : tfileposinfo;
|
|
||||||
begin
|
|
||||||
while (not ppufile^.endofentry) do
|
|
||||||
begin
|
|
||||||
readposinfo(pos);
|
|
||||||
inc(refcount);
|
|
||||||
lastref:=new(pref,init(lastref,@pos));
|
|
||||||
if refcount=1 then
|
|
||||||
defref:=lastref;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
var fileindex : word;
|
||||||
procedure tprocdef.write_references;
|
|
||||||
var
|
|
||||||
ref : pref;
|
|
||||||
begin
|
|
||||||
if lastwritten=lastref then
|
|
||||||
exit;
|
|
||||||
{ write address of this symbol }
|
|
||||||
writedefref(@self);
|
|
||||||
{ write refs }
|
|
||||||
if assigned(lastwritten) then
|
|
||||||
ref:=lastwritten
|
|
||||||
else
|
|
||||||
ref:=defref;
|
|
||||||
while assigned(ref) do
|
|
||||||
begin
|
|
||||||
writeposinfo(ref^.posinfo);
|
|
||||||
ref:=ref^.nextref;
|
|
||||||
end;
|
|
||||||
ppufile^.writeentry(ibdefref);
|
|
||||||
lastwritten:=lastref;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{$else NEWPPU}
|
|
||||||
|
|
||||||
procedure tprocdef.load_references;
|
|
||||||
var
|
|
||||||
pos : tfileposinfo;
|
|
||||||
b : byte;
|
b : byte;
|
||||||
|
l,c : longint;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
b:=readbyte;
|
b:=readbyte;
|
||||||
|
refcount:=0;
|
||||||
|
lastref:=nil;
|
||||||
|
lastwritten:=nil;
|
||||||
|
defref:=nil;
|
||||||
while b=ibref do
|
while b=ibref do
|
||||||
begin
|
begin
|
||||||
readposinfo(pos);
|
fileindex:=readword;
|
||||||
|
l:=readlong;
|
||||||
|
c:=readword;
|
||||||
inc(refcount);
|
inc(refcount);
|
||||||
lastref:=new(pref,init(lastref,@pos));
|
lastref:=new(pref,load(lastref,fileindex,l,c));
|
||||||
if refcount=1 then
|
if refcount=1 then defref:=lastref;
|
||||||
defref:=lastref;
|
|
||||||
b:=readbyte;
|
b:=readbyte;
|
||||||
end;
|
end;
|
||||||
if b <> ibend then
|
if b <> ibend then
|
||||||
|
{ Message(unit_f_ppu_read);
|
||||||
|
message disappeared ?? }
|
||||||
Comment(V_fatal,'error in load_reference');
|
Comment(V_fatal,'error in load_reference');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tprocdef.write_references;
|
procedure tprocdef.write_references;
|
||||||
|
|
||||||
var ref : pref;
|
var ref : pref;
|
||||||
@ -1940,7 +1911,9 @@
|
|||||||
while assigned(ref) do
|
while assigned(ref) do
|
||||||
begin
|
begin
|
||||||
writebyte(ibref);
|
writebyte(ibref);
|
||||||
writeposinfo(ref^.posinfo);
|
writeword(ref^.posinfo.fileindex);
|
||||||
|
writelong(ref^.posinfo.line);
|
||||||
|
writeword(ref^.posinfo.column);
|
||||||
ref:=ref^.nextref;
|
ref:=ref^.nextref;
|
||||||
end;
|
end;
|
||||||
lastwritten:=lastref;
|
lastwritten:=lastref;
|
||||||
@ -1964,34 +1937,44 @@
|
|||||||
while assigned(ref) do
|
while assigned(ref) do
|
||||||
begin
|
begin
|
||||||
writebyte(ibref);
|
writebyte(ibref);
|
||||||
writeposinfo(ref^.posinfo);
|
writeword(ref^.posinfo.fileindex);
|
||||||
|
writelong(ref^.posinfo.line);
|
||||||
|
writeword(ref^.posinfo.column);
|
||||||
ref:=ref^.nextref;
|
ref:=ref^.nextref;
|
||||||
end;
|
end;
|
||||||
lastwritten:=lastref;
|
lastwritten:=lastref;
|
||||||
writebyte(ibend);
|
writebyte(ibend);
|
||||||
ppufile.do_crc:=false;
|
ppufile.do_crc:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure tprocdef.write_ref_to_file(var f : text);
|
||||||
|
|
||||||
{$endif NEWPPU}
|
var ref : pref;
|
||||||
|
i : longint;
|
||||||
|
|
||||||
procedure tprocdef.add_to_browserlog;
|
|
||||||
begin
|
begin
|
||||||
if assigned(defref) then
|
ref:=defref;
|
||||||
|
if assigned(ref) then
|
||||||
begin
|
begin
|
||||||
Browse.AddLog('***'+mangledname);
|
for i:=1 to reffile_indent do
|
||||||
Browse.AddLogRefs(defref);
|
system.write(f,' ');
|
||||||
|
writeln(f,'***',mangledname);
|
||||||
end;
|
end;
|
||||||
|
inc(reffile_indent,2);
|
||||||
|
while assigned(ref) do
|
||||||
|
begin
|
||||||
|
for i:=1 to reffile_indent do
|
||||||
|
system.write(f,' ');
|
||||||
|
writeln(f,ref^.get_file_line);
|
||||||
|
ref:=ref^.nextref;
|
||||||
|
end;
|
||||||
|
dec(reffile_indent,2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
|
|
||||||
destructor tprocdef.done;
|
destructor tprocdef.done;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef UseBrowser}
|
|
||||||
if assigned(defref) then
|
|
||||||
dispose(defref,done);
|
|
||||||
{$endif UseBrowser}
|
|
||||||
if assigned(parast) then
|
if assigned(parast) then
|
||||||
dispose(parast,done);
|
dispose(parast,done);
|
||||||
if assigned(localst) then
|
if assigned(localst) then
|
||||||
@ -2006,6 +1989,7 @@
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure tprocdef.write;
|
procedure tprocdef.write;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifndef NEWPPU}
|
{$ifndef NEWPPU}
|
||||||
writebyte(ibprocdef);
|
writebyte(ibprocdef);
|
||||||
@ -2035,9 +2019,14 @@
|
|||||||
writeptree(ptree(code));
|
writeptree(ptree(code));
|
||||||
}
|
}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef NEWPPU}
|
{$ifdef NEWPPU}
|
||||||
ppufile^.writeentry(ibprocdef);
|
ppufile^.writeentry(ibprocdef);
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$ifdef UseBrowser}
|
||||||
|
if (current_module^.flags and uf_uses_browser)<>0 then
|
||||||
|
write_references;
|
||||||
|
{$endif UseBrowser}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
@ -2631,10 +2620,10 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.10 1998-06-13 00:10:16 peter
|
Revision 1.11 1998-06-15 13:31:20 daniel
|
||||||
* working browser and newppu
|
|
||||||
* some small fixes against crashes which occured in bp7 (but not in
|
|
||||||
fpc?!)
|
* Fixes to make it compilable under BP again.
|
||||||
|
|
||||||
Revision 1.9 1998/06/12 14:10:37 michael
|
Revision 1.9 1998/06/12 14:10:37 michael
|
||||||
* Fixed wrong code for ansistring
|
* Fixed wrong code for ansistring
|
||||||
@ -2656,8 +2645,9 @@
|
|||||||
for win32
|
for win32
|
||||||
|
|
||||||
Revision 1.4 1998/06/04 09:55:45 pierre
|
Revision 1.4 1998/06/04 09:55:45 pierre
|
||||||
* demangled name of procsym reworked to become independant of the mangling
|
* demangled name of procsym reworked to become independant of the mangling scheme
|
||||||
scheme
|
|
||||||
|
Come test_funcret improvements (not yet working)S: ----------------------------------------------------------------------
|
||||||
|
|
||||||
Revision 1.3 1998/06/03 22:49:03 peter
|
Revision 1.3 1998/06/03 22:49:03 peter
|
||||||
+ wordbool,longbool
|
+ wordbool,longbool
|
||||||
|
@ -41,13 +41,10 @@
|
|||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
defref:=nil;
|
defref:=nil;
|
||||||
lastwritten:=nil;
|
lastwritten:=nil;
|
||||||
refcount:=0;
|
if make_ref then
|
||||||
if (cs_browser in aktswitches) and make_ref then
|
add_new_ref(defref,@tokenpos);
|
||||||
begin
|
|
||||||
defref:=new(pref,init(defref,@tokenpos));
|
|
||||||
inc(refcount);
|
|
||||||
end;
|
|
||||||
lastref:=defref;
|
lastref:=defref;
|
||||||
|
refcount:=1;
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -58,7 +55,6 @@
|
|||||||
right:=nil;
|
right:=nil;
|
||||||
setname(readstring);
|
setname(readstring);
|
||||||
typ:=abstractsym;
|
typ:=abstractsym;
|
||||||
line_no:=0;
|
|
||||||
if object_options then
|
if object_options then
|
||||||
properties:=symprop(readbyte)
|
properties:=symprop(readbyte)
|
||||||
else
|
else
|
||||||
@ -68,10 +64,16 @@
|
|||||||
defref:=nil;
|
defref:=nil;
|
||||||
lastwritten:=nil;
|
lastwritten:=nil;
|
||||||
refcount:=0;
|
refcount:=0;
|
||||||
|
if (current_module^.flags and uf_uses_browser)<>0 then
|
||||||
|
{ references do not change the ppu caracteristics }
|
||||||
|
{ this only save the references to variables/functions }
|
||||||
|
{ defined in the unit what about the others }
|
||||||
|
load_references;
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
{$ifdef GDB}
|
{$ifdef GDB}
|
||||||
isstabwritten := false;
|
isstabwritten := false;
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
|
line_no:=0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
@ -80,29 +82,37 @@
|
|||||||
|
|
||||||
procedure tsym.load_references;
|
procedure tsym.load_references;
|
||||||
var
|
var
|
||||||
pos : tfileposinfo;
|
fileindex : word;
|
||||||
|
b : byte;
|
||||||
|
l,c : longint;
|
||||||
|
begin
|
||||||
|
b:=readentry;
|
||||||
|
if b=ibref then
|
||||||
begin
|
begin
|
||||||
while (not ppufile^.endofentry) do
|
while (not ppufile^.endofentry) do
|
||||||
begin
|
begin
|
||||||
readposinfo(pos);
|
fileindex:=readword;
|
||||||
|
l:=readlong;
|
||||||
|
c:=readword;
|
||||||
inc(refcount);
|
inc(refcount);
|
||||||
lastref:=new(pref,init(lastref,@pos));
|
lastref:=new(pref,load(lastref,fileindex,l,c));
|
||||||
if refcount=1 then
|
if refcount=1 then
|
||||||
defref:=lastref;
|
defref:=lastref;
|
||||||
end;
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Message(unit_f_ppu_read_error);
|
||||||
lastwritten:=lastref;
|
lastwritten:=lastref;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure tsym.write_references;
|
procedure tsym.write_references;
|
||||||
var
|
var
|
||||||
ref : pref;
|
ref : pref;
|
||||||
prdef : pdef;
|
|
||||||
begin
|
begin
|
||||||
if lastwritten=lastref then
|
{ references do not change the ppu caracteristics }
|
||||||
exit;
|
{ this only save the references to variables/functions }
|
||||||
{ write address to this symbol }
|
{ defined in the unit what about the others }
|
||||||
writesymref(@self);
|
ppufile^.do_crc:=false;
|
||||||
{ write symbol refs }
|
|
||||||
if assigned(lastwritten) then
|
if assigned(lastwritten) then
|
||||||
ref:=lastwritten
|
ref:=lastwritten
|
||||||
else
|
else
|
||||||
@ -113,18 +123,57 @@
|
|||||||
ref:=ref^.nextref;
|
ref:=ref^.nextref;
|
||||||
end;
|
end;
|
||||||
lastwritten:=lastref;
|
lastwritten:=lastref;
|
||||||
ppufile^.writeentry(ibsymref);
|
ppufile^.writeentry(ibref);
|
||||||
{ when it's a procsym then write also the refs to the definition
|
ppufile^.do_crc:=true;
|
||||||
due the overloading }
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure load_external_references;
|
||||||
|
var b : byte;
|
||||||
|
sym : psym;
|
||||||
|
prdef : pdef;
|
||||||
|
begin
|
||||||
|
b:=readentry;
|
||||||
|
if b=ibextsymref then
|
||||||
|
begin
|
||||||
|
sym:=readsymref;
|
||||||
|
resolvesym(sym);
|
||||||
|
sym^.load_references;
|
||||||
|
end;
|
||||||
|
ibextdefref : begin
|
||||||
|
prdef:=readdefref;
|
||||||
|
resolvedef(prdef);
|
||||||
|
if prdef^.deftype<>procdef then
|
||||||
|
Message(unit_f_ppu_read_error);
|
||||||
|
pprocdef(prdef)^.load_references;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
Message(unit_f_ppu_read_error);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure tsym.write_external_references;
|
||||||
|
var ref : pref;
|
||||||
|
prdef : pdef;
|
||||||
|
begin
|
||||||
|
ppufile^.do_crc:=false;
|
||||||
|
if lastwritten=lastref then
|
||||||
|
exit;
|
||||||
|
writesymref(@self);
|
||||||
|
writeentry(ibextsymref);
|
||||||
|
|
||||||
|
write_references;
|
||||||
|
|
||||||
if typ=procsym then
|
if typ=procsym then
|
||||||
begin
|
begin
|
||||||
prdef:=pprocsym(@self)^.definition;
|
prdef:=pprocsym(@self)^.definition;
|
||||||
while assigned(prdef) do
|
while assigned(prdef) do
|
||||||
begin
|
begin
|
||||||
pprocdef(prdef)^.write_references;
|
pprocdef(prdef)^.write_external_references;
|
||||||
prdef:=pprocdef(prdef)^.nextoverloaded;
|
prdef:=pprocdef(prdef)^.nextoverloaded;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
ppufile^.do_crc:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$else NEWPPU}
|
{$else NEWPPU}
|
||||||
@ -179,6 +228,37 @@
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure load_external_references;
|
||||||
|
|
||||||
|
var b : byte;
|
||||||
|
sym : psym;
|
||||||
|
prdef : pdef;
|
||||||
|
begin
|
||||||
|
b:=readbyte;
|
||||||
|
while (b=ibextsymref) or (b=ibextdefref) do
|
||||||
|
begin
|
||||||
|
if b=ibextsymref then
|
||||||
|
begin
|
||||||
|
sym:=readsymref;
|
||||||
|
resolvesym(sym);
|
||||||
|
sym^.load_references;
|
||||||
|
b:=readbyte;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if b=ibextdefref then
|
||||||
|
begin
|
||||||
|
prdef:=readdefref;
|
||||||
|
resolvedef(prdef);
|
||||||
|
if prdef^.deftype<>procdef then
|
||||||
|
Message(unit_f_ppu_read_error);
|
||||||
|
pprocdef(prdef)^.load_references;
|
||||||
|
b:=readbyte;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if b <> ibend then
|
||||||
|
Message(unit_f_ppu_read_error);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure tsym.write_external_references;
|
procedure tsym.write_external_references;
|
||||||
var ref : pref;
|
var ref : pref;
|
||||||
prdef : pdef;
|
prdef : pdef;
|
||||||
@ -216,48 +296,44 @@
|
|||||||
|
|
||||||
{$endif NEWPPU}
|
{$endif NEWPPU}
|
||||||
|
|
||||||
procedure tsym.add_to_browserlog;
|
procedure tsym.write_ref_to_file(var f : text);
|
||||||
var
|
|
||||||
prdef : pprocdef;
|
var ref : pref;
|
||||||
|
i : longint;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if assigned(defref) then
|
ref:=defref;
|
||||||
|
if assigned(ref) then
|
||||||
begin
|
begin
|
||||||
Browse.AddLog('***'+name+'***');
|
for i:=1 to reffile_indent do
|
||||||
Browse.AddLogRefs(defref);
|
system.write(f,' ');
|
||||||
|
writeln(f,'***',name,'***');
|
||||||
end;
|
end;
|
||||||
{ when it's a procsym then write also the refs to the definition
|
inc(reffile_indent,2);
|
||||||
due the overloading }
|
while assigned(ref) do
|
||||||
if typ=procsym then
|
|
||||||
begin
|
begin
|
||||||
prdef:=pprocsym(@self)^.definition;
|
for i:=1 to reffile_indent do
|
||||||
while assigned(prdef) do
|
system.write(f,' ');
|
||||||
begin
|
writeln(f,ref^.get_file_line);
|
||||||
pprocdef(prdef)^.add_to_browserlog;
|
ref:=ref^.nextref;
|
||||||
prdef:=pprocdef(prdef)^.nextoverloaded;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
dec(reffile_indent,2);
|
||||||
end;
|
end;
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
|
|
||||||
|
|
||||||
destructor tsym.done;
|
destructor tsym.done;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef tp}
|
{$ifdef tp}
|
||||||
if not(use_big) then
|
if not(use_big) then
|
||||||
{$endif tp}
|
{$endif tp}
|
||||||
strdispose(_name);
|
strdispose(_name);
|
||||||
{$ifdef UseBrowser}
|
if assigned(left) then dispose(left,done);
|
||||||
if assigned(defref) then
|
if assigned(right) then dispose(right,done);
|
||||||
dispose(defref,done);
|
|
||||||
{$endif UseBrowser}
|
|
||||||
if assigned(left) then
|
|
||||||
dispose(left,done);
|
|
||||||
if assigned(right) then
|
|
||||||
dispose(right,done);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
destructor tsym.single_done;
|
destructor tsym.single_done;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef tp}
|
{$ifdef tp}
|
||||||
if not(use_big) then
|
if not(use_big) then
|
||||||
@ -272,8 +348,8 @@
|
|||||||
if object_options then
|
if object_options then
|
||||||
writebyte(byte(properties));
|
writebyte(byte(properties));
|
||||||
{$ifdef UseBrowser}
|
{$ifdef UseBrowser}
|
||||||
{ if cs_browser in aktswitches then
|
if (current_module^.flags and uf_uses_browser)<>0 then
|
||||||
write_references; }
|
write_references;
|
||||||
{$endif UseBrowser}
|
{$endif UseBrowser}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -386,13 +462,9 @@
|
|||||||
****************************************************************************}
|
****************************************************************************}
|
||||||
|
|
||||||
constructor tunitsym.init(const n : string;ref : punitsymtable);
|
constructor tunitsym.init(const n : string;ref : punitsymtable);
|
||||||
var
|
|
||||||
old_make_ref : boolean;
|
|
||||||
begin
|
begin
|
||||||
old_make_ref:=make_ref;
|
tsym.init(n);
|
||||||
make_ref:=false;
|
|
||||||
inherited init(n);
|
|
||||||
make_ref:=old_make_ref;
|
|
||||||
typ:=unitsym;
|
typ:=unitsym;
|
||||||
unitsymtable:=ref;
|
unitsymtable:=ref;
|
||||||
prevsym:=ref^.unitsym;
|
prevsym:=ref^.unitsym;
|
||||||
@ -555,7 +627,7 @@
|
|||||||
|
|
||||||
constructor tprogramsym.init(const n : string);
|
constructor tprogramsym.init(const n : string);
|
||||||
begin
|
begin
|
||||||
inherited init(n);
|
tsym.init(n);
|
||||||
typ:=programsym;
|
typ:=programsym;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -565,7 +637,7 @@
|
|||||||
|
|
||||||
constructor terrorsym.init;
|
constructor terrorsym.init;
|
||||||
begin
|
begin
|
||||||
inherited init('');
|
tsym.init('');
|
||||||
typ:=errorsym;
|
typ:=errorsym;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -804,13 +876,14 @@
|
|||||||
varspez:=vs_value;
|
varspez:=vs_value;
|
||||||
address:=0;
|
address:=0;
|
||||||
refs:=0;
|
refs:=0;
|
||||||
is_valid := 1;
|
|
||||||
var_options:=0;
|
var_options:=0;
|
||||||
|
is_valid := 1;
|
||||||
{ can we load the value into a register ? }
|
{ can we load the value into a register ? }
|
||||||
case p^.deftype of
|
case p^.deftype of
|
||||||
pointerdef,
|
pointerdef,
|
||||||
enumdef,
|
enumdef,
|
||||||
procvardef : var_options:=var_options or vo_regable;
|
procvardef :
|
||||||
|
var_options:=var_options or vo_regable;
|
||||||
orddef : case porddef(p)^.typ of
|
orddef : case porddef(p)^.typ of
|
||||||
u8bit,u16bit,u32bit,
|
u8bit,u16bit,u32bit,
|
||||||
bool8bit,bool16bit,bool32bit,
|
bool8bit,bool16bit,bool32bit,
|
||||||
@ -834,8 +907,7 @@
|
|||||||
varspez:=tvarspez(readbyte);
|
varspez:=tvarspez(readbyte);
|
||||||
if read_member then
|
if read_member then
|
||||||
address:=readlong
|
address:=readlong
|
||||||
else
|
else address:=0;
|
||||||
address:=0;
|
|
||||||
definition:=readdefref;
|
definition:=readdefref;
|
||||||
refs := 0;
|
refs := 0;
|
||||||
is_valid := 1;
|
is_valid := 1;
|
||||||
@ -956,7 +1028,7 @@
|
|||||||
{ the data filed is generated in parser.pas
|
{ the data filed is generated in parser.pas
|
||||||
with a tobject_FIELDNAME variable }
|
with a tobject_FIELDNAME variable }
|
||||||
{ this symbol can't be loaded to a register }
|
{ this symbol can't be loaded to a register }
|
||||||
var_options:=var_options and not vo_regable;
|
var_options:=var_options or vo_regable;
|
||||||
end
|
end
|
||||||
else if not(read_member) then
|
else if not(read_member) then
|
||||||
begin
|
begin
|
||||||
@ -999,8 +1071,7 @@
|
|||||||
if cs_debuginfo in aktswitches then
|
if cs_debuginfo in aktswitches then
|
||||||
concatstabto(bsssegment);
|
concatstabto(bsssegment);
|
||||||
{$endif GDB}
|
{$endif GDB}
|
||||||
if (cs_smartlink in aktswitches) or
|
if (cs_smartlink in aktswitches) then
|
||||||
((var_options and vo_is_c_var)<>0) then
|
|
||||||
bsssegment^.concat(new(pai_datablock,init_global(mangledname,l)))
|
bsssegment^.concat(new(pai_datablock,init_global(mangledname,l)))
|
||||||
else
|
else
|
||||||
bsssegment^.concat(new(pai_datablock,init(mangledname,l)));
|
bsssegment^.concat(new(pai_datablock,init(mangledname,l)));
|
||||||
@ -1671,17 +1742,10 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.10 1998-06-13 00:10:18 peter
|
Revision 1.11 1998-06-15 13:31:21 daniel
|
||||||
* working browser and newppu
|
|
||||||
* some small fixes against crashes which occured in bp7 (but not in
|
|
||||||
fpc?!)
|
|
||||||
|
|
||||||
Revision 1.9 1998/06/12 16:15:35 pierre
|
|
||||||
* external name 'C_var';
|
* Fixes to make it compilable under BP again.
|
||||||
export name 'intern_C_var';
|
|
||||||
cdecl;
|
|
||||||
cdecl;external;
|
|
||||||
are now supported only with -Sv switch
|
|
||||||
|
|
||||||
Revision 1.8 1998/06/11 10:11:59 peter
|
Revision 1.8 1998/06/11 10:11:59 peter
|
||||||
* -gb works again
|
* -gb works again
|
||||||
|
Loading…
Reference in New Issue
Block a user