| ... | ... | @@ -481,13 +481,30 @@ pub const NativeTargetInfo = struct { |
| 481 | 481 | }; |
| 482 | 482 | } |
| 483 | 483 | |
| 484 | pub const AbiAndDynamicLinkerFromFileError = error{ |
| 485 | FileSystem, |
| 486 | SystemResources, |
| 487 | SymLinkLoop, |
| 488 | ProcessFdQuotaExceeded, |
| 489 | SystemFdQuotaExceeded, |
| 490 | UnableToReadElfFile, |
| 491 | InvalidElfClass, |
| 492 | InvalidElfVersion, |
| 493 | InvalidElfEndian, |
| 494 | InvalidElfFile, |
| 495 | InvalidElfMagic, |
| 496 | Unexpected, |
| 497 | UnexpectedEndOfFile, |
| 498 | NameTooLong, |
| 499 | }; |
| 500 | |
| 484 | 501 | pub fn abiAndDynamicLinkerFromFile( |
| 485 | 502 | file: fs.File, |
| 486 | 503 | cpu: Target.Cpu, |
| 487 | 504 | os: Target.Os, |
| 488 | 505 | ld_info_list: []const LdInfo, |
| 489 | 506 | cross_target: CrossTarget, |
| 490 | | ) !NativeTargetInfo { |
| 507 | ) AbiAndDynamicLinkerFromFileError!NativeTargetInfo { |
| 491 | 508 | var hdr_buf: [@sizeOf(elf.Elf64_Ehdr)]u8 align(@alignOf(elf.Elf64_Ehdr)) = undefined; |
| 492 | 509 | _ = try preadFull(file, &hdr_buf, 0, hdr_buf.len); |
| 493 | 510 | const hdr32 = @ptrCast(*elf.Elf32_Ehdr, &hdr_buf); |