[fpc-devel] Fatal: Invalid PPU-File entry: 242

Sven Barth pascaldragon at googlemail.com
Thu Apr 30 23:43:46 CEST 2020

Am 30.04.2020 um 22:55 schrieb Bart via fpc-devel:
> On Thu, Apr 30, 2020 at 4:45 PM Michael Van Canneyt
> <michael at freepascal.org> wrote:
> Sorry, my reply to Michael went to his private mail, not to the lis,
> so I copy it here:
>> It does try to load the one in fpc.cfg, but it is invalid:
> No it does not.
> Again:
> C:\Users\Bart\LazarusProjecten\ConsoleProjecten>fpc -vu
> -Fuc:\pp\units\i386-win32\rtl test.pas
> Free Pascal Compiler version 3.2.0rc1 [2020/02/29] for i386
> Copyright (c) 1993-2020 by Florian Klaempfl and others
> Target OS: Win32 for i386
> Compiling test.pas
> (PROGRAM)  Registering new unit SYSTEM
> (PROGRAM)  Load from PROGRAM (implementation) unit SYSTEM
> (SYSTEM)   Loading unit SYSTEM
> (SYSTEM)   PPU Name: C:\pp\units\i386-win32\rtl\system.ppu
> ^^ It finds the one specified in -Fu first
> (SYSTEM)   PPU Time: 2020/03/31 22:15:34
> (SYSTEM)   PPU Flags: 4224
> (SYSTEM)   PPU Crc: 5E999730
> (SYSTEM)   PPU Crc: E5978BE9 (intfc)
> (SYSTEM)   PPU Crc: E4BD4DAF (indc)
> (SYSTEM)   Number of definitions: 3470
> (SYSTEM)   Number of symbols: 9654
> Fatal: Invalid PPU-File entry: 242
> Fatal: Compilation aborted
> Error: C:\devel\fpc\3.2.0\bin\i386-Win32\ppc386.exe returned an error exitcode
> The compiler (3.2.0RC1) first tries the specified path in -Fu:
> (SYSTEM)   Loading unit SYSTEM
> (SYSTEM)   PPU Name: C:\pp\units\i386-win32\rtl\system.ppu
> It then immediately aborts.
> It never looks for system.ppu in the folder specified in the fpc.cfg
> of this compiler.
>> It does try to load the one in fpc.cfg, but it is invalid:
>> (SYSTEM)   PPU Name: C:\devel\fpc\3.2.0\units\i386-win32\rtl\system.ppu
>> (SYSTEM)   PPU Invalid Header (no PPU at the begin)
> Please look at the context.
> This is the trunk compiler.
> I point it (erroneously) tot the system.ppu of fpc3.2.0RC1
> It finds it, determines it's invalid, and then proceeds to find the
> correct one (specified in fpc.cfg of the trunk compiler) and
> succesfully builds the test program.
> (I did not iclude the snippet where it finds the correct one, since I
> thought this would be obvious, as it succeeds in compiling)
> Michale then replied:
>> Indeed, sorry. The many outputs seem to have confused me.
> To which I later replied:
> The question remains: why a fatal error if fpc 3.2.0 encounters the
> system.ppu of fpc trunk, where fpc 3.0.4 does not.
> Is that a bug in fpc 3.2.0RC1?
> (So, we're all up to speed now)

Between 3.2.0 and 3.3.1 an additional PPU entry was introduced that 
carries an additional PPU version (the original version field is 1 Byte 
and we're already at 207). If a 3.2.0 compiler (or older) finds a 3.3.1 
unit it will complain about an unknown header entry (which is a fatal 
error). A 3.3.1 compiler that finds a 3.2.0 unit or older will complain 
about the missing header.

This is not fixable due to the way PPU files are parsed.


More information about the fpc-devel mailing list