@@ -88,7 +88,7 @@ derived from, and a hint about the verbose mode. No banner, no system
8888config, no memory-layout diagram.
8989
9090```
91- KASLD 0.3.0 -- Kernel ASLR derandomization
91+ KASLD 0.3.1-dev -- Kernel ASLR derandomization
9292Target: x86_64 / 6.15.6
9393
9494Running 83 components (10 experimental skipped; use -x to enable)...
@@ -98,16 +98,19 @@ Running 83 components (10 experimental skipped; use -x to enable)...
9898 Physical image base not derandomized ~9 bits
9999 0x0000000001000000 - 0x000000003c20ca00 (473 x 2.0 MiB)
100100 Direct map base >= 0xffff800000000000
101-
102- Coupling virt and phys text are independent on this arch.
103- A phys leak does NOT reveal the virt text base.
101+ Phys/Virt Coupling physical and virtual text randomize independently
104102
105103Leaks (1):
106104 virt kernel text 0xffffffff83800000 (prefetch)
107105
108106[-v: detailed results, memory map, system info] [-H: hardening assessment]
109107```
110108
109+ Terms in this readout (slide, directmap, coupling, slot/entropy) are defined in
110+ the [ kaslr.md glossary] ( kaslr.md#glossary ) ; the engine vocabulary behind them
111+ (quantity, estimate, honest top) is in the
112+ [ architecture.md glossary] ( architecture.md#glossary ) .
113+
111114### Verbose (` -v ` )
112115
113116` -v ` (` --verbose ` ) restores the full banner, system-config block,
@@ -126,7 +129,7 @@ and a compact bracket-format virtual + physical memory layout:
126129 ███▐██▄ ███ ███ ███ ███ ███ ███
127130 ███ ▀███▄ ███ ███ ▄█ ███ ███▌ ▄ ███ ▄███
128131 ███ ▀█▀ ███ █▀ ▄████████▀ █████▄▄██ ████████▀
129- ▀ ▀ v0.3.0
132+ ▀ ▀ v0.3.1-dev
130133
131134Kernel release: 6.15.6
132135Kernel version: #1 SMP PREEMPT_DYNAMIC Wed Jun 17 13:04:17 EDT 2026
@@ -666,8 +669,10 @@ their machine-readable metadata. The assessment has seven sections:
666669 no PRNG, insufficient memory). The kernel still relocates but lands
667670 at a firmware-/boot-stub-deterministic position rather than the
668671 link-time default — meaningfully different from a deliberate
669- opt-out, which the main results banner already reports. Omitted
670- when KASLR is healthy or opted out.
672+ opt-out, which the main results banner already reports. The full set
673+ of runtime states is catalogued in
674+ [ kaslr.md — KASLR runtime states] ( kaslr.md#kaslr-runtime-states ) .
675+ Omitted when KASLR is healthy or opted out.
671676
6726772 . ** Active defenses** — runtime security settings detected on the system
673678 (` dmesg_restrict ` , ` kptr_restrict ` , ` perf_event_paranoid ` , ` %pK ` pointer
@@ -694,6 +699,15 @@ their machine-readable metadata. The assessment has seven sections:
694699 represent leak vectors that cannot be blocked by runtime hardening
695700 alone.
696701
702+ When the kernel-text function order can be determined, the assessment also
703+ prints a ** Function layout** block above these sections: ` text ordering `
704+ (canonical, or reordered static / per-boot) and ` symbol resolution ` (whether a
705+ generic ` System.map ` resolves symbols, or only this build's does). Reordered
706+ text is the [ FG-KASLR / reordered-text class] ( kaslr.md#function-granular-kaslr-fg-kaslr )
707+ (LTO, AutoFDO, Propeller, or FG-KASLR): functions no longer sit at a constant
708+ offset from ` _text ` , so a leaked address pins only its own symbol and a generic
709+ ` System.map ` no longer locates the rest.
710+
697711The hardening assessment is also available in JSON output (` -j -H ` ),
698712where it appears in a top-level ` "hardening" ` object with fields
699713` exposure ` , ` kaslr_posture ` (always present; ` state ` is one of
0 commit comments