Skip to content

Commit f3309a9

Browse files
authored
Merge pull request #25819 from jacobly0/elfv2-emit-obj
2 parents bdbfc7d + 57889ca commit f3309a9

File tree

10 files changed

+977
-580
lines changed

10 files changed

+977
-580
lines changed

lib/std/c.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3971,7 +3971,7 @@ pub const dl_phdr_info = switch (native_os) {
39713971
/// Module name.
39723972
name: ?[*:0]const u8,
39733973
/// Pointer to module's phdr.
3974-
phdr: [*]std.elf.Phdr,
3974+
phdr: [*]std.elf.ElfN.Phdr,
39753975
/// Number of entries in phdr.
39763976
phnum: u16,
39773977
/// Total number of loads.
@@ -3984,7 +3984,7 @@ pub const dl_phdr_info = switch (native_os) {
39843984
.illumos => extern struct {
39853985
addr: std.elf.Addr,
39863986
name: ?[*:0]const u8,
3987-
phdr: [*]std.elf.Phdr,
3987+
phdr: [*]std.elf.ElfN.Phdr,
39883988
phnum: std.elf.Half,
39893989
/// Incremented when a new object is mapped into the process.
39903990
adds: u64,
@@ -3995,7 +3995,7 @@ pub const dl_phdr_info = switch (native_os) {
39953995
.openbsd, .haiku, .dragonfly, .netbsd, .serenity => extern struct {
39963996
addr: usize,
39973997
name: ?[*:0]const u8,
3998-
phdr: [*]std.elf.Phdr,
3998+
phdr: [*]std.elf.ElfN.Phdr,
39993999
phnum: std.elf.Half,
40004000
},
40014001
else => void,

lib/std/debug/SelfInfo/Elf.zig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -441,11 +441,11 @@ const DlIterContext = struct {
441441

442442
// Populate `build_id` and `gnu_eh_frame`
443443
for (info.phdr[0..info.phnum]) |phdr| {
444-
switch (phdr.p_type) {
445-
std.elf.PT_NOTE => {
444+
switch (phdr.type) {
445+
.NOTE => {
446446
// Look for .note.gnu.build-id
447-
const segment_ptr: [*]const u8 = @ptrFromInt(info.addr + phdr.p_vaddr);
448-
var r: std.Io.Reader = .fixed(segment_ptr[0..phdr.p_memsz]);
447+
const segment_ptr: [*]const u8 = @ptrFromInt(info.addr + phdr.vaddr);
448+
var r: std.Io.Reader = .fixed(segment_ptr[0..phdr.memsz]);
449449
const name_size = r.takeInt(u32, native_endian) catch continue;
450450
const desc_size = r.takeInt(u32, native_endian) catch continue;
451451
const note_type = r.takeInt(u32, native_endian) catch continue;
@@ -455,9 +455,9 @@ const DlIterContext = struct {
455455
const desc = r.take(desc_size) catch continue;
456456
build_id = desc;
457457
},
458-
std.elf.PT_GNU_EH_FRAME => {
459-
const segment_ptr: [*]const u8 = @ptrFromInt(info.addr + phdr.p_vaddr);
460-
gnu_eh_frame = segment_ptr[0..phdr.p_memsz];
458+
std.elf.PT.GNU_EH_FRAME => {
459+
const segment_ptr: [*]const u8 = @ptrFromInt(info.addr + phdr.vaddr);
460+
gnu_eh_frame = segment_ptr[0..phdr.memsz];
461461
},
462462
else => {},
463463
}
@@ -478,11 +478,11 @@ const DlIterContext = struct {
478478
});
479479

480480
for (info.phdr[0..info.phnum]) |phdr| {
481-
if (phdr.p_type != std.elf.PT_LOAD) continue;
481+
if (phdr.type != .LOAD) continue;
482482
try context.si.ranges.append(gpa, .{
483483
// Overflowing addition handles VSDOs having p_vaddr = 0xffffffffff700000
484-
.start = info.addr +% phdr.p_vaddr,
485-
.len = phdr.p_memsz,
484+
.start = info.addr +% phdr.vaddr,
485+
.len = phdr.memsz,
486486
.module_index = module_index,
487487
});
488488
}

lib/std/dynamic_library.zig

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ pub fn get_DYNAMIC() ?[*]const elf.Dyn {
9292
});
9393
}
9494

95-
pub fn linkmap_iterator(phdrs: []const elf.Phdr) error{InvalidExe}!LinkMap.Iterator {
96-
_ = phdrs;
95+
pub fn linkmap_iterator() error{InvalidExe}!LinkMap.Iterator {
9796
const _DYNAMIC = get_DYNAMIC() orelse {
9897
// No PT_DYNAMIC means this is a statically-linked non-PIE program.
9998
return .{ .current = null };

0 commit comments

Comments
 (0)