From 9c6279d7d47659f6b5447c64bf67a646a8f57cfb Mon Sep 17 00:00:00 2001 From: novafacing Date: Tue, 19 Dec 2023 01:28:13 -0800 Subject: [PATCH] Fix wrong register entrypoint called, fix docsrs build for qemu package --- Cargo.toml | 8 +- qemu-plugin/Cargo.toml | 2 +- qemu-plugin/examples/tiny/src/lib.rs | 18 ++-- qemu-plugin/src/install/mod.rs | 2 +- qemu/Cargo.toml | 3 - qemu/build.rs | 1 + qemu/src/lib.rs | 132 +++++++++++++-------------- 7 files changed, 79 insertions(+), 87 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index eb2a602..f9921b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ license = "GPL-2.0-only" publish = true readme = "README.md" repository = "https://github.com/novafacing/qemu-rs" -version = "8.1.3-v2" +version = "8.1.3-v3" [workspace] resolver = "2" @@ -20,6 +20,6 @@ members = [ ] [workspace.dependencies] -qemu-plugin-sys = { version = "8.1.3-v2", path = "qemu-plugin-sys" } -qemu-plugin = { version = "8.1.3-v2", path = "qemu-plugin" } -qemu = { version = "8.1.3-v2", path = "qemu" } +qemu-plugin-sys = { version = "8.1.3-v3", path = "qemu-plugin-sys" } +qemu-plugin = { version = "8.1.3-v3", path = "qemu-plugin" } +qemu = { version = "8.1.3-v3", path = "qemu" } diff --git a/qemu-plugin/Cargo.toml b/qemu-plugin/Cargo.toml index f5c3837..6818c4c 100644 --- a/qemu-plugin/Cargo.toml +++ b/qemu-plugin/Cargo.toml @@ -14,5 +14,5 @@ version.workspace = true [dependencies] anyhow = "1.0.75" once_cell = "1.19.0" -qemu-plugin-sys = { version = "8.1.3-v2", workspace = true } +qemu-plugin-sys = { version = "8.1.3-v3", workspace = true } thiserror = "1.0.51" diff --git a/qemu-plugin/examples/tiny/src/lib.rs b/qemu-plugin/examples/tiny/src/lib.rs index 986f20b..91b199d 100644 --- a/qemu-plugin/examples/tiny/src/lib.rs +++ b/qemu-plugin/examples/tiny/src/lib.rs @@ -1,4 +1,4 @@ -use anyhow::Result; +use anyhow::{anyhow, Result}; use ctor::ctor; use qemu_plugin::{ plugin::{HasCallbacks, Plugin, Register, PLUGIN}, @@ -8,6 +8,7 @@ use std::sync::Mutex; struct TinyTrace {} +impl Plugin for TinyTrace {} impl Register for TinyTrace {} impl HasCallbacks for TinyTrace { @@ -16,25 +17,18 @@ impl HasCallbacks for TinyTrace { _id: PluginId, tb: TranslationBlock, ) -> Result<()> { - tb.instructions().enumerate().try_for_each(|(idx, insn)| { - if idx == 0 { - println!("====TB: {:08x}", insn.vaddr()); - } - + tb.instructions().try_for_each(|insn| { println!("{:08x}: {}", insn.vaddr(), insn.disas()?); - Ok::<(), anyhow::Error>(()) - })?; - - Ok(()) + Ok(()) + }) } } -impl Plugin for TinyTrace {} #[ctor] fn init() { PLUGIN .set(Mutex::new(Box::new(TinyTrace {}))) - .map_err(|_| anyhow::anyhow!("Failed to set plugin")) + .map_err(|_| anyhow!("Failed to set plugin")) .expect("Failed to set plugin"); } diff --git a/qemu-plugin/src/install/mod.rs b/qemu-plugin/src/install/mod.rs index 9829af6..e630a5b 100644 --- a/qemu-plugin/src/install/mod.rs +++ b/qemu-plugin/src/install/mod.rs @@ -189,7 +189,7 @@ pub unsafe extern "C" fn qemu_plugin_install( }; plugin - .register(id, &args, &info) + .register_default(id, &args, &info) .expect("Failed to register plugin"); PLUGIN_INSTALL_SUCCESS diff --git a/qemu/Cargo.toml b/qemu/Cargo.toml index e2467c1..73f0160 100644 --- a/qemu/Cargo.toml +++ b/qemu/Cargo.toml @@ -11,9 +11,6 @@ readme.workspace = true repository.workspace = true version.workspace = true -[package.metadata.docs.rs] -rustc-args = ["--cfg", "docsrs"] - [[bin]] name = "qemu-aarch64" required-features = ["binaries", "aarch64-linux-user"] diff --git a/qemu/build.rs b/qemu/build.rs index 8964cc4..d6f1b8c 100644 --- a/qemu/build.rs +++ b/qemu/build.rs @@ -888,6 +888,7 @@ fn install(build: &Path) -> Result<()> { fn main() -> Result<()> { if var("DOCS_RS").is_ok() { + println!("cargo:rustc-cfg=docs_rs"); return Ok(()); } diff --git a/qemu/src/lib.rs b/qemu/src/lib.rs index 580628a..8edb562 100644 --- a/qemu/src/lib.rs +++ b/qemu/src/lib.rs @@ -25,266 +25,266 @@ pub const QEMU_VERSION: &str = "8.1.3"; -#[cfg(all(feature = "aarch64-linux-user", not(docsrs)))] +#[cfg(all(feature = "aarch64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-aarch64 pub const QEMU_AARCH64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-aarch64")); -#[cfg(all(feature = "aarch64_be-linux-user", not(docsrs)))] +#[cfg(all(feature = "aarch64_be-linux-user", not(docs_rs)))] /// QEMU binary for qemu-aarch64_be pub const QEMU_AARCH64_BE_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-aarch64_be")); -#[cfg(all(feature = "alpha-linux-user", not(docsrs)))] +#[cfg(all(feature = "alpha-linux-user", not(docs_rs)))] /// QEMU binary for qemu-alpha pub const QEMU_ALPHA_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-alpha")); -#[cfg(all(feature = "arm-linux-user", not(docsrs)))] +#[cfg(all(feature = "arm-linux-user", not(docs_rs)))] /// QEMU binary for qemu-arm pub const QEMU_ARM_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-arm")); -#[cfg(all(feature = "armeb-linux-user", not(docsrs)))] +#[cfg(all(feature = "armeb-linux-user", not(docs_rs)))] /// QEMU binary for qemu-armeb pub const QEMU_ARMEB_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-armeb")); -#[cfg(all(feature = "cris-linux-user", not(docsrs)))] +#[cfg(all(feature = "cris-linux-user", not(docs_rs)))] /// QEMU binary for qemu-cris pub const QEMU_CRIS_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-cris")); -#[cfg(all(feature = "hexagon-linux-user", not(docsrs)))] +#[cfg(all(feature = "hexagon-linux-user", not(docs_rs)))] /// QEMU binary for qemu-hexagon pub const QEMU_HEXAGON_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-hexagon")); -#[cfg(all(feature = "hppa-linux-user", not(docsrs)))] +#[cfg(all(feature = "hppa-linux-user", not(docs_rs)))] /// QEMU binary for qemu-hppa pub const QEMU_HPPA_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-hppa")); -#[cfg(all(feature = "i386-linux-user", not(docsrs)))] +#[cfg(all(feature = "i386-linux-user", not(docs_rs)))] /// QEMU binary for qemu-i386 pub const QEMU_I386_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-i386")); -#[cfg(all(feature = "loongarch64-linux-user", not(docsrs)))] +#[cfg(all(feature = "loongarch64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-loongarch64 pub const QEMU_LOONGARCH64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-loongarch64")); -#[cfg(all(feature = "m68k-linux-user", not(docsrs)))] +#[cfg(all(feature = "m68k-linux-user", not(docs_rs)))] /// QEMU binary for qemu-m68k pub const QEMU_M68K_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-m68k")); -#[cfg(all(feature = "microblaze-linux-user", not(docsrs)))] +#[cfg(all(feature = "microblaze-linux-user", not(docs_rs)))] /// QEMU binary for qemu-microblaze pub const QEMU_MICROBLAZE_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-microblaze")); -#[cfg(all(feature = "microblazeel-linux-user", not(docsrs)))] +#[cfg(all(feature = "microblazeel-linux-user", not(docs_rs)))] /// QEMU binary for qemu-microblazeel pub const QEMU_MICROBLAZEEL_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-microblazeel")); -#[cfg(all(feature = "mips-linux-user", not(docsrs)))] +#[cfg(all(feature = "mips-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mips pub const QEMU_MIPS_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mips")); -#[cfg(all(feature = "mips64-linux-user", not(docsrs)))] +#[cfg(all(feature = "mips64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mips64 pub const QEMU_MIPS64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mips64")); -#[cfg(all(feature = "mips64el-linux-user", not(docsrs)))] +#[cfg(all(feature = "mips64el-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mips64el pub const QEMU_MIPS64EL_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mips64el")); -#[cfg(all(feature = "mipsel-linux-user", not(docsrs)))] +#[cfg(all(feature = "mipsel-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mipsel pub const QEMU_MIPSEL_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mipsel")); -#[cfg(all(feature = "mipsn32-linux-user", not(docsrs)))] +#[cfg(all(feature = "mipsn32-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mipsn32 pub const QEMU_MIPSN32_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mipsn32")); -#[cfg(all(feature = "mipsn32el-linux-user", not(docsrs)))] +#[cfg(all(feature = "mipsn32el-linux-user", not(docs_rs)))] /// QEMU binary for qemu-mipsn32el pub const QEMU_MIPSN32EL_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-mipsn32el")); -#[cfg(all(feature = "nios2-linux-user", not(docsrs)))] +#[cfg(all(feature = "nios2-linux-user", not(docs_rs)))] /// QEMU binary for qemu-nios2 pub const QEMU_NIOS2_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-nios2")); -#[cfg(all(feature = "or1k-linux-user", not(docsrs)))] +#[cfg(all(feature = "or1k-linux-user", not(docs_rs)))] /// QEMU binary for qemu-or1k pub const QEMU_OR1K_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-or1k")); -#[cfg(all(feature = "ppc-linux-user", not(docsrs)))] +#[cfg(all(feature = "ppc-linux-user", not(docs_rs)))] /// QEMU binary for qemu-ppc pub const QEMU_PPC_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-ppc")); -#[cfg(all(feature = "ppc64-linux-user", not(docsrs)))] +#[cfg(all(feature = "ppc64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-ppc64 pub const QEMU_PPC64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-ppc64")); -#[cfg(all(feature = "ppc64le-linux-user", not(docsrs)))] +#[cfg(all(feature = "ppc64le-linux-user", not(docs_rs)))] /// QEMU binary for qemu-ppc64le pub const QEMU_PPC64LE_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-ppc64le")); -#[cfg(all(feature = "riscv32-linux-user", not(docsrs)))] +#[cfg(all(feature = "riscv32-linux-user", not(docs_rs)))] /// QEMU binary for qemu-riscv32 pub const QEMU_RISCV32_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-riscv32")); -#[cfg(all(feature = "riscv64-linux-user", not(docsrs)))] +#[cfg(all(feature = "riscv64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-riscv64 pub const QEMU_RISCV64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-riscv64")); -#[cfg(all(feature = "s390x-linux-user", not(docsrs)))] +#[cfg(all(feature = "s390x-linux-user", not(docs_rs)))] /// QEMU binary for qemu-s390x pub const QEMU_S390X_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-s390x")); -#[cfg(all(feature = "sh4-linux-user", not(docsrs)))] +#[cfg(all(feature = "sh4-linux-user", not(docs_rs)))] /// QEMU binary for qemu-sh4 pub const QEMU_SH4_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-sh4")); -#[cfg(all(feature = "sh4eb-linux-user", not(docsrs)))] +#[cfg(all(feature = "sh4eb-linux-user", not(docs_rs)))] /// QEMU binary for qemu-sh4eb pub const QEMU_SH4EB_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-sh4eb")); -#[cfg(all(feature = "sparc-linux-user", not(docsrs)))] +#[cfg(all(feature = "sparc-linux-user", not(docs_rs)))] /// QEMU binary for qemu-sparc pub const QEMU_SPARC_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-sparc")); -#[cfg(all(feature = "sparc32plus-linux-user", not(docsrs)))] +#[cfg(all(feature = "sparc32plus-linux-user", not(docs_rs)))] /// QEMU binary for qemu-sparc32plus pub const QEMU_SPARC32PLUS_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-sparc32plus")); -#[cfg(all(feature = "sparc64-linux-user", not(docsrs)))] +#[cfg(all(feature = "sparc64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-sparc64 pub const QEMU_SPARC64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-sparc64")); -#[cfg(all(feature = "x86_64-linux-user", not(docsrs)))] +#[cfg(all(feature = "x86_64-linux-user", not(docs_rs)))] /// QEMU binary for qemu-x86_64 pub const QEMU_X86_64_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-x86_64")); -#[cfg(all(feature = "xtensa-linux-user", not(docsrs)))] +#[cfg(all(feature = "xtensa-linux-user", not(docs_rs)))] /// QEMU binary for qemu-xtensa pub const QEMU_XTENSA_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-xtensa")); -#[cfg(all(feature = "xtensaeb-linux-user", not(docsrs)))] +#[cfg(all(feature = "xtensaeb-linux-user", not(docs_rs)))] /// QEMU binary for qemu-xtensaeb pub const QEMU_XTENSAEB_LINUX_USER: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-xtensaeb")); -#[cfg(all(feature = "aarch64-softmmu", not(docsrs)))] +#[cfg(all(feature = "aarch64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-aarch64 pub const QEMU_AARCH64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-aarch64")); -#[cfg(all(feature = "alpha-softmmu", not(docsrs)))] +#[cfg(all(feature = "alpha-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-alpha pub const QEMU_ALPHA_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-alpha")); -#[cfg(all(feature = "arm-softmmu", not(docsrs)))] +#[cfg(all(feature = "arm-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-arm pub const QEMU_ARM_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-arm")); -#[cfg(all(feature = "avr-softmmu", not(docsrs)))] +#[cfg(all(feature = "avr-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-avr pub const QEMU_AVR_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-avr")); -#[cfg(all(feature = "cris-softmmu", not(docsrs)))] +#[cfg(all(feature = "cris-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-cris pub const QEMU_CRIS_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-cris")); -#[cfg(all(feature = "hppa-softmmu", not(docsrs)))] +#[cfg(all(feature = "hppa-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-hppa pub const QEMU_HPPA_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-hppa")); -#[cfg(all(feature = "i386-softmmu", not(docsrs)))] +#[cfg(all(feature = "i386-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-i386 pub const QEMU_I386_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-i386")); -#[cfg(all(feature = "loongarch64-softmmu", not(docsrs)))] +#[cfg(all(feature = "loongarch64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-loongarch64 pub const QEMU_LOONGARCH64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-loongarch64")); -#[cfg(all(feature = "m68k-softmmu", not(docsrs)))] +#[cfg(all(feature = "m68k-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-m68k pub const QEMU_M68K_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-m68k")); -#[cfg(all(feature = "microblaze-softmmu", not(docsrs)))] +#[cfg(all(feature = "microblaze-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-microblaze pub const QEMU_MICROBLAZE_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-microblaze")); -#[cfg(all(feature = "microblazeel-softmmu", not(docsrs)))] +#[cfg(all(feature = "microblazeel-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-microblazeel pub const QEMU_MICROBLAZEEL_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-microblazeel")); -#[cfg(all(feature = "mips-softmmu", not(docsrs)))] +#[cfg(all(feature = "mips-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-mips pub const QEMU_MIPS_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-mips")); -#[cfg(all(feature = "mips64-softmmu", not(docsrs)))] +#[cfg(all(feature = "mips64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-mips64 pub const QEMU_MIPS64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-mips64")); -#[cfg(all(feature = "mips64el-softmmu", not(docsrs)))] +#[cfg(all(feature = "mips64el-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-mips64el pub const QEMU_MIPS64EL_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-mips64el")); -#[cfg(all(feature = "mipsel-softmmu", not(docsrs)))] +#[cfg(all(feature = "mipsel-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-mipsel pub const QEMU_MIPSEL_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-mipsel")); -#[cfg(all(feature = "nios2-softmmu", not(docsrs)))] +#[cfg(all(feature = "nios2-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-nios2 pub const QEMU_NIOS2_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-nios2")); -#[cfg(all(feature = "or1k-softmmu", not(docsrs)))] +#[cfg(all(feature = "or1k-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-or1k pub const QEMU_OR1K_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-or1k")); -#[cfg(all(feature = "ppc-softmmu", not(docsrs)))] +#[cfg(all(feature = "ppc-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-ppc pub const QEMU_PPC_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-ppc")); -#[cfg(all(feature = "ppc64-softmmu", not(docsrs)))] +#[cfg(all(feature = "ppc64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-ppc64 pub const QEMU_PPC64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-ppc64")); -#[cfg(all(feature = "riscv32-softmmu", not(docsrs)))] +#[cfg(all(feature = "riscv32-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-riscv32 pub const QEMU_RISCV32_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-riscv32")); -#[cfg(all(feature = "riscv64-softmmu", not(docsrs)))] +#[cfg(all(feature = "riscv64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-riscv64 pub const QEMU_RISCV64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-riscv64")); -#[cfg(all(feature = "rx-softmmu", not(docsrs)))] +#[cfg(all(feature = "rx-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-rx pub const QEMU_RX_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-rx")); -#[cfg(all(feature = "s390x-softmmu", not(docsrs)))] +#[cfg(all(feature = "s390x-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-s390x pub const QEMU_S390X_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-s390x")); -#[cfg(all(feature = "sh4-softmmu", not(docsrs)))] +#[cfg(all(feature = "sh4-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-sh4 pub const QEMU_SH4_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-sh4")); -#[cfg(all(feature = "sh4eb-softmmu", not(docsrs)))] +#[cfg(all(feature = "sh4eb-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-sh4eb pub const QEMU_SH4EB_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-sh4eb")); -#[cfg(all(feature = "sparc-softmmu", not(docsrs)))] +#[cfg(all(feature = "sparc-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-sparc pub const QEMU_SPARC_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-sparc")); -#[cfg(all(feature = "sparc64-softmmu", not(docsrs)))] +#[cfg(all(feature = "sparc64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-sparc64 pub const QEMU_SPARC64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-sparc64")); -#[cfg(all(feature = "tricore-softmmu", not(docsrs)))] +#[cfg(all(feature = "tricore-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-tricore pub const QEMU_TRICORE_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-tricore")); -#[cfg(all(feature = "x86_64-softmmu", not(docsrs)))] +#[cfg(all(feature = "x86_64-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-x86_64 pub const QEMU_X86_64_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-x86_64")); -#[cfg(all(feature = "xtensa-softmmu", not(docsrs)))] +#[cfg(all(feature = "xtensa-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-xtensa pub const QEMU_XTENSA_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-xtensa")); -#[cfg(all(feature = "xtensaeb-softmmu", not(docsrs)))] +#[cfg(all(feature = "xtensaeb-softmmu", not(docs_rs)))] /// QEMU binary for qemu-system-xtensaeb pub const QEMU_XTENSAEB_SOFTMMU: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/qemu/bin/qemu-system-xtensaeb"));