aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-03-26 14:33:31 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-03-27 20:53:06 +0200
commit4ca9b4c44a4fbe2b64b11d2c8a951c2c3e961619 (patch)
tree210ed90046909bef6a650a0f74fc94935212f513
parent1a80315836f77e38eee3e4c0a646b82febbc3604 (diff)
downloadzig-4ca9b4c44a4fbe2b64b11d2c8a951c2c3e961619.tar.gz
zig-4ca9b4c44a4fbe2b64b11d2c8a951c2c3e961619.zip
dwarf: move DbgInfoTypeRelocsTable into Dwarf module
-rw-r--r--src/codegen.zig31
-rw-r--r--src/link.zig38
-rw-r--r--src/link/Dwarf.zig22
-rw-r--r--src/link/Elf.zig2
4 files changed, 45 insertions, 48 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 8924f13e17..f4803c77ea 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -1,26 +1,25 @@
const std = @import("std");
+const build_options = @import("build_options");
const builtin = @import("builtin");
+const assert = std.debug.assert;
+const leb128 = std.leb;
+const link = @import("link.zig");
+const log = std.log.scoped(.codegen);
const mem = std.mem;
const math = std.math;
-const assert = std.debug.assert;
+const trace = @import("tracy.zig").trace;
+
const Air = @import("Air.zig");
-const Zir = @import("Zir.zig");
-const Liveness = @import("Liveness.zig");
-const Type = @import("type.zig").Type;
-const Value = @import("value.zig").Value;
-const TypedValue = @import("TypedValue.zig");
-const link = @import("link.zig");
-const Module = @import("Module.zig");
+const Allocator = mem.Allocator;
const Compilation = @import("Compilation.zig");
const ErrorMsg = Module.ErrorMsg;
+const Liveness = @import("Liveness.zig");
+const Module = @import("Module.zig");
const Target = std.Target;
-const Allocator = mem.Allocator;
-const trace = @import("tracy.zig").trace;
-const DW = std.dwarf;
-const leb128 = std.leb;
-const log = std.log.scoped(.codegen);
-const build_options = @import("build_options");
-const RegisterManager = @import("register_manager.zig").RegisterManager;
+const Type = @import("type.zig").Type;
+const TypedValue = @import("TypedValue.zig");
+const Value = @import("value.zig").Value;
+const Zir = @import("Zir.zig");
pub const FnResult = union(enum) {
/// The `code` parameter passed to `generateSymbol` has the value appended.
@@ -46,7 +45,7 @@ pub const DebugInfoOutput = union(enum) {
dwarf: struct {
dbg_line: *std.ArrayList(u8),
dbg_info: *std.ArrayList(u8),
- dbg_info_type_relocs: *link.File.DbgInfoTypeRelocsTable,
+ dbg_info_type_relocs: *link.File.Dwarf.DbgInfoTypeRelocsTable,
},
/// the plan9 debuginfo output is a bytecode with 4 opcodes
/// assume all numbers/variables are bytes
diff --git a/src/link.zig b/src/link.zig
index 0fd6797153..7c135a7405 100644
--- a/src/link.zig
+++ b/src/link.zig
@@ -1,22 +1,22 @@
const std = @import("std");
+const build_options = @import("build_options");
const builtin = @import("builtin");
-const mem = std.mem;
-const Allocator = std.mem.Allocator;
+const assert = std.debug.assert;
const fs = std.fs;
+const mem = std.mem;
const log = std.log.scoped(.link);
-const assert = std.debug.assert;
+const trace = @import("tracy.zig").trace;
+const wasi_libc = @import("wasi_libc.zig");
+const Air = @import("Air.zig");
+const Allocator = std.mem.Allocator;
+const Cache = @import("Cache.zig");
const Compilation = @import("Compilation.zig");
+const LibCInstallation = @import("libc_installation.zig").LibCInstallation;
+const Liveness = @import("Liveness.zig");
const Module = @import("Module.zig");
-const trace = @import("tracy.zig").trace;
const Package = @import("Package.zig");
const Type = @import("type.zig").Type;
-const Cache = @import("Cache.zig");
-const build_options = @import("build_options");
-const LibCInstallation = @import("libc_installation.zig").LibCInstallation;
-const wasi_libc = @import("wasi_libc.zig");
-const Air = @import("Air.zig");
-const Liveness = @import("Liveness.zig");
const TypedValue = @import("TypedValue.zig");
pub const SystemLib = struct {
@@ -245,24 +245,6 @@ pub const File = struct {
nvptx: void,
};
- /// For DWARF .debug_info.
- pub const DbgInfoTypeRelocsTable = std.ArrayHashMapUnmanaged(
- Type,
- DbgInfoTypeReloc,
- Type.HashContext32,
- true,
- );
-
- /// For DWARF .debug_info.
- pub const DbgInfoTypeReloc = struct {
- /// Offset from `TextBlock.dbg_info_off` (the buffer that is local to a Decl).
- /// This is where the .debug_info tag for the type is.
- off: u32,
- /// Offset from `TextBlock.dbg_info_off` (the buffer that is local to a Decl).
- /// List of DW.AT.type / DW.FORM.ref4 that points to the type.
- relocs: std.ArrayListUnmanaged(u32),
- };
-
/// Attempts incremental linking, if the file already exists. If
/// incremental linking fails, falls back to truncating the file and
/// rewriting it. A malicious file is detected as incremental link failure
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig
index b2848c8e1e..199bf9df61 100644
--- a/src/link/Dwarf.zig
+++ b/src/link/Dwarf.zig
@@ -82,6 +82,22 @@ pub const SrcFn = struct {
pub const PtrWidth = enum { p32, p64 };
+pub const DbgInfoTypeRelocsTable = std.ArrayHashMapUnmanaged(
+ Type,
+ DbgInfoTypeReloc,
+ Type.HashContext32,
+ true,
+);
+
+pub const DbgInfoTypeReloc = struct {
+ /// Offset from `TextBlock.dbg_info_off` (the buffer that is local to a Decl).
+ /// This is where the .debug_info tag for the type is.
+ off: u32,
+ /// Offset from `TextBlock.dbg_info_off` (the buffer that is local to a Decl).
+ /// List of DW.AT.type / DW.FORM.ref4 that points to the type.
+ relocs: std.ArrayListUnmanaged(u32),
+};
+
pub const abbrev_compile_unit = 1;
pub const abbrev_subprogram = 2;
pub const abbrev_subprogram_retvoid = 3;
@@ -138,7 +154,7 @@ pub fn deinit(self: *Dwarf) void {
pub const DeclDebugBuffers = struct {
dbg_line_buffer: std.ArrayList(u8),
dbg_info_buffer: std.ArrayList(u8),
- dbg_info_type_relocs: File.DbgInfoTypeRelocsTable,
+ dbg_info_type_relocs: DbgInfoTypeRelocsTable,
};
pub fn initDeclDebugInfo(self: *Dwarf, decl: *Module.Decl) !DeclDebugBuffers {
@@ -153,7 +169,7 @@ pub fn initDeclDebugInfo(self: *Dwarf, decl: *Module.Decl) !DeclDebugBuffers {
const gpa = self.allocator;
var dbg_line_buffer = std.ArrayList(u8).init(gpa);
var dbg_info_buffer = std.ArrayList(u8).init(gpa);
- var dbg_info_type_relocs: File.DbgInfoTypeRelocsTable = .{};
+ var dbg_info_type_relocs: DbgInfoTypeRelocsTable = .{};
assert(decl.has_tv);
@@ -890,7 +906,7 @@ fn addDbgInfoType(
module: *Module,
ty: Type,
dbg_info_buffer: *std.ArrayList(u8),
- dbg_info_type_relocs: *File.DbgInfoTypeRelocsTable,
+ dbg_info_type_relocs: *DbgInfoTypeRelocsTable,
nested_ref4_relocs: *std.ArrayList(u32),
) error{OutOfMemory}!void {
const target = self.target;
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 676952ea24..dda2841db8 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -2232,7 +2232,7 @@ pub fn freeDecl(self: *Elf, decl: *Module.Decl) void {
}
}
-fn deinitRelocs(gpa: Allocator, table: *File.DbgInfoTypeRelocsTable) void {
+fn deinitRelocs(gpa: Allocator, table: *link.File.Dwarf.DbgInfoTypeRelocsTable) void {
for (table.values()) |*value| {
value.relocs.deinit(gpa);
}