mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-19 12:52:31 +02:00
* ppudump:
- Check PPU version to be the same as the current PPU version of the compiler. It prevents reading errors if a unit has wrong PPU version. The version check can be turned off using -S switch. - User WriteError() in appropriate places in the code. git-svn-id: trunk@24408 -
This commit is contained in:
parent
ad8f42cd29
commit
65d832420e
@ -193,6 +193,7 @@ var
|
|||||||
nostdout: boolean;
|
nostdout: boolean;
|
||||||
UnitList: TPpuContainerDef;
|
UnitList: TPpuContainerDef;
|
||||||
CurUnit: TPpuUnitDef;
|
CurUnit: TPpuUnitDef;
|
||||||
|
SkipVersionCheck: boolean;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
@ -932,8 +933,7 @@ begin
|
|||||||
idx:=ppufile.getlongint;
|
idx:=ppufile.getlongint;
|
||||||
if (idx>derefdatalen) then
|
if (idx>derefdatalen) then
|
||||||
begin
|
begin
|
||||||
writeln(['!! Error: Deref idx ',idx,' > ',derefdatalen]);
|
WriteError('!! Error: Deref idx '+IntToStr(idx)+' > '+IntToStr(derefdatalen));
|
||||||
SetHasErrors;
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
write([derefspace,'(',idx,') ']);
|
write([derefspace,'(',idx,') ']);
|
||||||
@ -983,8 +983,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
writeln(['!! unsupported dereftyp: ',ord(b)]);
|
WriteError('!! unsupported dereftyp: '+IntToStr(ord(b)));
|
||||||
SetHasErrors;
|
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2017,9 +2016,8 @@ var
|
|||||||
begin
|
begin
|
||||||
if ppufile.readentry<>ibcreatedobjtypes then
|
if ppufile.readentry<>ibcreatedobjtypes then
|
||||||
begin
|
begin
|
||||||
writeln('!! ibcreatedobjtypes entry not found');
|
WriteError('!! ibcreatedobjtypes entry not found');
|
||||||
ppufile.skipdata(ppufile.entrysize);
|
ppufile.skipdata(ppufile.entrysize);
|
||||||
SetHasErrors;
|
|
||||||
exit
|
exit
|
||||||
end;
|
end;
|
||||||
writeln;
|
writeln;
|
||||||
@ -2246,8 +2244,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
realvalue:=0.0;
|
realvalue:=0.0;
|
||||||
writeln([realvalue,' Error reading real value']);
|
WriteError('Error reading real value');
|
||||||
SetHasErrors;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
constset :
|
constset :
|
||||||
@ -2480,8 +2477,7 @@ begin
|
|||||||
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
WriteLn(['!! Skipping unsupported PPU Entry in Symbols: ',b]);
|
WriteError('!! Skipping unsupported PPU Entry in Symbols: '+IntToStr(b));
|
||||||
SetHasErrors;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if (def <> nil) and (def.Parent = nil) then
|
if (def <> nil) and (def.Parent = nil) then
|
||||||
@ -3133,8 +3129,7 @@ begin
|
|||||||
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
WriteLn(['!! Skipping unsupported PPU Entry in definitions: ',b]);
|
WriteError('!! Skipping unsupported PPU Entry in definitions: '+IntToStr(b));
|
||||||
SetHasErrors;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if (def <> nil) and (def.Parent = nil) then
|
if (def <> nil) and (def.Parent = nil) then
|
||||||
@ -3307,8 +3302,7 @@ begin
|
|||||||
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
WriteLn(['!! Skipping unsupported PPU Entry in General Part: ',b]);
|
WriteError('!! Skipping unsupported PPU Entry in General Part: '+IntToStr(b));
|
||||||
SetHasErrors;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
until false;
|
until false;
|
||||||
@ -3345,8 +3339,7 @@ begin
|
|||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
WriteLn(['!! Skipping unsupported PPU Entry in Implementation: ',b]);
|
WriteError('!! Skipping unsupported PPU Entry in Implementation: '+IntToStr(b));
|
||||||
SetHasErrors;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
until false;
|
until false;
|
||||||
@ -3370,8 +3363,7 @@ begin
|
|||||||
{ PPU File is open, check for PPU Id }
|
{ PPU File is open, check for PPU Id }
|
||||||
if not ppufile.CheckPPUID then
|
if not ppufile.CheckPPUID then
|
||||||
begin
|
begin
|
||||||
writeln([Filename,' : Not a valid PPU file, Skipping']);
|
WriteError(Filename+' : Not a valid PPU file, Skipping');
|
||||||
SetHasErrors;
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
{ Check PPU Version }
|
{ Check PPU Version }
|
||||||
@ -3380,8 +3372,13 @@ begin
|
|||||||
Writeln(['Analyzing ',filename,' (v',PPUVersion,')']);
|
Writeln(['Analyzing ',filename,' (v',PPUVersion,')']);
|
||||||
if PPUVersion<16 then
|
if PPUVersion<16 then
|
||||||
begin
|
begin
|
||||||
writeln([Filename,' : Old PPU Formats (<v16) are not supported, Skipping']);
|
WriteError(Filename+' : Old PPU Formats (<v16) are not supported, Skipping');
|
||||||
SetHasErrors;
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not SkipVersionCheck and (PPUVersion <> CurrentPPUVersion) then
|
||||||
|
begin
|
||||||
|
WriteError(Format('Unsupported PPU version %d. Expecting PPU version %d.', [PPUVersion, CurrentPPUVersion]));
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -3542,13 +3539,13 @@ begin
|
|||||||
writeln(' t - text format (default)');
|
writeln(' t - text format (default)');
|
||||||
writeln(' j - JSON format');
|
writeln(' j - JSON format');
|
||||||
writeln(' -M Exit with ExitCode=2 if more information is available');
|
writeln(' -M Exit with ExitCode=2 if more information is available');
|
||||||
|
writeln(' -S Skip PPU version check. May lead to reading errors');
|
||||||
writeln(' -V<verbose> Set verbosity to <verbose>');
|
writeln(' -V<verbose> Set verbosity to <verbose>');
|
||||||
writeln(' H - Show header info');
|
writeln(' H - Show header info');
|
||||||
writeln(' I - Show interface');
|
writeln(' I - Show interface');
|
||||||
writeln(' M - Show implementation');
|
writeln(' M - Show implementation');
|
||||||
writeln(' S - Show interface symbols');
|
writeln(' S - Show interface symbols');
|
||||||
writeln(' D - Show interface definitions');
|
writeln(' D - Show interface definitions');
|
||||||
// writeln(' B - Show browser info');
|
|
||||||
writeln(' A - Show all');
|
writeln(' A - Show all');
|
||||||
writeln(' -h, -? This helpscreen');
|
writeln(' -h, -? This helpscreen');
|
||||||
halt;
|
halt;
|
||||||
@ -3590,6 +3587,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
'M' : error_on_more:=true;
|
'M' : error_on_more:=true;
|
||||||
|
'S' : SkipVersionCheck:=True;
|
||||||
'V' : begin
|
'V' : begin
|
||||||
verbose:=0;
|
verbose:=0;
|
||||||
for i:=3 to length(para) do
|
for i:=3 to length(para) do
|
||||||
|
Loading…
Reference in New Issue
Block a user