Am 30.04.2020 um 22:55 schrieb Bart via fpc-devel:
On Thu, Apr 30, 2020 at 4:45 PM Michael Van Canneyt
<mich...@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.

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to