use object::{pe, read, Object, ObjectSection}; use std::fs; use std::path::PathBuf; #[cfg(feature = "coff")] #[test] fn coff_extended_relocations() { let path_to_obj: PathBuf = ["testfiles", "coff", "relocs_overflow.o"].iter().collect(); let contents = fs::read(&path_to_obj).expect("Could not read relocs_overflow.o"); let file = read::coff::CoffFile::<_>::parse(&contents[..]).expect("Could not parse relocs_overflow.o"); let code_section = file .section_by_name(".text") .expect("Could not find .text section in relocs_overflow.o"); match code_section.flags() { object::SectionFlags::Coff { characteristics } => { assert!(characteristics & pe::IMAGE_SCN_LNK_NRELOC_OVFL != 0) } _ => panic!("Invalid section flags flavour."), }; let relocations = code_section.relocations().collect::>(); assert_eq!(relocations.len(), 65536); }