[ros-dev] DLL Base Addresses (For Marc)

Marc Piulachs marc.piulachs at codexchange.net
Mon Dec 17 10:13:54 CET 2007


> 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).


More information about the Ros-dev mailing list