| 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::<Vec<_>>(); |
| assert_eq!(relocations.len(), 65536); |
| } |