authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-13 19:01:00-04:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-23 00:27:17-04:00
loge2c587ae54cba1d2b13b5cbef8530e13fab04c7f
tree2abd1c320527b508f9d99f498a29d98e62ca408d
parentb981b7975dad40e4e779f848530bf80e54b7cde4

objdump: when redacting ordinals, show weak external alias as relative to the WEAK_EXTERNAL symbol

objdump: dump the filename for file aux symbols test/link: remove the text attribute on the snapshots folder to avoid changing snapshot line endings

4 files changed, 16 insertions(+), 11 deletions(-)

lib/compiler/objdump.zig+13-9
...@@ -1037,21 +1037,25 @@ const coff = struct {...@@ -1037,21 +1037,25 @@ const coff = struct {
1037 .{ weak_external.tag_index, symbol_i },1037 .{ weak_external.tag_index, symbol_i },
1038 );1038 );
10391039
1040 try w.print(" Weak External [falls back to {x:0>8} via {t}]", .{1040 if (d.redacted(.ord))
1041 weak_external.tag_index,1041 try w.print(" Weak External [falls back to relative ordinal {x:0>8} via {t}]", .{
1042 weak_external.flag,1042 @as(i64, weak_external.tag_index) - symbol_i,
1043 });1043 weak_external.flag,
1044 })
1045 else
1046 try w.print(" Weak External [falls back to ordinal {x:0>8} via {t}]", .{
1047 weak_external.tag_index,
1048 weak_external.flag,
1049 });
1044 } else if (symbol.storage_class == .FILE) {1050 } else if (symbol.storage_class == .FILE) {
1045 if (!std.mem.eql(u8, name, ".file")) {1051 if (!std.mem.eql(u8, name, ".file")) {
1046 try w.print(" !! unexpected symbol name '{s}' for file symbol 0x{x}", .{ name, symbol_i });1052 try w.print(" !! unexpected symbol name '{s}' for file symbol 0x{x}", .{ name, symbol_i });
1047 continue;1053 continue;
1048 }1054 }
10491055
1050 var file: std.coff.FileDefinition = undefined;1056 const filename = std.mem.sliceTo(aux_symbols, 0);
1051 @memcpy(std.mem.asBytes(&file)[0..symbol_size], aux_symbols[0..symbol_size]);1057 try w.print(" File '{s}'", .{filename});
10521058 break;
1053 // TODO
1054 _ = file.getFileName();
1055 } else if (symbol.storage_class == .STATIC and1059 } else if (symbol.storage_class == .STATIC and
1056 symbol.type == std.coff.SymType{1060 symbol.type == std.coff.SymType{
1057 .complex_type = .NULL,1061 .complex_type = .NULL,
test/link/snapshots/.gitattributes created+1
...@@ -0,0 +1 @@
1* -text
test/link/snapshots/static-lib.llvm.dmp+1-1
...@@ -11,5 +11,5 @@ xxxx 00000000 2 NULL EXTERNAL | foo_strong...@@ -11,5 +11,5 @@ xxxx 00000000 2 NULL EXTERNAL | foo_strong
11xxxx 00000000 2 NULL EXTERNAL | foo_strong_alias11xxxx 00000000 2 NULL EXTERNAL | foo_strong_alias
12xxxx 00000008 2 NULL EXTERNAL | foo_array12xxxx 00000008 2 NULL EXTERNAL | foo_array
13xxxx 00000000 UNDEF NULL WEAK_EXTERNAL | fooWeak13xxxx 00000000 UNDEF NULL WEAK_EXTERNAL | fooWeak
14 | Weak External [falls back to 00000025 via SEARCH_ALIAS]14 | Weak External [falls back to relative ordinal 000000+2 via SEARCH_ALIAS]
15xxxx 00000000 1 NULL() EXTERNAL | .weak.fooWeak.default.foo_strong15xxxx 00000000 1 NULL() EXTERNAL | .weak.fooWeak.default.foo_strong
test/link/snapshots/static-lib.no-llvm.dmp+1-1
...@@ -9,4 +9,4 @@ xxxx 00000000 2 NULL EXTERNAL | foo_strong...@@ -9,4 +9,4 @@ xxxx 00000000 2 NULL EXTERNAL | foo_strong
9xxxx 00000000 2 NULL EXTERNAL | foo_strong_alias9xxxx 00000000 2 NULL EXTERNAL | foo_strong_alias
10xxxx 00000010 2 NULL EXTERNAL | foo_array10xxxx 00000010 2 NULL EXTERNAL | foo_array
11xxxx 00000000 UNDEF NULL() WEAK_EXTERNAL | fooWeak11xxxx 00000000 UNDEF NULL() WEAK_EXTERNAL | fooWeak
12 | Weak External [falls back to 0000000d via SEARCH_ALIAS]12 | Weak External [falls back to relative ordinal 000000-4 via SEARCH_ALIAS]