| 249 | |
| 250 | impl Header { |
| 251 | fn parse(data: &[u8], endianness: Endianness) -> Result<Self> { |
| 252 | ensure!(HDRR_SIZE <= data.len(), ".mdebug header truncated"); |
| 253 | let mut cursor = 0; |
| 254 | let magic = read_u16(data, &mut cursor, endianness)?; |
| 255 | let _vstamp = read_u16(data, &mut cursor, endianness)?; |
| 256 | ensure!(magic == 0x7009, "unexpected .mdebug magic: {magic:#x}"); |
| 257 | let _iline_max = read_u32(data, &mut cursor, endianness)?; |
| 258 | let _cb_line = read_u32(data, &mut cursor, endianness)?; |
| 259 | let cb_line_offset = read_u32(data, &mut cursor, endianness)?; |
| 260 | let _idn_max = read_u32(data, &mut cursor, endianness)?; |
| 261 | let _cb_dn_offset = read_u32(data, &mut cursor, endianness)?; |
| 262 | let _ipd_max = read_u32(data, &mut cursor, endianness)?; |
| 263 | let cb_pd_offset = read_u32(data, &mut cursor, endianness)?; |
| 264 | let isym_max = read_u32(data, &mut cursor, endianness)?; |
| 265 | let cb_sym_offset = read_u32(data, &mut cursor, endianness)?; |
| 266 | let _iopt_max = read_u32(data, &mut cursor, endianness)?; |
| 267 | let _cb_opt_offset = read_u32(data, &mut cursor, endianness)?; |
| 268 | let _iaux_max = read_u32(data, &mut cursor, endianness)?; |
| 269 | let _cb_aux_offset = read_u32(data, &mut cursor, endianness)?; |
| 270 | let _iss_max = read_u32(data, &mut cursor, endianness)?; |
| 271 | let _cb_ss_offset = read_u32(data, &mut cursor, endianness)?; |
| 272 | let _iss_ext_max = read_u32(data, &mut cursor, endianness)?; |
| 273 | let _cb_ss_ext_offset = read_u32(data, &mut cursor, endianness)?; |
| 274 | let ifd_max = read_u32(data, &mut cursor, endianness)?; |
| 275 | let cb_fd_offset = read_u32(data, &mut cursor, endianness)?; |
| 276 | let _crfd = read_u32(data, &mut cursor, endianness)?; |
| 277 | let _cb_rfd_offset = read_u32(data, &mut cursor, endianness)?; |
| 278 | let _iext_max = read_u32(data, &mut cursor, endianness)?; |
| 279 | let _cb_ext_offset = read_u32(data, &mut cursor, endianness)?; |
| 280 | |
| 281 | Ok(Header { cb_line_offset, cb_pd_offset, cb_sym_offset, cb_fd_offset, isym_max, ifd_max }) |
| 282 | } |
| 283 | } |
| 284 | |
| 285 | #[derive(Clone, Copy)] |