Skip to content

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