L0 — binary only¶
Detectable from the shipped binary's symbol table alone.
67 case(s). ← back to all examples
| Case | Title | Verdict | Category |
|---|---|---|---|
| case01_symbol_removal | Symbol Removal | 🔴 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 |
| case12_function_removed | Function Removed from Shared Library | 🔴 BREAKING | Breaking |
| case13_symbol_versioning | Symbol Versioning Script | 🟢 COMPATIBLE | Quality (Compatible) |
| case15_noexcept_change | noexcept Removed |
🟡 COMPATIBLE_WITH_RISK | Risk |
| case16_inline_to_non_inline | Inline → Non-inline (ODR / Symbol Appearance) | 🟢 COMPATIBLE | Addition (Compatible) |
| case27_symbol_binding_weakened | Symbol Binding Weakened (GLOBAL → WEAK) | 🟢 COMPATIBLE | Quality (Compatible) |
| case29_ifunc_transition | GNU IFUNC Transition | 🟢 COMPATIBLE | Quality (Compatible) |
| case47_inline_to_outlined | Inline Method Moved Out-of-Line | 🟢 COMPATIBLE | Addition (Compatible) |
| 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 |
| 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) |
| case65_symbol_version_removed | Symbol Version Removed | 🔴 BREAKING | Breaking |
| case66_language_linkage_changed | Language Linkage Changed (extern "C" removed) | 🔴 BREAKING | Breaking |
| case71_inline_namespace_moved | Inline Namespace Moved | 🔴 BREAKING | Breaking |
| case82_sycl_overload_set_removed | SYCL Overload Set Removed (DPC++ Build Withdrawn) | 🔴 BREAKING | Breaking |
| case83_cpu_dispatch_isa_dropped | CPU-dispatch ISA family dropped | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case84_bundle_soname_skew | Multi-Library Bundle SONAME Skew | 🔴 BREAKING | Bundle (Multi-library) |
| case86_tag_struct_renamed | Tag Struct Renamed (empty class re-mangling) | 🔴 BREAKING | Breaking |
| case90_bundle_intra_dep_removed | Bundle — Intra-Bundle Removed Symbol | 🔴 BREAKING | Bundle (Multi-library) |
| case91_bundle_intra_signature_drift | Bundle — Intra-Bundle extern-C Signature Drift | 🔴 BREAKING | Bundle (Multi-library) |
| case92_bundle_provider_changed | Bundle — Symbol Provider Migration | 🟡 COMPATIBLE_WITH_RISK | Bundle (Multi-library) |
| case93_bundle_manifest_drift | Bundle — Instantiation Manifest Drift | 🔴 BREAKING | Bundle (Multi-library) |
| case97_api_depends_on_consumer_env | API Depends on Consumer Environment | 🔴 BREAKING | Breaking |
| case99_experimental_graduated | Experimental to Stable Graduation (Compatible) | 🟢 COMPATIBLE | Addition (Compatible) |
| case100_experimental_removed_without_replacement | Experimental Declaration Removed Without Replacement | 🔴 BREAKING | Breaking |
| case101_inline_namespace_version_bumped | Inline Namespace Version Bumped | 🔴 BREAKING | Breaking |
| case104_glibcxx_dual_abi_flip | libstdc++ Dual-ABI Flip | 🔴 BREAKING | Breaking |
| case110_concurrent_unordered_map_api_drift | concurrent_unordered_map API Drift | 🔴 BREAKING | Breaking |
| case113_abi_tag_changed | ABI-tag set change ([abi:cxx11] lost on a single symbol) | 🔴 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 |
| case142_vtable_slot_count_binary_only | Vtable Slot Count Changed (detected from a stripped binary) | 🔴 BREAKING | Breaking |
| case145_audit_unversioned_export | Unversioned Export Under a Versioning Scheme (Audit, Pure L0) | 🟢 COMPATIBLE | Quality (Compatible) |
| case169_overload_added | Overload Added to a Previously Unique Function | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case170_env_runtime_floor_raised | Runtime Floor Raised (glibc Relink Drift) | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case171_static_tls_introduced | Static TLS Introduced | 🟡 COMPATIBLE_WITH_RISK | Risk |
| 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 |
| case175_kabi_crc_changed | kABI CRC Changed | 🔴 BREAKING | Breaking |
| case176_kabi_symbol_namespace_changed | kABI Export Namespace Changed | 🔴 BREAKING | Breaking |
| case177_long_double_abi_changed | long double ABI Changed | 🔴 BREAKING | Breaking |
| case178_unnamed_type_in_public_abi | Unnamed Type Leaks Into the Public ABI | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case179_cet_protection_weakened | CET Protection Weakened | 🟡 COMPATIBLE_WITH_RISK | Risk |
| case180_symbol_binding_lost_unique | Symbol Binding Lost GNU_UNIQUE | 🟡 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 |
| case185_inherited_override_reuses_slot | Inherited override reuses the base's vtable slot | 🟢 COMPATIBLE | Addition (Compatible) |
| case193_ordinary_exported_fn_call_not_reachable | Ordinary Exported Function's Internal Call Is Not Public-Reachable | 🔴 BREAKING | Breaking |
| case200_new_entry_point_instead_of_parameter_added | New Entry Point Instead of a Changed Arity | 🟢 COMPATIBLE | Addition (Compatible) |
| case204_class_gained_non_virtual_method | Class Gained a Non-Virtual Method | 🟢 COMPATIBLE | Addition (Compatible) |