#![allow(clippy::uninlined_format_args)]
pub fn create_test_elf() -> Vec<u8> {
let mut data = vec![0u8; 2048];
let elf_header = [
0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x02, 0x00, 0x40, 0x00, 0x04, 0x00, 0x03, 0x00, ];
data[..64].copy_from_slice(&elf_header);
let ph_load = [
0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ];
let ph_gnu_stack = [0u8; 56];
data[64..120].copy_from_slice(&ph_load);
data[120..176].copy_from_slice(&ph_gnu_stack);
let sh_null = [0u8; 64];
let sh_text = [
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
];
let sh_shstrtab = [0u8; 64];
data[1024..1088].copy_from_slice(&sh_null);
data[1088..1152].copy_from_slice(&sh_text);
data[1152..1216].copy_from_slice(&sh_shstrtab);
let shstrtab = b"\0.text\0shstrtab\0";
data[768..768 + shstrtab.len()].copy_from_slice(shstrtab);
let instructions = [
0x48, 0x89, 0xe5, 0x48, 0x83, 0xec, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4,
0x10, 0x5d, 0xc3,
];
data[512..512 + instructions.len()].copy_from_slice(&instructions);
data
}