()
| 172 | |
| 173 | #[test] |
| 174 | fn elf_program_headers_keep_page_alignment() { |
| 175 | let (_assembled, elf) = compile_sample(); |
| 176 | let phoff = read_u64(&elf, 32) as usize; |
| 177 | let phentsize = read_u16(&elf, 54) as usize; |
| 178 | let phnum = read_u16(&elf, 56) as usize; |
| 179 | |
| 180 | assert!(phnum > 0, "expected at least one PT_LOAD segment"); |
| 181 | |
| 182 | for i in 0..phnum { |
| 183 | let base = phoff + i * phentsize; |
| 184 | let p_type = read_u32(&elf, base); |
| 185 | if p_type != 1 { |
| 186 | continue; |
| 187 | } |
| 188 | let p_offset = read_u64(&elf, base + 8); |
| 189 | let p_vaddr = read_u64(&elf, base + 16); |
| 190 | let p_filesz = read_u64(&elf, base + 32); |
| 191 | let p_memsz = read_u64(&elf, base + 40); |
| 192 | |
| 193 | assert_eq!(p_offset % 0x1000, p_vaddr % 0x1000, "PT_LOAD segment {i} is not page-aligned"); |
| 194 | assert!(p_filesz <= p_memsz, "PT_LOAD segment {i} has filesz > memsz"); |
| 195 | } |
| 196 | } |
| 197 | |
| 198 | #[test] |
| 199 | fn elf_symbol_table_marks_globals_and_locals() { |
nothing calls this directly
no test coverage detected