Adriaan van Os wrote:
Peter Vreman wrote:
Thanks for the hint. I managed to rebuild the compiler with -dINTFPPU
and this does produce .ppu.intf files when compiling with it. The diff
between the ppudump of the the .ppu files and the .ppu.intf files does
show checksum and other differences. Not sure which ones to look at.
I think, I solved the checksum mystery. It is related to what Jonas wrote on the macpascal mailing
list:
The two main reasons I know of that currently can change the interface crc are
a) calls to inline functions of which only the interface was parsed when the
function was called
b) calls to functions which are declared as regular functions in the interface
of a unit, but as external functions in the implementation
The tricky part is that fpc in macpas mode implicitely assumes that (b) happens if a procedure or
function is declared in the interface part but not implemented in the implementation part ! Neither
is - as far as I know - a warning issued by fpc in this situation, as CodeWarrior does !
For example, for a test program checksumwoes.pas:
{$mode macpas}
unit checksumwoes;
interface
procedure Forgotten;
implementation
end.
the ppudump of checksumwoes.ppu.intf reads:
PPU-Analyser Version 2.3.1
Copyright (c) 1998-2007 by the Free Pascal Development Team
Analyzing checksumwoes.ppu.intf (v91)
Header
-------
Compiler version : 2.3.1
Target processor : i386
Target operating system : Darwin-i386
Unit flags : little_endian
FileSize (w/o header) : 519
Checksum : EE8A133F
Interface Checksum : 2BCCD624
Definitions stored : 0
Symbols stored : 0
whereas the ppudump of checksumwoes.ppu reads:
PPU-Analyser Version 2.3.1
Copyright (c) 1998-2007 by the Free Pascal Development Team
Analyzing checksumwoes.ppu (v91)
Header
-------
Compiler version : 2.3.1
Target processor : i386
Target operating system : Darwin-i386
Unit flags : static_linked, little_endian, local_threadvars,
local_symtable
FileSize (w/o header) : 1002
Checksum : 33531017
Interface Checksum : 39ACE269
Definitions stored : 2
Symbols stored : 12
I haven't checked if this solves (or works around) the compiler crash. A "not implemented" warning
in macpas mode would be helpful !
Regards,
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel