vmbase: Move linker to aarch64

This commit move aarch64 linker definition to arch specific module.

Bug: 362733888
Test: m libvmbase

Change-Id: Ib00cbaa981c948e626d58a0f0d818d4ec1f4ceb3
diff --git a/guest/vmbase_example/src/main.rs b/guest/vmbase_example/src/main.rs
index b7d2f95..8723a55 100644
--- a/guest/vmbase_example/src/main.rs
+++ b/guest/vmbase_example/src/main.rs
@@ -30,11 +30,12 @@
 use log::{debug, error, info, trace, warn, LevelFilter};
 use spin::mutex::SpinMutex;
 use vmbase::{
+    arch::linker,
     bionic, configure_heap,
     fdt::pci::PciInfo,
     generate_image_header,
     layout::crosvm::FDT_MAX_SIZE,
-    linker, logger, main,
+    logger, main,
     memory::{deactivate_dynamic_page_tables, map_data, SIZE_64KB},
 };
 
diff --git a/libs/libvmbase/src/arch.rs b/libs/libvmbase/src/arch.rs
index d6095e5..10e5e37 100644
--- a/libs/libvmbase/src/arch.rs
+++ b/libs/libvmbase/src/arch.rs
@@ -23,6 +23,9 @@
 #[cfg(target_arch = "aarch64")]
 pub use aarch64::layout;
 
+#[cfg(target_arch = "aarch64")]
+pub use aarch64::linker;
+
 /// Write with well-defined compiled behavior.
 ///
 /// See https://github.com/rust-lang/rust/issues/131894
diff --git a/libs/libvmbase/src/arch/aarch64.rs b/libs/libvmbase/src/arch/aarch64.rs
index 905c518..2933386 100644
--- a/libs/libvmbase/src/arch/aarch64.rs
+++ b/libs/libvmbase/src/arch/aarch64.rs
@@ -15,6 +15,7 @@
 //! Wrappers of assembly calls.
 
 pub mod layout;
+pub mod linker;
 pub mod page_table;
 pub mod platform;
 
diff --git a/libs/libvmbase/src/linker.rs b/libs/libvmbase/src/arch/aarch64/linker.rs
similarity index 100%
rename from libs/libvmbase/src/linker.rs
rename to libs/libvmbase/src/arch/aarch64/linker.rs
diff --git a/libs/libvmbase/src/layout.rs b/libs/libvmbase/src/layout.rs
index 56d689d..9e1f483 100644
--- a/libs/libvmbase/src/layout.rs
+++ b/libs/libvmbase/src/layout.rs
@@ -17,7 +17,7 @@
 #![allow(unused_unsafe)]
 
 #[cfg(target_arch = "aarch64")]
-use crate::linker::__stack_chk_guard;
+use crate::arch::aarch64::linker::__stack_chk_guard;
 use crate::memory::{max_stack_size, PAGE_SIZE};
 #[cfg(target_arch = "aarch64")]
 use aarch64_paging::paging::VirtualAddress;
@@ -34,7 +34,7 @@
 macro_rules! linker_addr {
     ($symbol:ident) => {{
         #[cfg(target_arch = "aarch64")]
-        let addr = (&raw const $crate::linker::$symbol) as usize;
+        let addr = (&raw const $crate::arch::aarch64::linker::$symbol) as usize;
         VirtualAddress(addr)
     }};
 }
diff --git a/libs/libvmbase/src/lib.rs b/libs/libvmbase/src/lib.rs
index 431e899..57b7f56 100644
--- a/libs/libvmbase/src/lib.rs
+++ b/libs/libvmbase/src/lib.rs
@@ -27,7 +27,6 @@
 pub mod heap;
 mod hvc;
 pub mod layout;
-pub mod linker;
 pub mod logger;
 pub mod memory;
 pub mod power;