Overview
ISO/IEC TS 6010:2025 - “Programming languages - C - A provenance-aware memory object model for C” - is a Technical Specification that refines the C memory object model defined in ISO/IEC 9899:2018. It is not a full re‑specification of C; rather, it constrains and clarifies the Memory Object Model by formalizing the concept of pointer provenance and the identities of storage instances. The TS provides precise semantics for pointer validity, object lifetimes and addresses, and includes an executable semantics (see the Cerberus implementation) to explore small test programs.
Key topics and requirements
- Pointer provenance: Defines provenance as the entity associated with a pointer value (either empty or the identity of a storage instance). A pointer’s validity depends on having non‑empty provenance, a live storage instance for that provenance, and an address within or one‑past that storage instance.
- Storage instance: Introduces the term for inclusion‑maximal regions of data storage created by object definitions or allocations. Storage instances have unique identities and may or may not have a memory address.
- Object lifetimes and storage durations: Clarifies lifetimes as side effects and reiterates the four storage durations (static, thread, automatic, allocated), applying storage duration to storage instances.
- Representation of types and addresses: States that addressable storage instances provide access to a byte array whose abstract byte addresses are represented as uintptr_t (implementation‑defined conversion rules). Relative positions of storage instances in the address space are described without imposing additional ordering constraints.
- Signal handling: Requires that when a signal handler modifies an object that is neither a lock‑free atomic nor of type volatile sig_atomic_t, the object’s representation becomes indeterminate when the handler exits.
- Scope and exclusions: Explicitly does not address subobject provenance and builds on normative references such as ISO/IEC 9899:2018 and ISO 80000‑2.
Applications
ISO/IEC TS 6010:2025 is directly applicable to:
- Compiler and tool developers - to implement provenance‑aware alias analysis and safe optimizations aligned with the C abstract machine.
- Static analysis and formal verification - to reason about pointer validity, undefined behavior and memory safety.
- Runtime sanitizers and debuggers - for more accurate detection of provenance violations and use‑after‑free.
- Security researchers - to model exploit mitigations that depend on precise pointer provenance semantics.
- Embedded and systems programmers - for understanding portability and memory‑model constraints affecting low‑level code.
Related standards
- ISO/IEC 9899:2018 - Programming languages - C (base standard extended by this TS)
- ISO 80000‑2 - Quantities and units (normative reference in the TS)
Keywords: ISO/IEC TS 6010:2025, C, provenance-aware, memory object model, pointer provenance, storage instance, ISO/IEC 9899:2018, memory model, alias analysis, static analysis, compilers.