[openbeos] Re: binary compatibility und FBC problem

  • From: Erik Jakowatz <erik@xxxxxxxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Tue, 04 Dec 2001 09:14:29 -0800

Marcus,

Thanks for the reminder and for digging up that newsletter link! 
Perhaps someone <hint>Daniel</hint> can look into making it part of the
OpenBeOS resources page.

e

Marcus Overhagen wrote:
> 
> Hello,
> 
> I would like to  straighten out some facts about the FBC problem and binary 
> compatibility.
> 
> First: Yes, it is possible to change class headers, for example by adding new 
> functions,
> or by removing functions from the private: section without breaking 
> functionality,
> as long as these functions are not virtual.
> You can also add your own variables, but you have to make sure you don't break
> the FBC layout.
> 
> This means, you are not allowed to change:
> 
>  * The size of objects (i.e. structs or classes)
>  * The offsets to "visible" (public or protected) data
>  * The existence and size of the vtable
>  * The offsets to the virtual functions in the vtable
> 
> In other words:
> 
> If there are any variables that are public or protected, they may be used
> by applications and can't be changed. You are also not allowed to change
> their position, for example by reordering. But you can add or romve variables
> in the private: section, if you make sure that the size of the class stays
> the same. Adding a
> void * mydata;
> forces you to remove 4 bytes of data elsewhere, for eample by reducing
> the uint32 reseved[x]; and replacing x with x -1.
> 
> Order and positions of virtual functions can not change, and you also
> can't change the amount of virtual functions.
> 
> There is also a (very old) newsletter about this, it explains this much more
> and in very detail, I think it's a must read for everyone involved here.
> 
> please find it here:
> http://www-classic.be.com/aboutbe/benewsletter/Issue79.html#Insight
> 
> regards
> Marcus
>

Other related posts: