
|
[openbeos]
||
[Date Prev]
[12-2001 Date Index]
[Date Next]
||
[Thread Prev]
[12-2001 Thread Index]
[Thread Next]
[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
>
|

|