SQLite at -O3: native trace, CEDARtools.Anchor and GCC coverage
A measured Cortex-M7 comparison of native hardware trace, CEDARtools.Anchor and GCC coverage across code size, static RAM, runtime and source attribution.
In brief
This Evidence Record compares an optimized SQLite 3.45.3-based workload on an Arm® Cortex®-M7 target using three observation paths: the native binary observed through instruction trace, the CEDARtools® product CEDARtools.Anchor with its named control-flow anchors, and GCC coverage instrumentation.
In this configuration, Anchor* increased code size while leaving static RAM effectively unchanged. The complete GCC coverage images were projected to exceed the available target memory and therefore produced no on-target runtime result. The experiment also shows why complete machine-level observation and unambiguous source attribution are separate properties.
What this record establishes
- the code and static-RAM effects measured or projected for this exact workload and target configuration;
- the observed native and Anchor* runtimes from the documented target campaign;
- whether each comparison artifact fits the configured target memory;
- the distinction between machine-level trace completeness and source-level attribution;
- the source-attribution result reported for native trace and Anchor*.
What this record does not establish
- a universal overhead for Anchor*, GCC coverage or hardware trace;
- that anchors make software execute faster;
- that GCC coverage always exceeds target memory;
- that GCC condition coverage is semantically identical to every certification-oriented interpretation of MC/DC;
- that complete source attribution means complete coverage has been achieved;
- that the same result applies to another compiler, optimization level, workload or target.
Experimental setup
- Workload: SQLite 3.45.3-based target workload using the report’s LEMON-rebuilt subset
- Optimization:
-O3 - Target: STM32H7S3L8 on NUCLEO-H7S3L8
- Processor: Arm Cortex-M7 at 600 MHz
- Target load regions: 456 KB AXISRAM, 64 KB ITCM and 64 KB DTCM
- Aggregate load-region capacity: 584 KB
- GCC toolchain used for measured deltas:
arm-none-eabi-gcc 14.2.1 - Measurement snapshot: 13 July 2026
- Test level shown: system test
Static size, runtime and source attribution have different evidence paths. Native and Anchor* code and RAM values are static artifact measurements. Runtime values come from a documented on-target campaign. The GCC code and RAM values are projections from measured translation-unit deltas because the complete GCC images do not fit the target configuration. Source attribution is derived from source-to-object analysis rather than elapsed-time measurement.
The two comparison panels below show the reviewed values; every number carries its evidence badge.
The runtime ledger
Runtime was measured with an iteration-rate method on the target (campaign of 3 July 2026, Board A, workload health-checked per run): the workload iteration counter is read over fixed windows, and the per-iteration time is the reciprocal of the rate. The unrounded ledger values:
| Variant | Rate (iter/s) | Window | Per-iteration time | Of native (rate-derived) |
|---|---|---|---|---|
| native (clean) | 24.26 / 24.27 | 2 × 60 s | 41.2 ms | 100% |
| Anchored, L0 (statements) | 25.39 | 60 s | 39.4 ms | 95.6% |
| Anchored, L1 (+branches) | 27.07 | 60 s | 36.9 ms | 89.6% |
| Anchored, L4 (condition/MC/DC class) | 26.75 / 26.74 | 2 × 60 s | 37.4 ms | 90.7% |
The two repeated native windows and the two repeated L4 windows each differed by approximately 0.04%. The anchored variants were non-monotonic and measured faster than native in this campaign.
This experiment does not isolate intrinsic anchor cost from code layout, cache alignment, binary differences or other build-to-build effects. The values are therefore observations for the named campaign and configuration, not a per-anchor cost estimate and not evidence that anchors accelerate the workload.
Two display notes for reviewers comparing this record against the RA-Studio overview snapshot of 13 July 2026: the overview displayed the L4 time as 37.5 ms where the ledger rates give 37.4 ms, and it displayed runtime percentages (95.3%/89.8%) that are not reproducible from the ledger rates. This record therefore publishes the rate-derived values above; the snapshot files remain unmodified in the evidence set.
Source attribution
Source attribution is the ability to assign observed machine-level execution to the correct source-level coverage obligation without ambiguity.
It is separate from trace completeness and from coverage achieved. The concept has its own reference page: source attribution in trace-based code coverage.
A machine-level trace can be complete while compiler optimization has merged, predicated, cloned or removed the source structures needed to assign an observed branch or path to one source obligation.
In this experiment, native trace supported unambiguous source attribution for 77% (5,667 of 7,356) of the decision obligations linked into the image - the L0/L1 anchor-set catalog minus functions the linker stripped from this build. Statement obligations are not part of this ratio. At the L4 condition level, attribution was available for 48.2% (1,470 of 3,047) of the conditions in multi-condition (“compound”) decisions, while 51.6% (646 of 1,251) of the compound decisions were completely derivable from the branch trace.
This does not mean that the remaining execution was absent from the trace. It means that the observed machine event could not always be assigned to one source-level obligation without ambiguity.
Anchor* preserves selected source identities through named control-flow anchors. GCC instrumentation preserves observation identities through compiler-generated counters. Their attribution mechanisms and target-side resource effects must be evaluated separately.
Reading the result
For the statement and decision class, Anchor* increased .text from 413,512 B to
448,352 B, an increase of 8.4%. Static RAM remained effectively unchanged.
The GCC coverage image is projected at 777,399 B of code and 233,760 B of static RAM. Together with the 54,420 B of the native image that these two figures do not include - dominated by ITCM-resident code and the reserved heap/stack block, and held constant by the projection - the projected complete image is 1,065,579 B (approximately 1,041 KiB) and does not fit this target configuration. Because there is no launchable target image, no GCC runtime value is reported.
For the condition/MC/DC-class comparison, Anchor* increased .text to 461,160 B,
11.5% above native, again without a material static-RAM increase.
The corresponding GCC image is projected at 986,938 B of code and 364,568 B of static RAM. Together with the same unchanged 54,420 B remainder of the native image, its projected complete image is 1,405,926 B (approximately 1,373 KiB) and does not fit this target configuration.
The observed Anchor* runtimes were 39.4 ms (L0), 36.9 ms (L1) and 37.4 ms (L4) per iteration, compared with 41.2 ms for the native runtime campaign - rate-derived observations from the ledger above. The campaign did not separate anchor execution cost from code-layout, cache-alignment and binary variation effects; no causal speedup or per-anchor runtime cost is inferred.
The static-size values on this record come from the snapshot build of 13 July 2026; the runtime campaign of 3 July 2026 ran its own campaign images. The two are separate evidence paths, as stated above, and are not values extracted from one identical binary artifact.
Evidence status
| Metric | Native | Anchor* | GCC |
|---|---|---|---|
| Code | Measured static | Measured static | Projected from measured TU deltas |
| Static RAM | Measured static | Measured static | Projected from measured TU deltas |
| Runtime | Measured on target | Measured on target | Not runnable |
| Source attribution | Derived | Derived | Self-identifying within the instrumentation model |
| Target fit | Fits | Fits | Does not fit |
The attribution labels in this record do not establish that every source-level obligation is represented, nor that GCC condition coverage is semantically identical to every certification-oriented MC/DC interpretation. For the Anchor* condition/MC/DC class, attribution is available for the complete anchored obligation set linked into the image; obligations the compiler proves infeasible are reported as a named, detected exclusion class rather than as a silent gap.
Download the data
The files preserve the method, units and evidence status for each value. The data may be freely cited and reused with attribution to Accemic Technologies GmbH and a reference to this record.
Where the data below comes from
All numerical inputs on this page originate from Accemic measurements, taken from the RA-Studio snapshot of 13 July 2026 and reviewed into a versioned data module in this repository. Values labeled PROJECTED are calculated from measured translation-unit deltas; they are not measurements of a successfully linked and executed full-target GCC coverage image. The measurement snapshots themselves are internal evidence inputs; the reviewed values, their evidence classes and the machine-readable dataset downloads below are the public record. The mapping basis behind these values is described on object-to-source mapping; the concepts behind the comparison are explained in what instrumentation costs and why the object-to-source mapping breaks under optimization.
| Dimension | Native trace + DWARF | CEDARtools.Anchor | GCC coverage |
|---|---|---|---|
| Code (.text) | 413,512 BMEASURED · STATIC | 448,352 B108.4% of native+8.4%MEASURED · STATIC | 777,399 B188.0% of native+88.0%PROJECTEDProjected from measured TU deltas |
| Static RAM (.data + .bss) | 54,164 BMEASURED · STATIC | 54,156 Beffectively unchanged (100.0% of native)MEASURED · STATIC | 233,760 B431.6% of native+331.6%PROJECTEDProjected from measured TU deltas |
| Observed runtime | 41.2 ms observedMEASURED · ON TARGET | 39.4 ms observedL0 variant, 25.39 iter/s; 95.6% of native (rate-derived). The L1 variant measured 36.9 msObserved layout effect; not a speedup claimMEASURED · ON TARGET | Not runnable on this targetNOT RUNNABLE |
| Source attribution | 77%of the decision obligations linked into the image attributable without ambiguityDERIVED | >99.9%7,607 of 7,611 expected anchors resolvedDERIVED | Self-identifyingobservation points carry their own identity within the GCC instrumentation modelDERIVED |
| Target fit | Fits; ran on target | Fits; ran on target | ✕ does not fit this target configurationprojected complete image ≈ 1,041 KB |
| Evidence status | static sizes measured; runtime from documented on-target campaign | static sizes measured; runtime from documented on-target campaign | code and RAM projected from measured translation-unit deltas; no runtime value exists |
| Dimension | Native trace + DWARF | CEDARtools.Anchor | GCC coverage |
|---|---|---|---|
| Code (.text) | 413,512 BMEASURED · STATIC | 461,160 B111.5% of native+11.5%MEASURED · STATIC | 986,938 B238.7% of native+138.7%PROJECTEDProjected from measured TU deltas |
| Static RAM (.data + .bss) | 54,164 BMEASURED · STATIC | 54,156 Beffectively unchanged (100.0% of native)MEASURED · STATIC | 364,568 B673.1% of native+573.1%PROJECTEDProjected from measured TU deltas |
| Observed runtime | 41.2 ms observedMEASURED · ON TARGET | 37.4 ms observed26.75/26.74 iter/s, 2 × 60 s; 90.7% of native (rate-derived)Observed layout effect; not a speedup claimMEASURED · ON TARGET | Not runnable on this targetNOT RUNNABLE |
| Source attribution | 48.2% of condition obligations1,470 of 3,047 resolved; 51.6% of compound decisions complete (646 of 1,251)DERIVED | Available for the anchored obligation setselected obligations preserved through named anchors; denominators independently reproduced 2026-08-16DERIVED | Self-identifyingobservation points carry their own identity within the GCC instrumentation modelDERIVED |
| Target fit | Fits; ran on target | Fits; ran on target | ✕ does not fit this target configurationprojected complete image ≈ 1,373 KB |
| Evidence status | static sizes measured; runtime from documented on-target campaign | static sizes measured; runtime from documented on-target campaign | code and RAM projected from measured translation-unit deltas; no runtime value exists |
These attribution labels do not establish that every source-level obligation is represented, nor that GCC condition coverage is semantically identical to every certification-oriented MC/DC interpretation.
Reading the result
For the statement and decision class, CEDARtools.Anchor increased .textfrom 413,512 B to 448,352 B, an increase of 8.4%. Static RAM remained effectively unchanged.
The GCC coverage image is projected at 777,399 B of code and 233,760 B of static RAM. The projected complete image is approximately 1,041 KB and does not fit this target configuration. Because there is no launchable target image, no GCC runtime value is reported.
For the L4 condition/MC/DC-class comparison, CEDARtools.Anchor increased.text to 461,160 B, 11.5% above native, again without a material static-RAM increase.
The corresponding GCC image is projected at 986,938 B of code and 364,568 B of static RAM. Its projected complete image is approximately 1,373 KB and does not fit the target configuration.
The observed CEDARtools.Anchor runtimes were 39.4 ms (L0), 36.9 ms (L1) and 37.4 ms (L4) per iteration, compared with 41.2 ms for the native runtime campaign - rate-derived from the iteration-rate ledger (campaign of 3 July 2026). These observations are not evidence that anchors make the workload faster. The non-monotonic result across supplement levels is consistent with code-layout and cache-alignment effects dominating a small intrinsic anchor cost in this particular workload.
The native trace supported unambiguous source attribution for 77% (5,667 of 7,356) of the decision obligations linked into the image. At L4, attribution was available for 48.2% (1,470 of 3,047) of the conditions in compound decisions, while 51.6% (646 of 1,251) of the compound decisions were completely derivable.
This does not mean that the remaining execution was absent from the trace. It means that the optimized machine-level event could not always be assigned to one source-level obligation without ambiguity.
CEDARtools.Anchor and GCC preserve source identity by different mechanisms: named control-flow anchors for CEDARtools.Anchor, compiler-generated counters for GCC. Their resource effects must therefore be compared separately from the attribution result.
What this example establishes
- CEDARtools.Anchor shifts its primary target-side cost into code rather than analysis RAM.
- GCC instrumentation uses both code and RAM in this configuration.
- The complete GCC images do not fit this target, so a missing runtime value is a result rather than an omitted measurement.
- Trace completeness and source attribution are different evidence properties.
- Compiler optimization can reduce source attribution even when machine execution has been observed.
- These figures describe this workload, toolchain and target configuration. They are not a universal overhead claim.
Measurement details and provenance
The GCC projections are based on measured deltas from the same translation unit and compiler flags. They are not measurements of a successfully linked and executed full-target GCC coverage image.
The static-size comparison and the rate-mode runtime campaign are separate evidence paths. The website does not imply that all values were extracted from one identical binary artifact.
Measurement snapshot 2026-07-13; GCC toolchain for the measured deltas: arm-none-eabi-gcc 14.2.1. Target load regions:456 KB AXISRAM, 64 KB ITCM,64 KB DTCM (584 KB aggregate).
Evidence summary
- What was measured
- Native and CEDARtools.Anchor code size and static RAM (static artifact measurement); native and CEDARtools.Anchor runtimes (documented on-target campaign).
- What was derived
- The source-attribution figures, from source-to-object analysis of the optimized binaries.
- What was projected
- GCC code size, static RAM and complete-image sizes, from measured translation-unit deltas - the complete GCC images do not link into this target configuration.
- What was not measurable
- GCC runtime on this target: the projected image does not fit, so there is no launchable artifact to time.
- What remains under review
- Runtime percentage view (unrounded ledger), the 456 KB versus 584 KB memory-boundary denominator, and the GCC condition-coverage wording. The condition-level attribution denominators are no longer under review: independently reproduced on 2026-08-16 (48.2% = 1,470/3,047 conditions in compound decisions; 51.6% = 646/1,251 compound decisions).
Dataset downloads
The reviewed values are available machine-readably, generated from the same data module that renders the tables above:
- sqlite-o3-native-hra-gcc.json - full structure with units, evidence status and limitations
- sqlite-o3-native-hra-gcc.csv - one row per analysis level, method and metric
Reuse: the downloadable data and the values on this page may be freely cited and reused with attribution to Accemic Technologies GmbH and a reference to this record.