mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 12:49:12 +02:00
* new deref
This commit is contained in:
parent
e871a752bb
commit
032762ce34
115
utils/ppudump.pp
115
utils/ppudump.pp
@ -129,53 +129,61 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure readdefref;
|
Procedure ReadPosInfo;
|
||||||
var
|
|
||||||
w : word;
|
|
||||||
begin
|
begin
|
||||||
w:=ppufile^.getword;
|
Writeln(ppufile^.getword,' (',ppufile^.getlongint,',',ppufile^.getword,')');
|
||||||
if w=$ffff then
|
|
||||||
begin
|
|
||||||
w:=ppufile^.getword;
|
|
||||||
if w=$ffff then
|
|
||||||
writeln('nil')
|
|
||||||
else
|
|
||||||
writeln('Local Definition Nr. ',w);
|
|
||||||
end
|
|
||||||
else if w=$fffe then
|
|
||||||
begin
|
|
||||||
w:=ppufile^.getword;
|
|
||||||
writeln('Static Definition Nr. ',w);
|
|
||||||
end
|
|
||||||
else if w>$8000 then
|
|
||||||
writeln('Local symtable ',w,' Definition Nr. ',ppufile^.getword)
|
|
||||||
else
|
|
||||||
writeln('Unit ',w,' Definition Nr. ',ppufile^.getword)
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure readsymref;
|
procedure readderef(const s:string);
|
||||||
|
type
|
||||||
|
tdereftype = (derefnil,derefaktrecordindex,derefaktstaticindex,derefunit,derefrecord,derefindex);
|
||||||
var
|
var
|
||||||
w : word;
|
b : tdereftype;
|
||||||
begin
|
begin
|
||||||
w:=ppufile^.getword;
|
repeat
|
||||||
if w=$ffff then
|
b:=tdereftype(ppufile^.getbyte);
|
||||||
begin
|
case b of
|
||||||
w:=ppufile^.getword;
|
derefnil :
|
||||||
if w=$ffff then
|
begin
|
||||||
writeln('nil')
|
writeln('nil');
|
||||||
else
|
break;
|
||||||
writeln('Local Symbol Nr. ',w)
|
end;
|
||||||
end
|
derefaktrecordindex :
|
||||||
else if w=$fffe then
|
begin
|
||||||
begin
|
writeln('AktRecord ',s,' ',ppufile^.getword);
|
||||||
w:=ppufile^.getword;
|
break;
|
||||||
writeln('Static Symbol Nr. ',w);
|
end;
|
||||||
end
|
derefaktstaticindex :
|
||||||
else if w>$8000 then
|
begin
|
||||||
writeln('Local symtable ',w,' Symbol Nr. ',ppufile^.getword)
|
writeln('AktStatic ',s,' ',ppufile^.getword);
|
||||||
else
|
break;
|
||||||
writeln('Unit ',w,' Symbol Nr. ',ppufile^.getword)
|
end;
|
||||||
|
derefunit :
|
||||||
|
begin
|
||||||
|
writeln('Unit ',ppufile^.getword);
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
derefrecord :
|
||||||
|
begin
|
||||||
|
write('RecordDef ',ppufile^.getword,', ');
|
||||||
|
end;
|
||||||
|
derefindex :
|
||||||
|
begin
|
||||||
|
write(s,' ',ppufile^.getword,', ');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure readdefref;
|
||||||
|
begin
|
||||||
|
readderef('Definition');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure readsymref;
|
||||||
|
begin
|
||||||
|
readderef('Symbol');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -277,6 +285,8 @@ begin
|
|||||||
symoptions:=ppufile^.getbyte;
|
symoptions:=ppufile^.getbyte;
|
||||||
if symoptions<>0 then
|
if symoptions<>0 then
|
||||||
begin
|
begin
|
||||||
|
write(space,' File Pos: ');
|
||||||
|
readposinfo;
|
||||||
write(space,' Options: ');
|
write(space,' Options: ');
|
||||||
first:=true;
|
first:=true;
|
||||||
for i:=1to symopts do
|
for i:=1to symopts do
|
||||||
@ -611,7 +621,10 @@ begin
|
|||||||
writeln(space,' Number : ',getlongint);
|
writeln(space,' Number : ',getlongint);
|
||||||
write (space,' Next : ');
|
write (space,' Next : ');
|
||||||
readdefref;
|
readdefref;
|
||||||
getlongint;
|
write (space,' Class : ');
|
||||||
|
readdefref;
|
||||||
|
write (space,' File Pos : ');
|
||||||
|
readposinfo;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ibprocvardef :
|
ibprocvardef :
|
||||||
@ -707,13 +720,13 @@ begin
|
|||||||
ibclassrefdef :
|
ibclassrefdef :
|
||||||
begin
|
begin
|
||||||
readcommondef('Class reference definition');
|
readcommondef('Class reference definition');
|
||||||
writeln(space,' To definition : ');
|
write (space,' To definition : ');
|
||||||
readdefref;
|
readdefref;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ibsetdef :
|
ibsetdef :
|
||||||
begin
|
begin
|
||||||
writeln(space,'Set definition');
|
readcommondef('Set definition');
|
||||||
write (space,' Element type : ');
|
write (space,' Element type : ');
|
||||||
readdefref;
|
readdefref;
|
||||||
b:=getbyte;
|
b:=getbyte;
|
||||||
@ -753,6 +766,7 @@ end;
|
|||||||
procedure readinterface;
|
procedure readinterface;
|
||||||
var
|
var
|
||||||
b : byte;
|
b : byte;
|
||||||
|
sourcenumber,
|
||||||
unitnumber : word;
|
unitnumber : word;
|
||||||
ucrc,uintfcrc : longint;
|
ucrc,uintfcrc : longint;
|
||||||
begin
|
begin
|
||||||
@ -767,8 +781,12 @@ begin
|
|||||||
|
|
||||||
ibsourcefiles :
|
ibsourcefiles :
|
||||||
begin
|
begin
|
||||||
|
sourcenumber:=1;
|
||||||
while not EndOfEntry do
|
while not EndOfEntry do
|
||||||
Writeln('Source file: ',getstring);
|
begin
|
||||||
|
Writeln('Source file ',sourcenumber,' : ',getstring);
|
||||||
|
inc(sourcenumber);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ibloadunit :
|
ibloadunit :
|
||||||
@ -1102,7 +1120,7 @@ end;
|
|||||||
|
|
||||||
procedure help;
|
procedure help;
|
||||||
begin
|
begin
|
||||||
writeln('usage: dumpppu [options] <filename1> <filename2>...');
|
writeln('usage: ppudump [options] <filename1> <filename2>...');
|
||||||
writeln;
|
writeln;
|
||||||
writeln('[options] can be:');
|
writeln('[options] can be:');
|
||||||
writeln(' -V<verbose> Set verbosity to <verbose>');
|
writeln(' -V<verbose> Set verbosity to <verbose>');
|
||||||
@ -1163,7 +1181,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.1 1999-05-12 16:11:39 peter
|
Revision 1.2 1999-05-14 17:52:04 peter
|
||||||
|
* new deref
|
||||||
|
|
||||||
|
Revision 1.1 1999/05/12 16:11:39 peter
|
||||||
* moved
|
* moved
|
||||||
|
|
||||||
Revision 1.31 1999/04/29 17:22:34 peter
|
Revision 1.31 1999/04/29 17:22:34 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user