Sign in Join
FPDoc Onlineexperiment

The Header

The header consists of a record (tppuheader) containing several pieces of information for recompilation. This is shown in table Anatomy of a unit file. The header is always stored in little-endian format.

PPU Header
offset size (bytes) description
00h 3 Magic : ’PPU’ in ASCII
03h 3 PPU File format version (e.g : ’021’ in ASCII)
06h 2 Compiler version used to compile this module (major,minor)
08h 2 Code module target processor
0Ah 2 Code module target operating system
0Ch 4 Flags for PPU file
10h 4 Size of PPU file (without header)
14h 4 CRC-32 of the entire PPU file
18h 4 CRC-32 of partial data of PPU file (public data mostly)
1Ch 8 Reserved

The header is already read by the ppufile.openfile command. You can access all fields using ppufile.header which holds the current header record.

PPU CPU Field values
value description
0 unknown
1 Intel 80x86 or compatible
2 Motorola 680x0 or compatible
3 Alpha AXP or compatible
4 PowerPC or compatible

Some of the possible flags in the header are described in table Anatomy of a unit file. Not all the flags are described, for more information, read the source code of ppu.pas.

PPU Header Flag values
Symbolic bit flag name Description
uf_init Module has an initialization (either Delphi or TP style) section.
uf_finalize Module has a finalization section.
uf_big_endian All the data stored in the chunks is in big-endian format.
uf_has_browser Unit contains symbol browser information.
uf_smart_linked The code module has been smartlinked.
uf_static_linked The code is statically linked.
uf_has_resources Unit has resource section.

An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.