use object::read::macho::MachHeader; use object::{macho, write, Architecture, BinaryFormat, Endianness}; #[test] // Test that segment size is valid when the first section needs alignment. fn issue_286_segment_file_size() { let mut object = write::Object::new( BinaryFormat::MachO, Architecture::X86_64, Endianness::Little, ); let text = object.section_id(write::StandardSection::Text); object.append_section_data(text, &[1; 30], 0x1000); let bytes = &*object.write().unwrap(); let header = macho::MachHeader64::parse(bytes, 0).unwrap(); let endian: Endianness = header.endian().unwrap(); let mut commands = header.load_commands(endian, bytes, 0).unwrap(); let command = commands.next().unwrap().unwrap(); let (segment, _) = command.segment_64().unwrap().unwrap(); assert_eq!(segment.vmsize.get(endian), 30); assert_eq!(segment.filesize.get(endian), 30); }