C cases¶
Cases whose committed fixtures include C sources.
88 case(s). ← back to all examples
| Case | Title | Verdict | Category |
|---|---|---|---|
| case01_symbol_removal | Symbol Removal | 🔴 BREAKING | Breaking |
| case02_param_type_change | Parameter Type Change | 🔴 BREAKING | Breaking |
| case03_compat_addition | Compatible Addition (New Export) | 🟢 COMPATIBLE | Addition (Compatible) |
| case04_no_change | No Change | ✅ NO_CHANGE | No Change |
| case05_soname | Missing SONAME | 🟢 COMPATIBLE | Quality (Compatible) |
| case06_visibility | Symbol Visibility Leak | 🔴 BREAKING | Breaking |
| case07_struct_layout | Struct Layout Change | 🔴 BREAKING | Breaking |
| case08_enum_value_change | Enum Value Change | 🔴 BREAKING | Breaking |
| case10_return_type | Return Type Change | 🔴 BREAKING | Breaking |
| case11_global_var_type | Global Variable Type Change | 🔴 BREAKING | Breaking |
| case12_function_removed | Function Removed from Shared Library | 🔴 BREAKING | Breaking |
| case13_symbol_versioning | Symbol Versioning Script | 🟢 COMPATIBLE | Quality (Compatible) |
| case18_dependency_leak | Dependency ABI Leak | 🔴 BREAKING | Breaking |
| case19_enum_member_removed | Enum Member Removed | 🔴 BREAKING | Breaking |
| case20_enum_member_value_changed | Enum Member Value Changed | 🔴 BREAKING | Breaking |
| case24_union_field_removed | Union Field Removed | 🔴 BREAKING | Breaking |
| case25_enum_member_added | Enum Member Added | 🟢 COMPATIBLE | Addition (Compatible) |
| case26_union_field_added | Union Field Added (Size Grows) | 🔴 BREAKING | Breaking |
| case26b_union_field_added_compatible | Union Field Added (No Size Change) | 🟢 COMPATIBLE | Addition (Compatible) |
| case27_symbol_binding_weakened | Symbol Binding Weakened (GLOBAL → WEAK) | 🟢 COMPATIBLE | Quality (Compatible) |
| case28_typedef_opaque | Typedef and Opaque Type Changes | 🔴 BREAKING | Breaking |
| case29_ifunc_transition | GNU IFUNC Transition | 🟢 COMPATIBLE | Quality (Compatible) |
| case30_field_qualifiers | Field Qualifier Changes (const, volatile) | 🔴 BREAKING | Breaking |
| case31_enum_rename | Enum Member Rename | 🟠 API_BREAK | API Break |
| case33_pointer_level | Pointer Level Change | 🔴 BREAKING | Breaking |
| case35_field_rename | Field Rename | 🟠 API_BREAK | API Break |
| case36_anon_struct | Anonymous Struct/Union Change | 🔴 BREAKING | Breaking |
| case39_var_const | Variable Const Change | 🔴 BREAKING | Breaking |
| case40_field_layout | Field Layout Changes | 🔴 BREAKING | Breaking |
| case41_type_changes | Type-Level Changes | 🔴 BREAKING | Breaking |
| case42_type_alignment_changed | Type Alignment Changed (standalone alignas) | 🔴 BREAKING | Breaking |
| case44_cyclic_type_member_added | Cyclic Type Member Added | 🔴 BREAKING | Breaking |
| case45_multi_dim_array_change | Multi-Dimensional Array Element Type Change | 🔴 BREAKING | Breaking |
| case46_pointer_chain_type_change | Pointer Chain Type Change | 🔴 BREAKING | Breaking |
| case48_leaf_struct_through_pointer | Leaf Struct Change Propagated Through Pointer | 🔴 BREAKING | Breaking |
| case49_executable_stack | Executable Stack (GNU_STACK RWX) | 🟢 COMPATIBLE | Quality (Compatible) |
| case50_soname_inconsistent | SONAME Inconsistent (Wrong Major Version) | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case51_protected_visibility | Protected Visibility (DEFAULT to PROTECTED) | 🟢 COMPATIBLE | Quality (Compatible) |
| case52_rpath_leak | RPATH Leak (Hardcoded Build Directory) | 🟢 COMPATIBLE | Quality (Compatible) |
| case53_namespace_pollution | Namespace Pollution (Generic Symbol Names) | 🔴 BREAKING | Breaking |
| case54_used_reserved_field | Used Reserved Field | 🟢 COMPATIBLE | Quality (Compatible) |
| case55_type_kind_changed | Type Kind Changed (struct → union) | 🔴 BREAKING | Breaking |
| case56_struct_packing_changed | Struct Packing Changed (pragma pack) | 🔴 BREAKING | Breaking |
| case57_enum_underlying_size_changed | Enum Underlying Size Changed | 🔴 BREAKING | Breaking |
| case58_var_removed | Global Variable Removed | 🔴 BREAKING | Breaking |
| case59_func_became_inline | Function Became Inline (outlined → inline) | 🔴 BREAKING | Breaking |
| case61_var_added | Global Variable Added | 🟢 COMPATIBLE | Addition (Compatible) |
| case62_type_field_added_compatible | Type Field Added (Compatible — Opaque Struct) | 🟢 COMPATIBLE | Addition (Compatible) |
| case63_bitfield_changed | Bitfield Width Changed | 🔴 BREAKING | Breaking |
| case64_calling_convention_changed | Calling Convention Changed | 🔴 BREAKING | Breaking |
| case65_symbol_version_removed | Symbol Version Removed | 🔴 BREAKING | Breaking |
| case66_language_linkage_changed | Language Linkage Changed (extern "C" removed) | 🔴 BREAKING | Breaking |
| case67_tls_var_size_changed | TLS Variable Size Changed | 🔴 BREAKING | Breaking |
| case70_flexible_array_member_changed | Flexible Array Member Element Type Changed | 🔴 BREAKING | Breaking |
| case73_typedef_underlying_changed | Typedef Underlying Type Changed | 🔴 BREAKING | Breaking |
| case84_bundle_soname_skew | Multi-Library Bundle SONAME Skew | 🔴 BREAKING | Bundle (Multi-library) |
| case103_toolchain_flag_drift | Toolchain Flag Drift | 🟢 COMPATIBLE | Quality (Compatible) |
| case112_lp64_ilp64 | LP64 → ILP64 Integer-Model Switch (oneMKL MKL_INT 32→64) | 🔴 BREAKING | Breaking |
| case115_bit_int_width_changed | _BitInt(N) Width Change (C23 64 → 128) | 🔴 BREAKING | Breaking |
| case116_atomic_qualifier_changed | _Atomic Qualifier Added (C11) | 🔴 BREAKING | Breaking |
| case118_internal_struct_field_added_scoped | Internal Struct Gains a Field (Non-Public, Scoped) | ✅ NO_CHANGE | No Change |
| case119_internal_struct_field_removed_scoped | Internal Struct Loses a Field (Non-Public, Scoped) | ✅ NO_CHANGE | No Change |
| case120_internal_struct_reordered_scoped | Internal Struct Fields Reordered (Non-Public, Scoped) | ✅ NO_CHANGE | No Change |
| case121_kernel_btf_struct_field_added | Kernel BTF Struct Field Growth | 🔴 BREAKING | Breaking |
| case127_data_object_size_changed | Exported Data Object Size Changed | 🔴 BREAKING | Breaking |
| case128_symbol_binding_strengthened | Symbol Binding Strengthened (Weak → Global) | 🟢 COMPATIBLE | Quality (Compatible) |
| case134_relro_weakened | RELRO Weakened | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case135_stack_canary_removed | Stack Canary Removed | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case136_executable_stack_removed | Executable Stack Removed (the fix direction) | 🟢 COMPATIBLE | Quality (Compatible) |
| case137_runpath_changed | DT_RUNPATH Changed | 🟢 COMPATIBLE | Quality (Compatible) |
| case138_needed_added | DT_NEEDED Added | 🟢 COMPATIBLE | Quality (Compatible) |
| case139_symbol_version_node_removed | Symbol Version Node Removed | 🔴 BREAKING | Breaking |
| case141_versioned_symbol_scheme | Versioned-Symbol Scheme (library-wide rename) | 🔴 BREAKING | Breaking |
| case171_static_tls_introduced | Static TLS Introduced | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case179_cet_protection_weakened | CET Protection Weakened | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case182_accidental_export_removed_still_breaking | Accidental Export Removed — Still Breaking Under Public-Header Scoping | 🔴 BREAKING | Breaking |
| case183_internal_version_node_churn | Internal ELF symbol-version node churn | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case184_internal_enum_churn_scoped | Internal Enum Churn, Scoped Out by Private-Header Origin | ✅ NO_CHANGE | No Change |
| case186_c_api_pointee_const_abi_neutral | C API Pointee const-Qualification Is ABI-Neutral | ✅ NO_CHANGE | No Change |
| case198_public_struct_field_reorder | Public Struct Field Reorder | 🔴 BREAKING | Breaking |
| case199_public_function_parameter_added | Parameter Added to an Exported Function | 🔴 BREAKING | Breaking |
| case200_new_entry_point_instead_of_parameter_added | New Entry Point Instead of a Changed Arity | 🟢 COMPATIBLE | Addition (Compatible) |
| case201_public_function_parameters_reordered | Public Function Parameters Reordered | 🔴 BREAKING | Breaking |
| case202_public_header_declaration_order_changed | Public Header Declaration Order Changed | ✅ NO_CHANGE | No Change |
| case205_public_function_marked_deprecated | Public Function Marked Deprecated | 🟢 COMPATIBLE | Quality (Compatible) |
| case206_deprecation_documented_without_attribute | Deprecation Documented Without the Attribute | ✅ NO_CHANGE | No Change |
| case207_pointer_parameter_gained_restrict | Pointer Parameter Gained restrict |
🟢 COMPATIBLE | Quality (Compatible) |
| case208_restrict_added_to_definition_only | restrict Added to the Definition Only |
✅ NO_CHANGE | No Change |