vmbase: Introduce module for Bionic compat layer
Refactor Bionic-related code into its own module.
Test: m pvmfw_img && atest vmbase_example.integration_test
Change-Id: I25e9a7c335e15ffc87c316b2a32c9ec227e17fbd
diff --git a/vmbase/src/bionic.rs b/vmbase/src/bionic.rs
new file mode 100644
index 0000000..8b3a076
--- /dev/null
+++ b/vmbase/src/bionic.rs
@@ -0,0 +1,25 @@
+// 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.
+
+//! Low-level compatibility layer between baremetal Rust and Bionic C functions.
+
+use crate::linker;
+
+/// 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/lib.rs b/vmbase/src/lib.rs
index a012442..d577802 100644
--- a/vmbase/src/lib.rs
+++ b/vmbase/src/lib.rs
@@ -16,6 +16,7 @@
#![no_std]
+mod bionic;
pub mod console;
mod entry;
pub mod layout;
@@ -24,6 +25,8 @@
pub mod power;
pub mod uart;
+pub use bionic::STACK_CHK_GUARD;
+
use core::panic::PanicInfo;
use power::reboot;
@@ -32,11 +35,3 @@
eprintln!("{}", info);
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");
-}