Hi,
I don't understand why if it can be validated, it can't be autogenerated and validated by the same process. It seems like the validation logic is going to be the same as autogeneration logic so you might as well have it spit out the address and save having to write them out by hand in each module, or in the root configuration for bassaddresses.
Validating is really a two step process, in this case I was referring to the first part when rbuild reads the build files and starts processing object's properties. When it finds a property representing a base address the information it contains must at least *look like* a base address otherwise it may be a potential problem that has to be reported to the user. At this point the source code is not yet build so rbuild can't perform any additional validations. The second step is when the build has ended, now rbuild can use (((module base address) + file size + ¿headers size?) rounded to nearest 64K multiple) to see if any dlls are *in theory* overlapping other's address space. IMO having to run this second process at every build is really inefficient, a waste of resources and presents other disadvantages I mentioned in my previous mail.
Summarizing, to auto generate and/or fully validate base address we need to have the source code compiled, the thing is, if we want to auto generate them at every build all the dlls will have to be re-linked to the new address. If we generate them by hand we need a way to ensure they will be valid under different conditions (compiler used).
Regards, /Marc