Set memfd name to module name on debug

This commit is contained in:
Nullptr
2023-04-23 09:15:53 +08:00
parent 33c4ea3c62
commit f5bf82fa93
2 changed files with 15 additions and 4 deletions

View File

@@ -19,6 +19,17 @@ macro_rules! lp_select {
($lp32:expr, $lp64:expr) => { $lp32 };
}
#[cfg(debug_assertions)]
#[macro_export]
macro_rules! debug_select {
($debug:expr, $release:expr) => { $debug };
}
#[cfg(not(debug_assertions))]
#[macro_export]
macro_rules! debug_select {
($debug:expr, $release:expr) => { $release };
}
pub struct LateInit<T> {
cell: OnceCell<T>,
}

View File

@@ -1,6 +1,6 @@
use crate::constants::DaemonSocketAction;
use crate::utils::UnixStreamExt;
use crate::{constants, lp_select, magic, root_impl, utils};
use crate::{constants, debug_select, lp_select, magic, root_impl, utils};
use anyhow::{bail, Result};
use memfd::Memfd;
use nix::{
@@ -91,7 +91,7 @@ fn load_modules(arch: &str) -> Result<Vec<Module>> {
continue;
}
log::info!(" Loading module `{name}`...");
let memfd = match create_memfd(&so_path) {
let memfd = match create_memfd(&so_path, &name) {
Ok(memfd) => memfd,
Err(e) => {
log::warn!(" Failed to create memfd for `{name}`: {e}");
@@ -114,9 +114,9 @@ fn load_modules(arch: &str) -> Result<Vec<Module>> {
Ok(modules)
}
fn create_memfd(so_path: &PathBuf) -> Result<Memfd> {
fn create_memfd(so_path: &PathBuf, debug_name: &str) -> Result<Memfd> {
let opts = memfd::MemfdOptions::default().allow_sealing(true);
let memfd = opts.create("jit-cache")?;
let memfd = opts.create(debug_select!(debug_name, "jit-cache"))?;
let file = fs::File::open(so_path)?;
let mut reader = std::io::BufReader::new(file);
let mut writer = memfd.as_file();