authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-23 21:42:39+01:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-23 21:50:02+01:00
logceb2c030c43da90ac38e67388e934a3ce76d25a7
treeaab51a5c4c0f93ba83b2eed486f1135cd4aa3ce9
parenta8708dbf3bf0500e63d12a29239978e9596809ee

llvm: revert debug file path resolution changes

Fixes test-stack-traces on windows.

1 files changed, 21 insertions(+), 3 deletions(-)

src/codegen/llvm.zig+21-3
...@@ -779,6 +779,7 @@ pub const Object = struct {...@@ -779,6 +779,7 @@ pub const Object = struct {
779 debug_enums: std.ArrayListUnmanaged(Builder.Metadata),779 debug_enums: std.ArrayListUnmanaged(Builder.Metadata),
780 debug_globals: std.ArrayListUnmanaged(Builder.Metadata),780 debug_globals: std.ArrayListUnmanaged(Builder.Metadata),
781781
782 debug_file_map: std.AutoHashMapUnmanaged(*const Module.File, Builder.Metadata),
782 debug_type_map: std.AutoHashMapUnmanaged(Type, Builder.Metadata),783 debug_type_map: std.AutoHashMapUnmanaged(Type, Builder.Metadata),
783784
784 debug_unresolved_namespace_scopes: std.AutoArrayHashMapUnmanaged(InternPool.NamespaceIndex, Builder.Metadata),785 debug_unresolved_namespace_scopes: std.AutoArrayHashMapUnmanaged(InternPool.NamespaceIndex, Builder.Metadata),
...@@ -961,6 +962,7 @@ pub const Object = struct {...@@ -961,6 +962,7 @@ pub const Object = struct {
961 .debug_globals_fwd_ref = debug_globals_fwd_ref,962 .debug_globals_fwd_ref = debug_globals_fwd_ref,
962 .debug_enums = .{},963 .debug_enums = .{},
963 .debug_globals = .{},964 .debug_globals = .{},
965 .debug_file_map = .{},
964 .debug_type_map = .{},966 .debug_type_map = .{},
965 .debug_unresolved_namespace_scopes = .{},967 .debug_unresolved_namespace_scopes = .{},
966 .target = target,968 .target = target,
...@@ -978,8 +980,9 @@ pub const Object = struct {...@@ -978,8 +980,9 @@ pub const Object = struct {
978980
979 pub fn deinit(self: *Object) void {981 pub fn deinit(self: *Object) void {
980 const gpa = self.gpa;982 const gpa = self.gpa;
981 self.debug_globals.deinit(gpa);
982 self.debug_enums.deinit(gpa);983 self.debug_enums.deinit(gpa);
984 self.debug_globals.deinit(gpa);
985 self.debug_file_map.deinit(gpa);
983 self.debug_type_map.deinit(gpa);986 self.debug_type_map.deinit(gpa);
984 self.debug_unresolved_namespace_scopes.deinit(gpa);987 self.debug_unresolved_namespace_scopes.deinit(gpa);
985 self.decl_map.deinit(gpa);988 self.decl_map.deinit(gpa);
...@@ -1922,10 +1925,25 @@ pub const Object = struct {...@@ -1922,10 +1925,25 @@ pub const Object = struct {
1922 }1925 }
19231926
1924 fn getDebugFile(o: *Object, file: *const Module.File) Allocator.Error!Builder.Metadata {1927 fn getDebugFile(o: *Object, file: *const Module.File) Allocator.Error!Builder.Metadata {
1925 return try o.builder.debugFile(1928 const gpa = o.gpa;
1929 const gop = try o.debug_file_map.getOrPut(gpa, file);
1930 errdefer assert(o.debug_file_map.remove(file));
1931 if (gop.found_existing) return gop.value_ptr.*;
1932 gop.value_ptr.* = try o.builder.debugFile(
1926 try o.builder.metadataString(std.fs.path.basename(file.sub_file_path)),1933 try o.builder.metadataString(std.fs.path.basename(file.sub_file_path)),
1927 if (std.fs.path.dirname(file.sub_file_path)) |dirname| try o.builder.metadataString(dirname) else .none,1934 dir_path: {
1935 const sub_path = std.fs.path.dirname(file.sub_file_path) orelse "";
1936 const dir_path = try file.mod.root.joinString(gpa, sub_path);
1937 defer gpa.free(dir_path);
1938 if (std.fs.path.isAbsolute(dir_path))
1939 break :dir_path try o.builder.metadataString(dir_path);
1940 var abs_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined;
1941 const abs_path = std.fs.realpath(dir_path, &abs_buffer) catch
1942 break :dir_path try o.builder.metadataString(dir_path);
1943 break :dir_path try o.builder.metadataString(abs_path);
1944 },
1928 );1945 );
1946 return gop.value_ptr.*;
1929 }1947 }
19301948
1931 pub fn lowerDebugType(1949 pub fn lowerDebugType(