diff --git a/vmbase/src/layout.rs b/vmbase/src/layout.rs
new file mode 100644
index 0000000..b0a5173
--- /dev/null
+++ b/vmbase/src/layout.rs
@@ -0,0 +1,66 @@
+// Copyright 2022, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Memory layout.
+
+use crate::linker;
+use core::ops::Range;
+use core::ptr::addr_of;
+
+/// Memory reserved for the DTB.
+pub fn dtb_range() -> Range<usize> {
+    unsafe { (addr_of!(linker::dtb_begin) as usize)..(addr_of!(linker::dtb_end) as usize) }
+}
+
+/// Executable code.
+pub fn text_range() -> Range<usize> {
+    unsafe { (addr_of!(linker::text_begin) as usize)..(addr_of!(linker::text_end) as usize) }
+}
+
+/// Read-only data.
+pub fn rodata_range() -> Range<usize> {
+    unsafe { (addr_of!(linker::rodata_begin) as usize)..(addr_of!(linker::rodata_end) as usize) }
+}
+
+/// Initialised writable data.
+pub fn data_range() -> Range<usize> {
+    unsafe { (addr_of!(linker::data_begin) as usize)..(addr_of!(linker::data_end) as usize) }
+}
+
+/// Zero-initialised writable data.
+pub fn bss_range() -> Range<usize> {
+    unsafe { (addr_of!(linker::bss_begin) as usize)..(addr_of!(linker::bss_end) as usize) }
+}
+
+/// Writable data region for the stack.
+pub fn boot_stack_range() -> Range<usize> {
+    unsafe {
+        (addr_of!(linker::boot_stack_begin) as usize)..(addr_of!(linker::boot_stack_end) as usize)
+    }
+}
+
+/// Writable data, including the stack.
+pub fn writable_region() -> Range<usize> {
+    data_range().start..boot_stack_range().end
+}
+
+/// Read-write data (original).
+pub fn data_load_address() -> usize {
+    unsafe { addr_of!(linker::data_lma) as usize }
+}
+
+/// End of the binary image.
+pub fn binary_end() -> usize {
+    unsafe { addr_of!(linker::bin_end) as usize }
+}
diff --git a/vmbase/src/lib.rs b/vmbase/src/lib.rs
index 9c9417a..a012442 100644
--- a/vmbase/src/lib.rs
+++ b/vmbase/src/lib.rs
@@ -18,6 +18,8 @@
 
 pub mod console;
 mod entry;
+pub mod layout;
+mod linker;
 pub mod logger;
 pub mod power;
 pub mod uart;
@@ -31,6 +33,9 @@
     reboot()
 }
 
+/// Reference to __stack_chk_guard.
+pub static STACK_CHK_GUARD: &u64 = unsafe { &linker::__stack_chk_guard };
+
 #[no_mangle]
 extern "C" fn __stack_chk_fail() -> ! {
     panic!("stack guard check failed");
diff --git a/vmbase/src/linker.rs b/vmbase/src/linker.rs
new file mode 100644
index 0000000..f4baae8
--- /dev/null
+++ b/vmbase/src/linker.rs
@@ -0,0 +1,48 @@
+// Copyright 2022, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Linker-defined symbols.
+
+extern "C" {
+    /// Stack canary value
+    pub static __stack_chk_guard: u64;
+    /// First byte beyond the pre-loaded binary.
+    pub static bin_end: u8;
+    /// First byte of the `.stack` section.
+    pub static boot_stack_begin: u8;
+    /// First byte beyond the `.stack` section.
+    pub static boot_stack_end: u8;
+    /// First byte of the `.bss` section.
+    pub static bss_begin: u8;
+    /// First byte beyond the `.bss` section.
+    pub static bss_end: u8;
+    /// First byte of the (loaded) `.data` section.
+    pub static data_begin: u8;
+    /// First byte beyond the (loaded) `.data` section.
+    pub static data_end: u8;
+    /// First byte of the pre-loaded `.data` section.
+    pub static data_lma: u8;
+    /// First byte of the `.dtb` section.
+    pub static dtb_begin: u8;
+    /// First byte beyond the `.dtb` section.
+    pub static dtb_end: u8;
+    /// First byte of the `.rodata` section.
+    pub static rodata_begin: u8;
+    /// First byte beyond the `.rodata` section.
+    pub static rodata_end: u8;
+    /// First byte of the `.text` section.
+    pub static text_begin: u8;
+    /// First byte beyond the `.text` section.
+    pub static text_end: u8;
+}
