Subject: Vtable and virtual dispatch changes¶
A change to a class's virtual-method set, order, or inheritance reshapes its vtable, VTT, or dispatch thunks -- silent misdispatch or a crash, not a link error.
13 case(s). ← back to all subjects
Cases¶
| Case | Title | Verdict | Category |
|---|---|---|---|
| case09_cpp_vtable | C++ Vtable Change | 🔴 BREAKING | Breaking |
| case23_pure_virtual_added | Virtual Method Became Pure Virtual | 🔴 BREAKING | Breaking |
| case38_virtual_methods | Virtual Method Changes | 🔴 BREAKING | Breaking |
| case68_virtual_method_added | Virtual Method Added to Non-Virtual Class | 🔴 BREAKING | Breaking |
| case72_covariant_return_changed | Covariant Return Type Changed | 🔴 BREAKING | Breaking |
| case142_vtable_slot_count_binary_only | Vtable Slot Count Changed (detected from a stripped binary) | 🔴 BREAKING | Breaking |
| case167_base_became_virtual | Base Class Became Virtual (: public Device → : public virtual Device) |
🔴 BREAKING | Breaking |
| case168_virtual_method_devirtualized | Virtual Method Devirtualized (flush() leaves the vtable) |
🔴 BREAKING | Breaking |
| case172_vtable_thunk_offset_changed | Vtable Thunk Offset Changed (detected from a stripped binary) | 🔴 BREAKING | Breaking |
| case173_vtt_slot_count_changed | VTT Slot Count Changed (detected from a stripped binary) | 🔴 BREAKING | Breaking |
| case174_secondary_vtable_group_changed | Secondary Vtable Group Changed | 🔴 BREAKING | Breaking |
| case185_inherited_override_reuses_slot | Inherited override reuses the base's vtable slot | 🟢 COMPATIBLE | Addition (Compatible) |
| case203_class_gained_vtable_pointer | Class Gained a Vtable Pointer | 🔴 BREAKING | Breaking |