[fpc-devel] units not getting rebuild after changes in other used ("uses") units

Martin Friebe fpc at mfriebe.de
Wed Jan 21 12:43:00 CET 2009


Hi,

I encountered a strange problem. I am not yet sure what causes it, but I 
have a suspicion. Before I go all the way, of trying to prove the cause, 
and report it as a bug, let nme ask here if it may already be a knonw 
issue, or maybe is by design.

Normally if I change a unit (e.g. changes to the inteface of "unit 
Nested"), and then compile my project, fpc will recompile all other 
units that have a "uses Nested;" (new ppu files, new .o files)

In my case for some reason this does not happen, and all I get is an 
error from the linker at the very end: "Error: Undefined symbol: 
VMT_SYNGUTTER_TSYNEDITMARK"
Btw, anyone, is there a way to make the linker tell me which file is 
requiring this symbol?

Anyway, this means some unit was compiled using the other unit declaring 
the symbol. Then when the symbol was removed, the unit was not recompiled.
The package containing it was rebuild, so it must have been fpc 
believing that the file and all dependencies where unchanged; even so 
dependencies had changed)


I have a suspicion why FPC may not see the change in the underlying unit.

- TSYNEDITMARK is defined in "unit SynEditMarks"

- "unit SynEdit" has a forward declaration (in it's interface)
  that is "unit SynEdit" uses SynEditMarks, and then has a "type 
TSYNEDITMARK = SynEditMarks.TSYNEDITMARK ;"

- Whatever unit causes the error, hust uses "Unit SynEdit", but not 
"unit SynEditMarks"

Should such a case be detected?


Best Regards/Thanks
Martin

 



More information about the fpc-devel mailing list