diff --git a/src/arch/aarch64/rmm.rs b/src/arch/aarch64/rmm.rs
index 059cc1fe49f16444e30ac5d6d51c78744c40ab06..5af88af91fe5aa07fc34f5001fdb93dbcc31c6f7 100644
--- a/src/arch/aarch64/rmm.rs
+++ b/src/arch/aarch64/rmm.rs
@@ -57,18 +57,14 @@ pub struct BootloaderMemoryEntry {
 unsafe fn page_flags<A: Arch>(virt: VirtualAddress) -> PageFlags<A> {
     let virt_addr = virt.data();
 
-    // Test for being inside a region
-    macro_rules! in_section {
-        ($n: ident) => {
-            virt_addr >= &concat_idents!(__, $n, _start) as *const u8 as usize
-                && virt_addr < &concat_idents!(__, $n, _end) as *const u8 as usize
-        };
-    }
-
-    if in_section!(text) {
+    if virt_addr >= &__text_start as *const u8 as usize
+        && virt_addr < &__text_end as *const u8 as usize
+    {
         // Remap text read-only, execute
         PageFlags::new().execute(true)
-    } else if in_section!(rodata) {
+    } else if virt_addr >= &__rodata_start as *const u8 as usize
+        && virt_addr < &__rodata_end as *const u8 as usize
+    {
         // Remap rodata read-only, no execute
         PageFlags::new()
     } else {
diff --git a/src/arch/x86/rmm.rs b/src/arch/x86/rmm.rs
index 4593c15977b621d73c3dafcade92557f1bfbec5f..4c635aaeacab9a030e5cf759b57876b0f06b7fc6 100644
--- a/src/arch/x86/rmm.rs
+++ b/src/arch/x86/rmm.rs
@@ -58,18 +58,14 @@ pub struct BootloaderMemoryEntry {
 unsafe fn page_flags<A: Arch>(virt: VirtualAddress) -> PageFlags<A> {
     let virt_addr = virt.data();
 
-    // Test for being inside a region
-    macro_rules! in_section {
-        ($n: ident) => {
-            virt_addr >= &concat_idents!(__, $n, _start) as *const u8 as usize
-                && virt_addr < &concat_idents!(__, $n, _end) as *const u8 as usize
-        };
-    }
-
-    if in_section!(text) {
+    if virt_addr >= &__text_start as *const u8 as usize
+        && virt_addr < &__text_end as *const u8 as usize
+    {
         // Remap text read-only, execute
         PageFlags::new().execute(true)
-    } else if in_section!(rodata) {
+    } else if virt_addr >= &__rodata_start as *const u8 as usize
+        && virt_addr < &__rodata_end as *const u8 as usize
+    {
         // Remap rodata read-only, no execute
         PageFlags::new()
     } else {
diff --git a/src/lib.rs b/src/lib.rs
index d5d9e9cabccd073e273bb450925e25656312e428..55c27329fbb2fadb2a14327864608083b7bd36e9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -48,7 +48,6 @@
 #![feature(array_chunks)]
 #![feature(iter_array_chunks)]
 #![feature(asm_const)] // TODO: Relax requirements of most asm invocations
-#![feature(concat_idents)]
 #![feature(core_intrinsics)]
 #![feature(int_roundings)]
 #![feature(naked_functions)]