Reported Binary Compatibility issues

The following table lists the issues and severity evaluations in the BC report.

Also see Issues for exported non-virtual or inline functions below.

Issue

Severity

Comment

Removing an accessible class.

BBC Break

-

Class has an incomplete type.

Informative

This may be the result of, for example, changing the class declaration to a forward declaration. This issue is raised because incomplete classes cannot be analyzed properly.

Access to the class has been changed to more restrictive.

Informative

-

Accessible class is using a virtual inheritance.

Informative

-

Size of an accessible class is changed.

BBC Break

-

Size of the base class of an accessible class has changed.

BBC Break

-

Alignment of an accessible class is changed.

BBC Break

Alignment is calculated by the compiler, and it represents the amount of data that is padded to the data structure in order to ensure its proper alignment in the computer memory.

Virtuality of the inheritance is changed.

Possible BBC Break

-

Base class of an accessible class is removed.

Possible BBC Break

-

Base class is added to the accessible class.

Possible BBC Break

-

Order of the base classes of an accessible class is changed.

Possible BBC Break

-

Virtual table of the base class of an accessible class is changed.

BBC Break

-

Add a virtual function to an accessible class.

BBC Break

-

Remove a virtual function from an accessible class.

BBC Break

-

Change the order of the virtual functions in an accessible class.

BBC Break

-

Type of an accessible constant is changed.

Possible BBC Break

-

Initial value of an accessible constant is changed.

Possible BBC Break

-

Accessibility of a constant is changed to more restrictive.

Informative

-

Remove an accessible typedef.

Possible BBC Break

-

Change the type of an accessible typedef.

Possible BBC Break

-

Access of a typedef is changed to more restrictive.

Informative

-

Remove an accessible enumeration.

Possible BBC Break

-

Remove an enumeration value.

Possible BBC Break

-

Add a value to the middle of an accessible enumeration.

Possible BBC Break

-

Changing the alignment of an accessible enumeration.

BBC Break / Possible BBC Break

If the enumeration is accessible publicly or via derivation, the change is reported with severity BBC Break. If the enumeration is accessible via a public or protected inline function, it is reported with severity Possible BBC Break. Alignment is calculated by the compiler.

Size of an accessible enumeration changed.

BBC Break / Possible BBC Break

If the enumeration is accessible publicly or via derivation, the change is reported with severity BBC Break. If the enumeration is accessible via a public or protected inline function, it is reported with severity Possible BBC Break.

Change the access of an enumeration to more restrictive.

Informative

-

Order or initial values of an accessible enumeration changed.

Possible BBC Break

-

Access of a member variable is changed to more restrictive.

Informative

-

Removing a member variable.

BBC Break / Possible BBC Break / Informative

Removing a publicly available member variable is reported with severity BBC Break. Removing the private or protected member variable exposed by public or protected inline function is reported with severity Possible BBC Break. Removing a private variable from a class not containing public or protected inline functions is reported as Informative.

Adding a member variable to a class.

Informative

-

Changing the offset of a member variable.

BBC Break / Possible BBC Break

If publicly available, severity BBC Break, or if exposed by public or protected inline function, severity Possible BBC Break.

Changing the type of a member variable.

BBC Break / Possible BBC Break

If publicly available, severity BBC Break, or if exposed by public or protected inline function, severity Possible BBC Break.

Changing the size of a member variable.

BBC Break / Possible BBC Break

If publicly available, severity BBC Break, or if exposed by public or protected inline function, severity Possible BBC Break.

* Get in touch with your architect/lead on how to proceed - if you encounter any BC break.

Issues for exported non-virtual or inline functions

There is more variation in the rules when analysing exported non-virtual or inline functions, as listed below.

Issue

Type

Access and severity

Remove a function or change its signature.

Note: Function signature can be changed in the following ways:

  • Return value can be changed from const to non-const.
  • Parameter can be changed from non-const to const.
  • Function can be changed from non-const to const.

Exported

  • Public: BBC Break
  • Protected: If the class is derivable, this is reported as BBC Break. If the class is not derivable but has public inline functions, this is reported as Possible BBC Break. Otherwise not reported.
  • Private: If the class contains any public inline functions or it contains protected inline functions and is derivable, this is reported as Possible BBC Break. Otherwise not reported.

-

Inline

  • Public: Informative
  • Protected: Informative
  • Private: If the class contains any public inline functions or it contains protected inline functions and is derivable, this is reported as Informative. Otherwise not reported.

Add function.

Exported

  • Any: Not reported.

-

Inline

  • Any: Not reported.

Change the order.

Exported

  • Any: Not reported.

Inline

  • Any: Not reported.