mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 08:03:08 +00:00
commit
06733c3ff5
16
std/coff.zig
16
std/coff.zig
@ -39,6 +39,18 @@ pub const Coff = struct {
|
||||
guid: [16]u8,
|
||||
age: u32,
|
||||
|
||||
pub fn init(allocator: *mem.Allocator, in_file: File) Coff {
|
||||
return Coff{
|
||||
.in_file = in_file,
|
||||
.allocator = allocator,
|
||||
.coff_header = undefined,
|
||||
.pe_header = undefined,
|
||||
.sections = ArrayList(Section).init(allocator),
|
||||
.guid = undefined,
|
||||
.age = undefined,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn loadHeader(self: *Coff) !void {
|
||||
const pe_pointer_offset = 0x3C;
|
||||
|
||||
@ -142,10 +154,10 @@ pub const Coff = struct {
|
||||
}
|
||||
|
||||
pub fn loadSections(self: *Coff) !void {
|
||||
if (self.sections.len != 0)
|
||||
if (self.sections.len == self.coff_header.number_of_sections)
|
||||
return;
|
||||
|
||||
self.sections = ArrayList(Section).init(self.allocator);
|
||||
try self.sections.ensureCapacity(self.coff_header.number_of_sections);
|
||||
|
||||
var file_stream = self.in_file.inStream();
|
||||
const in = &file_stream.stream;
|
||||
|
||||
@ -826,15 +826,7 @@ fn openSelfDebugInfoWindows(allocator: *mem.Allocator) !DebugInfo {
|
||||
defer self_file.close();
|
||||
|
||||
const coff_obj = try allocator.create(coff.Coff);
|
||||
coff_obj.* = coff.Coff{
|
||||
.in_file = self_file,
|
||||
.allocator = allocator,
|
||||
.coff_header = undefined,
|
||||
.pe_header = undefined,
|
||||
.sections = undefined,
|
||||
.guid = undefined,
|
||||
.age = undefined,
|
||||
};
|
||||
coff_obj.* = coff.Coff.init(allocator, self_file);
|
||||
|
||||
var di = DebugInfo{
|
||||
.coff = coff_obj,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user