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/

Reply via email to