This section lists all messages that can occur when the compiler is loading a unit from disk into memory. Many of these messages are informational messages.
When you use the -vt option, the compiler tells you where it tries to find unit files.
When the -vt switch is used, the compiler tells you what units it loads.
When you use the -vu flag, the time the unit was compiled is shown.
A unit file contains as the first three bytes the ASCII codes of the characters PPU.
This unit file was compiled with a different version of the compiler, and cannot be read.
This unit file was compiled for a different processor type, and cannot be read.
This unit file was compiled for a different target, and cannot be read.
When you use the -vu flag, the unit source file name is shown.
When you specify the -vu switch, the compiler will tell you where it writes the unit
file.
This means that the unit file was corrupted, and contains invalid information.
Recompilation will be necessary.
Unexpected end of file. This may mean that the PPU file is corrupted.
The unit the compiler is trying to read is corrupted, or generated with a newer version
of the compiler.
There is an inconsistency in the debugging information of the unit.
The name of the unit does not match the file name. There might to two reasons: either
there is a spelling mistake in the unit name or there is a unit with a 8.3 name where the
8 characters are equal to first 8 characters of the name of a unit with a longer name.
However, this unit is not found. Example: Program contains uses mytestunit;, the
unit file or source of mytestunit are not available but there is a source with the name
mytestun. Then compiler tries to compile and use that one, however the expected unit
name does not match.
Free Pascal has a limit of 1024 units in a program. You can change this behavior by
changing the maxunits constant in the fmodule.pas file of the compiler, and recompiling
the compiler.
Two units are using each other in the interface part. This is only allowed in
the implementation part. At least one unit must contain the other one in the
implementation section.
A unit was found that needs to be recompiled, but no sources are available.
You tried to use a unit of which the PPU file isn’t found by the compiler. Check your
configuration file for the unit paths.
dos truncation of 8 letters for unit PPU files may lead to problems when unit name is
longer than 8 letters.
When recompiling the system unit (it needs special treatment), the -Us switch must
be specified.
When the compiler encounters a fatal error or too many errors in a module then it
stops with this message.
When you use the -vu flag, which unit is loaded from which unit is shown.
The unit is recompiled because the checksum of a unit it depends on has changed.
When you use the -vu flag, these messages tell you why the current unit is recompiled.
When you use the -vu flag, the compiler warns if the static library of the unit is older
than the unit file itself.
When you use the -vu flag, the compiler warns if the shared library of the unit is older
than the unit file itself.
When you use the -vu flag, the compiler warns if the assembler or object file of the
unit is older than the unit file itself.
When you use the -vu flag, the compiler warns if the assembler file of the unit is older
than the object file of the unit.
When you use the -vu flag, the compiler warns that it starts parsing the interface part
of the unit.
When you use the -vu flag, the compiler warns that it starts parsing the implementation
part of the unit.
When you use the -vu flag, the compiler warns that it starts recompiling a unit for the
second time. This can happen with interdependent units.
When you use the -vu flag, the compiler shows the filename and date and time of the
file on which a recompile depends.
A unit was found to have modified include files, but some source files were not found,
so recompilation is impossible.
Trying to compile code while using units which were not compiled with the same
floating point format mode. Either all code should be compiled with FPU emulation
on, or with FPU emulation off.
When you use the -vu flag, the compiler warns that it is starting to load the units
defined in the interface part of the unit.
When you use the -vu flag, the compiler warns that it is starting to load the units
defined in the implementation part of the unit.
When you use the -vu flag, the compiler warns that the CRC calculated for the interface
has been changed after the implementation has been parsed.
When you use the -vu flag, the compiler warns that the CRC calculated has been
changed after the implementation has been parsed.
When you use the -vu flag, the compiler warns that it has finished compiling the unit.
When you use the -vu flag, the compiler warns that it has added a dependency between
the two units.
When you use the -vu flag, the compiler warns that it will not reload the unit because
it is the unit that wants to load this unit.
When you use the -vu flag, the compiler warns that it will not reload the unit because
it is already in a second recompile.
When you use the -vu flag, the compiler warns that it has to reload the unit.
When you use the -vu flag, the compiler warns that it is reloading the unit because it
was required.
When you use the -vu flag, the compiler shows the previous state of the unit.
When you use the -vu flag, the compiler warns that it is starting to recompile a unit
for the second time. This can happen with interdependent units.
When you use the -vu flag, the compiler warns that it starts loading the unit.
When you use the -vu flag, the compiler warns that it finished loading the unit.
When you use the -vu flag, the compiler warns that it has found a new unit and is
registering it in the internal lists.
When you use the -vu flag, the compiler warns that it has to recalculate the internal
data of the unit.
When you use the -vu flag, the compiler warns that it is skipping the recalculation of
the internal data of the unit because there is no data to recalculate.
When you use the -vu flag, the compiler warns that it is unloading the resource handling
unit, since no resources are used.
When a unit has been compiled using a particular whole program optimization (wpo)
feedback file (-FW<x> -OW<x>), this compiled version of the unit is specialised for that
particular compilation scenario and cannot be used in any other context. It has to be
recompiled before you can use it in another program or with another wpo feedback
input file.
When you use the -vu flag, the compiler warns that the indirect CRC calculated for
the unit (this is the CRC of all classes/objects/interfaces/… in the interfaces of units
directly or indirectly used by this unit in the interface) has been changed after the
implementation has been parsed.
This unit file was compiled for a different i8086 memory model and cannot be read.
The compiler expects that the runtime library contains certain types. If you see this
error and you didn’t change the runtime library code, it’s very likely that the runtime
library you’re using doesn’t match the compiler in use. If you changed the runtime
library this error means that you removed a type which the compiler needs for internal
use.
The compiler expects that the runtime library contains certain types. If you see this
error and you didn’t change the runtime library code, it’s very likely that the runtime
library you’re using doesn’t match the compiler in use. If you changed the runtime
library this error means that you changed a type which the compiler needs for internal
use and which needs to have a certain structure.
Units compiled by a compiler built with the LLVM code generator cannot be used with
a regular compiler, and vice versa.
This unit file was compiled for a different WebAssembly exceptions mode.
Units compiled by a compiler built with -dSYMANSISTR cannot be used with a regular
compiler built without, and vice versa.
The user is compiling a program with multithreading turned on, but the unit was
compiled with multithreading off, or vice versa.
FPC supports only certain ESP-IDF versions. It is very unlikely that the resulting
program works if this warning is thrown.