Go to the FreeLists Home Page Home Signup Help Login
 



[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: "Michael Phipps" <mphipps1@xxxxxxxxxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Wed, 05 Dec 2001 18:39:54 -0500
I actually was going to write an article last week on FBC.
I did a web search and found Peter's article. I decided that he explained it 
way better than I would have. :-)

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








[ Home | Signup | Help | Login | Archives | Lists ]

All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
Everything else ©2007 Avenir Technologies, LLC.