use super::*; #[cfg(feature = "std_detect_file_io")] mod auxv_from_file { use super::auxvec::auxv_from_file; use super::*; // The baseline hwcaps used in the (artificial) auxv test files. fn baseline_hwcaps() -> AtHwcap { AtHwcap { fp: true, asimd: true, aes: true, pmull: true, sha1: true, sha2: true, crc32: true, atomics: true, fphp: true, asimdhp: true, asimdrdm: true, lrcpc: true, dcpop: true, asimddp: true, ssbs: true, ..AtHwcap::default() } } #[test] fn linux_empty_hwcap2_aarch64() { let file = concat!( env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv" ); println!("file: {file}"); let v = auxv_from_file(file).unwrap(); println!("HWCAP : 0x{:0x}", v.hwcap); println!("HWCAP2: 0x{:0x}", v.hwcap2); assert_eq!(AtHwcap::from(v), baseline_hwcaps()); } #[test] fn linux_no_hwcap2_aarch64() { let file = concat!( env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-no-hwcap2-aarch64.auxv" ); println!("file: {file}"); let v = auxv_from_file(file).unwrap(); println!("HWCAP : 0x{:0x}", v.hwcap); println!("HWCAP2: 0x{:0x}", v.hwcap2); assert_eq!(AtHwcap::from(v), baseline_hwcaps()); } #[test] fn linux_hwcap2_aarch64() { let file = concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv"); println!("file: {file}"); let v = auxv_from_file(file).unwrap(); println!("HWCAP : 0x{:0x}", v.hwcap); println!("HWCAP2: 0x{:0x}", v.hwcap2); assert_eq!( AtHwcap::from(v), AtHwcap { // Some other HWCAP bits. paca: true, pacg: true, // HWCAP2-only bits. dcpodp: true, frint: true, rng: true, bti: true, mte: true, ..baseline_hwcaps() } ); } }