mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 22:29:28 +02:00
* fixed dumping objectdefs after r14185
+ dump wpo info git-svn-id: trunk@14484 -
This commit is contained in:
parent
616289f1c8
commit
d219109b16
@ -630,7 +630,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure readderef;
|
||||
procedure readderef(const derefspace: string);
|
||||
type
|
||||
tdereftype = (deref_nil,
|
||||
deref_unit,
|
||||
@ -653,7 +653,7 @@ begin
|
||||
writeln('!! Error: Deref idx ',idx,' > ',derefdatalen);
|
||||
exit;
|
||||
end;
|
||||
write('(',idx,') ');
|
||||
write(derefspace,'(',idx,') ');
|
||||
pdata:=@derefdata[idx];
|
||||
i:=0;
|
||||
n:=pdata[i];
|
||||
@ -725,7 +725,7 @@ const
|
||||
var
|
||||
sl : tsltype;
|
||||
begin
|
||||
readderef;
|
||||
readderef('');
|
||||
repeat
|
||||
sl:=tsltype(ppufile.getbyte);
|
||||
if sl=sl_none then
|
||||
@ -735,14 +735,14 @@ begin
|
||||
sl_call,
|
||||
sl_load,
|
||||
sl_subscript :
|
||||
readderef;
|
||||
readderef('');
|
||||
sl_absolutetype,
|
||||
sl_typeconv :
|
||||
readderef;
|
||||
readderef('');
|
||||
sl_vec :
|
||||
begin
|
||||
writeln(ppufile.getlongint);
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
end;
|
||||
until false;
|
||||
@ -889,7 +889,7 @@ begin
|
||||
writeln(space,'** Definition Id ',ppufile.getlongint,' **');
|
||||
writeln(space,s);
|
||||
write (space,' Type symbol : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' DefOptions : ');
|
||||
ppufile.getsmallset(defoptions);
|
||||
if defoptions<>[] then
|
||||
@ -1027,7 +1027,7 @@ begin
|
||||
if df_specialization in defoptions then
|
||||
begin
|
||||
write (space,' Orig. GenericDef : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
current_defoptions:=defoptions;
|
||||
end;
|
||||
@ -1234,7 +1234,7 @@ var
|
||||
tempbuf : array[0..255] of byte;
|
||||
begin
|
||||
write(space,' Return type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Fpu used : ',ppufile.getbyte);
|
||||
proctypeoption:=tproctypeoption(ppufile.getbyte);
|
||||
write(space,' TypeOption : ');
|
||||
@ -1350,7 +1350,7 @@ begin
|
||||
writeln(space,' Regable : ',Varregable2Str(ppufile.getbyte));
|
||||
writeln(space,' Addr Taken : ',(ppufile.getbyte<>0));
|
||||
write (space,' Var Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
ppufile.getsmallset(varoptions);
|
||||
if varoptions<>[] then
|
||||
begin
|
||||
@ -1522,6 +1522,64 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure ReadCreatedObjTypes;
|
||||
var
|
||||
i,j,
|
||||
len,
|
||||
bssize: longint;
|
||||
bs: pbyte;
|
||||
begin
|
||||
if ppufile.readentry<>ibcreatedobjtypes then
|
||||
begin
|
||||
writeln('!! ibcreatedobjtypes entry not found');
|
||||
ppufile.skipdata(ppufile.entrysize);
|
||||
exit
|
||||
end;
|
||||
writeln;
|
||||
writeln(space,'WPO info');
|
||||
writeln(space,'--------');
|
||||
|
||||
len:=ppufile.getlongint;
|
||||
writeln(space,'** Instantiated Object/Class types: ',len,' **');
|
||||
space:=space+' ';
|
||||
for i:=0 to len-1 do
|
||||
readderef(space);
|
||||
setlength(space,length(space)-2);
|
||||
|
||||
len:=ppufile.getlongint;
|
||||
writeln(space,'** Instantiated ClassRef types: ',len,' **');
|
||||
space:=space+' ';
|
||||
for i:=0 to len-1 do
|
||||
readderef(space);
|
||||
setlength(space,length(space)-2);
|
||||
|
||||
len:=ppufile.getlongint;
|
||||
writeln(space,'** Possibly instantiated ClassRef types : ',len,' **');
|
||||
space:=space+' ';
|
||||
for i:=0 to len-1 do
|
||||
readderef(space);
|
||||
setlength(space,length(space)-2);
|
||||
|
||||
len:=ppufile.getlongint;
|
||||
writeln(space,'** Class types with called virtual methods info : ',len,' **');
|
||||
space:=space+' ';
|
||||
for i:=0 to len-1 do
|
||||
begin
|
||||
write(space,'Class def : ');
|
||||
readderef('');
|
||||
write(space+' ','Called vmtentries : ');
|
||||
bssize:=ppufile.getlongint;
|
||||
getmem(bs,bssize);
|
||||
ppufile.readdata(bs^,bssize);
|
||||
for j:=0 to bssize*8-1 do
|
||||
if (((bs+j shr 3)^ shr (j and 7)) and 1) <> 0 then
|
||||
write(j,', ');
|
||||
writeln;
|
||||
freemem(bs);
|
||||
end;
|
||||
setlength(space,length(space)-2);
|
||||
end;
|
||||
|
||||
{****************************************************************************
|
||||
Read Symbols Part
|
||||
****************************************************************************}
|
||||
@ -1575,7 +1633,7 @@ begin
|
||||
begin
|
||||
readcommonsym('Type symbol ');
|
||||
write(space,' Result Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
|
||||
ibprocsym :
|
||||
@ -1585,7 +1643,7 @@ begin
|
||||
for i:=1 to len do
|
||||
begin
|
||||
write(space,' Definition : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -1597,13 +1655,13 @@ begin
|
||||
constord :
|
||||
begin
|
||||
write (space,' OrdinalType : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Value : ',constexp.tostr(getexprint));
|
||||
end;
|
||||
constpointer :
|
||||
begin
|
||||
write (space,' PointerType : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Value : ',getlongint)
|
||||
end;
|
||||
conststring,
|
||||
@ -1622,7 +1680,7 @@ begin
|
||||
constset :
|
||||
begin
|
||||
write (space,' Set Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
for i:=1to 4 do
|
||||
begin
|
||||
write (space,' Value : ');
|
||||
@ -1685,7 +1743,7 @@ begin
|
||||
begin
|
||||
readabstractvarsym('Global Variable symbol ',varoptions);
|
||||
write (space,' DefaultConst : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
if (vo_has_mangledname in varoptions) then
|
||||
writeln(space,' Mangledname : ',getstring);
|
||||
end;
|
||||
@ -1694,14 +1752,14 @@ begin
|
||||
begin
|
||||
readabstractvarsym('Local Variable symbol ',varoptions);
|
||||
write (space,' DefaultConst : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
|
||||
ibparavarsym :
|
||||
begin
|
||||
readabstractvarsym('Parameter Variable symbol ',varoptions);
|
||||
write (space,' DefaultConst : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' ParaNr : ',getword);
|
||||
writeln(space,' VarState : ',getbyte);
|
||||
if (vo_has_explicit_paraloc in varoptions) then
|
||||
@ -1715,7 +1773,7 @@ begin
|
||||
begin
|
||||
readcommonsym('Enumeration symbol ');
|
||||
write (space,' Definition : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Value : ',getlongint);
|
||||
end;
|
||||
|
||||
@ -1749,13 +1807,13 @@ begin
|
||||
i:=getlongint;
|
||||
writeln(space,' PropOptions : ',i);
|
||||
write (space,' OverrideProp : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' Prop Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Index : ',getlongint);
|
||||
writeln(space,' Default : ',getlongint);
|
||||
write (space,' Index Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' Readaccess : ');
|
||||
readpropaccesslist(space+' Sym: ');
|
||||
write (space,' Writeaccess : ');
|
||||
@ -1832,7 +1890,7 @@ begin
|
||||
begin
|
||||
readcommondef('Pointer definition');
|
||||
write (space,' Pointed Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Is Far : ',(getbyte<>0));
|
||||
end;
|
||||
|
||||
@ -1873,9 +1931,9 @@ begin
|
||||
begin
|
||||
readcommondef('Array definition');
|
||||
write (space,' Element type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' Range Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Range : ',getaint,' to ',getaint);
|
||||
write (space,' Options : ');
|
||||
readarraydefoptions;
|
||||
@ -1890,9 +1948,9 @@ begin
|
||||
writeln(space,' Number : ',getword);
|
||||
writeln(space,' Level : ',getbyte);
|
||||
write (space,' Class : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' Procsym : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' File Pos : ');
|
||||
readposinfo;
|
||||
writeln(space,' Visibility : ',Visibility2Str(ppufile.getbyte));
|
||||
@ -1902,7 +1960,7 @@ begin
|
||||
begin
|
||||
{ library symbol for AmigaOS/MorphOS }
|
||||
write (space,' Library symbol : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
if (po_has_importdll in procoptions) then
|
||||
writeln(space,' Import DLL : ',getstring);
|
||||
@ -1918,7 +1976,7 @@ begin
|
||||
if (po_has_inlininginfo in procoptions) then
|
||||
begin
|
||||
write (space,' FuncretSym : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
ppufile.getsmallset(procinfooptions);
|
||||
writeln(space,' ProcInfoOptions : ',dword(procinfooptions));
|
||||
end;
|
||||
@ -2023,12 +2081,13 @@ begin
|
||||
end;
|
||||
writeln(space,' Name of Class : ',getstring);
|
||||
writeln(space,' External name : ',getstring);
|
||||
writeln(space,' Import lib : ',getstring);
|
||||
writeln(space,' DataSize : ',getaint);
|
||||
writeln(space,' FieldAlign : ',getbyte);
|
||||
writeln(space,' RecordAlign : ',getbyte);
|
||||
writeln(space,' Vmt offset : ',getlongint);
|
||||
write (space, ' Ancestor Class : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
write (space,' Options : ');
|
||||
readobjectdefoptions;
|
||||
|
||||
@ -2046,7 +2105,7 @@ begin
|
||||
for j:=1 to l do
|
||||
begin
|
||||
write(space,' ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Visibility: ',Visibility2Str(getbyte));
|
||||
end;
|
||||
|
||||
@ -2057,7 +2116,7 @@ begin
|
||||
for j:=1 to l do
|
||||
begin
|
||||
write (space,' - Definition : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' IOffset : ',getlongint);
|
||||
end;
|
||||
end;
|
||||
@ -2065,7 +2124,7 @@ begin
|
||||
if df_copied_def in current_defoptions then
|
||||
begin
|
||||
writeln(' Copy of def: ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
|
||||
if not EndOfEntry then
|
||||
@ -2089,7 +2148,7 @@ begin
|
||||
1 : begin
|
||||
writeln('Typed');
|
||||
write (space,' File of Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
2 : writeln('Untyped');
|
||||
end;
|
||||
@ -2108,7 +2167,7 @@ begin
|
||||
begin
|
||||
readcommondef('Enumeration type definition');
|
||||
write(space,'Base enumeration type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Smallest element : ',getaint);
|
||||
writeln(space,' Largest element : ',getaint);
|
||||
writeln(space,' Size : ',getaint);
|
||||
@ -2118,14 +2177,14 @@ begin
|
||||
begin
|
||||
readcommondef('Class reference definition');
|
||||
write (space,' Pointed Type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
end;
|
||||
|
||||
ibsetdef :
|
||||
begin
|
||||
readcommondef('Set definition');
|
||||
write (space,' Element type : ');
|
||||
readderef;
|
||||
readderef('');
|
||||
writeln(space,' Size : ',getaint);
|
||||
writeln(space,' Set Base : ',getaint);
|
||||
writeln(space,' Set Max : ',getaint);
|
||||
@ -2442,6 +2501,7 @@ begin
|
||||
else
|
||||
ppufile.skipuntilentry(ibendsyms);
|
||||
end;
|
||||
ReadCreatedObjTypes;
|
||||
{shutdown ppufile}
|
||||
ppufile.closefile;
|
||||
ppufile.free;
|
||||
|
Loading…
Reference in New Issue
Block a user