From cdf9243962e6f0b79f27ceb8ac1c91aa2b5c5477 Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Wed, 6 Nov 2024 20:58:31 +0200 Subject: [PATCH] user: enable dyn-loader --- userspace/Cargo.lock | 9 +++++++++ userspace/Cargo.toml | 2 +- userspace/dyn-loader/Cargo.toml | 3 +++ xtask/src/build/userspace.rs | 28 ++++++++++++++-------------- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/userspace/Cargo.lock b/userspace/Cargo.lock index 78a0cd19..5a8249ed 100644 --- a/userspace/Cargo.lock +++ b/userspace/Cargo.lock @@ -371,6 +371,15 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "dyn-loader" +version = "0.1.0" +dependencies = [ + "elf", + "thiserror", + "yggdrasil-rt", +] + [[package]] name = "ed25519" version = "2.2.3" diff --git a/userspace/Cargo.toml b/userspace/Cargo.toml index ea7e93ce..14fba57e 100644 --- a/userspace/Cargo.toml +++ b/userspace/Cargo.toml @@ -12,7 +12,7 @@ members = [ "lib/libterm", "netutils", "netutils", -# "dyn-loader", + "dyn-loader", "rdb", "lib/yasync", "rsh", diff --git a/userspace/dyn-loader/Cargo.toml b/userspace/dyn-loader/Cargo.toml index 58af2588..800c08f5 100644 --- a/userspace/dyn-loader/Cargo.toml +++ b/userspace/dyn-loader/Cargo.toml @@ -8,3 +8,6 @@ yggdrasil-rt.workspace = true thiserror.workspace = true elf = "0.7.4" + +[lints.rust] +unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] } diff --git a/xtask/src/build/userspace.rs b/xtask/src/build/userspace.rs index 54aaebf5..368ae7a4 100644 --- a/xtask/src/build/userspace.rs +++ b/xtask/src/build/userspace.rs @@ -54,13 +54,13 @@ const PROGRAMS: &[(&str, &str)] = &[ ("rshd", "sbin/rshd"), // crypt ("crypt", "bin/crypt"), - // ("dyn-loader", "libexec/dyn-loader"), + ("dyn-loader", "libexec/dyn-loader"), ]; fn build_userspace(env: &BuildEnv, _: AllOk) -> Result<(), Error> { log::info!("Building userspace"); CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace"))?; - //CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace/dynload-program"))?; + CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace/dynload-program"))?; Ok(()) } @@ -101,18 +101,18 @@ fn build_rootfs, D: AsRef>( // TODO this is a temporary hack fs::create_dir_all(rootfs_dir.join("lib"))?; - // util::copy_file( - // env.workspace_root.join(format!( - // "userspace/dynload-program/target/{}-unknown-yggdrasil/{}/dynload-program", - // env.arch.name(), - // env.profile.name() - // )), - // rootfs_dir.join("dynload-program"), - // )?; - // util::copy_file(format!( - // "/home/alnyan/build/ygg/toolchain/build/host/stage1-std/{}-unknown-yggdrasil/release/libstd.so", - // env.arch.name() - // ), rootfs_dir.join("lib/libstd.so"))?; + util::copy_file( + env.workspace_root.join(format!( + "userspace/dynload-program/target/{}-unknown-yggdrasil/{}/dynload-program", + env.arch.name(), + env.profile.name() + )), + rootfs_dir.join("dynload-program"), + )?; + util::copy_file(format!( + "/home/alnyan/build/ygg/toolchain/build/host/stage1-std/{}-unknown-yggdrasil/release/libstd.so", + env.arch.name() + ), rootfs_dir.join("lib/libstd.so"))?; log::info!("Installing extras"); for (src, dst) in install_extra {