At 6:52 PM +0200 4/20/01, Alexandre Duret-Lutz wrote:
>Ok, thanks for the statement. Now, as I said, it does really
>matter to me where I put the library name, but I'm curious
>(sorry, I'll hate me): why is this *required*? One reason I can
>think of is that it allows to compute the size of the dispatch
>table (and then copy or bound checking?).
Exactly.
System Updates sometimes need to patch libraries. By putting the dispatch table at the
beginning, it simplifies the code involved in duplicating the dispatch table into RAM
and setting up the new jump vectors. If a variable-length library name is found
between the offset table and the jump vectors, it complicates the code a bit and (for
historical reasons) breaks compatibility with some in-house test tools and licensee
patch mechanisms. And in any case, the ROM code performs unsigned calculations, which
cannot be changed without breaking library compatibility with older devices, so, it's
a requirement the name exist at the end of the table. In retrospect, it may not have
been the best design choice... but then there are lots of even-more-distressing issues
with the current shared library architecture, so there's really no point in changing
this one right now.
Regards,
Jim Schram
Palm Incorporated
Partner Engineering
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/tech/support/forums/