diff --git a/lib/std/debug/SelfInfo/Elf.zig b/lib/std/debug/SelfInfo/Elf.zig index eb60162dcb405709a7468e97ea4b755aaefe2d90..398a3f95a8933d489f67e3c9958084f2ed4e5660 100644 --- a/lib/std/debug/SelfInfo/Elf.zig +++ b/lib/std/debug/SelfInfo/Elf.zig @@ -518,7 +518,7 @@ const DlIterContext = struct { for (info.phdr[0..info.phnum]) |phdr| { if (phdr.type != .LOAD) continue; try context.si.ranges.append(gpa, .{ - // Overflowing addition handles VSDOs having p_vaddr = 0xffffffffff700000 + // Overflowing addition handles VSDOs having vaddr = 0xffffffffff700000 .start = info.addr +% phdr.vaddr, .len = phdr.memsz, .module_index = module_index, diff --git a/lib/std/elf.zig b/lib/std/elf.zig index d731f44289673ae800438ac34310400ed690ec85..97710d03c175cc48273b8e40c324bff122fc4caa 100644 --- a/lib/std/elf.zig +++ b/lib/std/elf.zig @@ -811,7 +811,7 @@ pub const ProgramHeaderIterator = struct { if (it.index >= it.phnum) return null; defer it.index += 1; - const size: u64 = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr); + const size: u64 = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32.Phdr); const offset = it.phoff + size * it.index; try it.file_reader.seekTo(offset); @@ -832,7 +832,7 @@ pub const ProgramHeaderBufferIterator = struct { if (it.index >= it.phnum) return null; defer it.index += 1; - const size: usize = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr); + const size: usize = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32.Phdr); const offset = @as(usize, @intCast(it.phoff)) + size * it.index; var reader = Io.Reader.fixed(it.buf[offset..]); @@ -846,16 +846,16 @@ pub fn takeProgramHeader(reader: *Io.Reader, is_64: bool, endian: Endian) !Elf64 return phdr; } - const phdr = try reader.takeStruct(Elf32_Phdr, endian); + const phdr = try reader.takeStruct(Elf32.Phdr, endian); return .{ - .p_type = phdr.p_type, - .p_offset = phdr.p_offset, - .p_vaddr = phdr.p_vaddr, - .p_paddr = phdr.p_paddr, - .p_filesz = phdr.p_filesz, - .p_memsz = phdr.p_memsz, - .p_flags = phdr.p_flags, - .p_align = phdr.p_align, + .p_type = @backingInt(phdr.type), + .p_offset = phdr.offset, + .p_vaddr = phdr.vaddr, + .p_paddr = phdr.paddr, + .p_filesz = phdr.filesz, + .p_memsz = phdr.memsz, + .p_flags = @backingInt(phdr.flags), + .p_align = phdr.@"align", }; } diff --git a/src/link/Elf.zig b/src/link/Elf.zig index de53f98bd5d3a83bd548d4c8b7d41b57a60d2cba..3f82771d536a6fcc6265b1b0b366943979d2faa7 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -336,7 +336,7 @@ pub fn createEmpty( // Initialize PT.PHDR program header const p_align: u16 = switch (self.ptr_width) { - .p32 => @alignOf(elf.Elf32_Phdr), + .p32 => @alignOf(elf.Elf32.Phdr), .p64 => @alignOf(elf.Elf64_Phdr), }; const ehsize: u64 = switch (self.ptr_width) { @@ -344,7 +344,7 @@ pub fn createEmpty( .p64 => @sizeOf(elf.Elf64_Ehdr), }; const phsize: u64 = switch (self.ptr_width) { - .p32 => @sizeOf(elf.Elf32_Phdr), + .p32 => @sizeOf(elf.Elf32.Phdr), .p64 => @sizeOf(elf.Elf64_Phdr), }; const max_nphdrs = comptime getMaxNumberOfPhdrs(); @@ -1477,13 +1477,13 @@ fn writePhdrTable(self: *Elf) !void { switch (self.ptr_width) { .p32 => { - const buf = try gpa.alloc(elf.Elf32_Phdr, self.phdrs.items.len); + const buf = try gpa.alloc(elf.Elf32.Phdr, self.phdrs.items.len); defer gpa.free(buf); for (buf, 0..) |*phdr, i| { phdr.* = phdrTo32(self.phdrs.items[i]); if (foreign_endian) { - mem.byteSwapAllFields(elf.Elf32_Phdr, phdr); + mem.byteSwapAllFields(elf.Elf32.Phdr, phdr); } } try self.pwriteAll(@ptrCast(buf), phdr_table.p_offset); @@ -1622,7 +1622,7 @@ pub fn writeElfHeader(self: *Elf) !void { index += 2; const e_phentsize: u16 = switch (self.ptr_width) { - .p32 => @sizeOf(elf.Elf32_Phdr), + .p32 => @sizeOf(elf.Elf32.Phdr), .p64 => @sizeOf(elf.Elf64_Phdr), }; mem.writeInt(u16, hdr_buf[index..][0..2], e_phentsize, endian); @@ -2672,7 +2672,7 @@ fn allocatePhdrTable(self: *Elf) error{OutOfMemory}!void { .p64 => @sizeOf(elf.Elf64_Ehdr), }; const phsize: u64 = switch (self.ptr_width) { - .p32 => @sizeOf(elf.Elf32_Phdr), + .p32 => @sizeOf(elf.Elf32.Phdr), .p64 => @sizeOf(elf.Elf64_Phdr), }; const needed_size = self.phdrs.items.len * phsize; @@ -3347,16 +3347,16 @@ pub fn archPtrWidthBytes(self: Elf) u8 { return @intCast(@divExact(self.getTarget().ptrBitWidth(), 8)); } -fn phdrTo32(phdr: elf.Elf64_Phdr) elf.Elf32_Phdr { +fn phdrTo32(phdr: elf.Elf64_Phdr) elf.Elf32.Phdr { return .{ - .p_type = phdr.p_type, - .p_flags = phdr.p_flags, - .p_offset = @as(u32, @intCast(phdr.p_offset)), - .p_vaddr = @as(u32, @intCast(phdr.p_vaddr)), - .p_paddr = @as(u32, @intCast(phdr.p_paddr)), - .p_filesz = @as(u32, @intCast(phdr.p_filesz)), - .p_memsz = @as(u32, @intCast(phdr.p_memsz)), - .p_align = @as(u32, @intCast(phdr.p_align)), + .type = @fromBackingInt(phdr.p_type), + .flags = @fromBackingInt(phdr.p_flags), + .offset = @intCast(phdr.p_offset), + .vaddr = @intCast(phdr.p_vaddr), + .paddr = @intCast(phdr.p_paddr), + .filesz = @intCast(phdr.p_filesz), + .memsz = @intCast(phdr.p_memsz), + .@"align" = @intCast(phdr.p_align), }; }