[fpc-pascal] reading PPU files

Peter Vreman peter at freepascal.org
Wed Jun 25 12:53:14 CEST 2008


Peter Vreman wrote:
> Florian Klaempfl wrote:
>> Mattias Gaertner schrieb:
>>> On Tue, 24 Jun 2008 23:14:34 +0200
>>> Florian Klaempfl <florian at freepascal.org> wrote:
>>>
>>>> Mattias Gaertner schrieb:
>>>>> I want to read ppu files like the ppudump tool.
>>>>> ppudump uses the unit compiler/ppu.pp, but ppu.ppu is not
>>>>> installed by default. At least not on debian.
>>>>>
>>>>> Should I make a copy of this unit?
>>>> No ;)
>>>>
>>>>> Will this work for the various compilers (e.g. compiling the tool
>>>>> with 2.2.3 and reading 2.2.x and 2.3.x ppu files)?
>>>> Sometimes it works, sometimes not. ppudump is also often out of 
>>>> date. What exactly do you want to achive?
>>>
>>> Reading ppu files with the codetools. First getting information about
>>> unit dependencies and initialization/finalization sections. Later some
>>> type information.
>>
>> Well, if you really dare to do so, the best is probably copying from 
>> time to time the necessary fpc sources.
> 
> The ppu unit from the compiler and ppudump has become too much dependent 
> on other units of the compiler that i don't think it is recommended to 
> be used by other projects. The current dependencies are below:
> 
> Compiling ppudump.pp
> Compiling /home/peter/fpc/compiler/constexp.pas
> Compiling /home/peter/fpc/compiler/ppu.pas
> Compiling /home/peter/fpc/compiler/globtype.pas
> Compiling /home/peter/fpc/compiler/systems.pas
> Compiling /home/peter/fpc/compiler/cutils.pas
> Compiling /home/peter/fpc/compiler/fpccrc.pas
> Compiling /home/peter/fpc/compiler/cclasses.pas
> Compiling /home/peter/fpc/compiler/cstreams.pas
> Compiling /home/peter/fpc/compiler/i386/cpuinfo.pas
> Compiling /home/peter/fpc/compiler/version.pas
> 
> It might be better to write a clean PPU reader using streams. The PPU 
> format is stable and TLV based so multiple ppu-versions can be 
> supported. For the compiler and ppudump this is not a requirement, but 
> for lazarus it is needed especially if it wants to use type information.

An idea might be to create a new fcl-ppu package that contains such a 
new unit. The ppudump and ppumove tools can then be moved to this new 
package to. The package provides a clean and independent code base for 
ppu reading/writing. The ppu package can depedent on regular units and 
packages like classes and hash intsead of compiler local copies.

Maybe some parts of ppudump can be put in a separate unit to have a 
common class available that can be used for type name and location 
resolving.

Peter



More information about the fpc-pascal mailing list