| author | |
| committer | |
| log | 26da7c8207ff73927bcc8d5608703175074e266f |
| tree | 0adac21b5b90faf37e02a3f4d3ea2b7fa7463495 |
| parent | 04f8f8ad3e5c00927a5eb64e03b5381a988ed472 |
4 files changed, 24 insertions(+), 8 deletions(-)
src/link/Elf/LinkerDefined.zig+7-2| ... | ... | @@ -447,8 +447,13 @@ fn formatSymtab( |
| 447 | 447 | const self = ctx.self; |
| 448 | 448 | const elf_file = ctx.elf_file; |
| 449 | 449 | try writer.writeAll(" globals\n"); |
| 450 | for (self.symbols.items) |sym| { | |
| 451 | try writer.print(" {}\n", .{sym.fmt(elf_file)}); | |
| 450 | for (self.symbols.items, 0..) |sym, i| { | |
| 451 | const ref = self.resolveSymbol(@intCast(i), elf_file); | |
| 452 | if (elf_file.symbol(ref)) |ref_sym| { | |
| 453 | try writer.print(" {}\n", .{ref_sym.fmt(elf_file)}); | |
| 454 | } else { | |
| 455 | try writer.print(" {s} : unclaimed\n", .{sym.name(elf_file)}); | |
| 456 | } | |
| 452 | 457 | } |
| 453 | 458 | } |
| 454 | 459 |
src/link/Elf/Object.zig+9-3| ... | ... | @@ -612,7 +612,7 @@ pub fn resolveSymbols(self: *Object, elf_file: *Elf) !void { |
| 612 | 612 | const first_global = self.first_global orelse return; |
| 613 | 613 | for (self.globals(), first_global..) |_, i| { |
| 614 | 614 | const esym = self.symtab.items[i]; |
| 615 | if (esym.st_shndx != elf.SHN_ABS and esym.st_shndx != elf.SHN_COMMON) { | |
| 615 | if (esym.st_shndx != elf.SHN_ABS and esym.st_shndx != elf.SHN_COMMON and esym.st_shndx != elf.SHN_UNDEF) { | |
| 616 | 616 | const atom_index = self.atoms_indexes.items[esym.st_shndx]; |
| 617 | 617 | const atom_ptr = self.atom(atom_index) orelse continue; |
| 618 | 618 | if (!atom_ptr.alive) continue; |
| ... | ... | @@ -1492,8 +1492,14 @@ fn formatSymtab( |
| 1492 | 1492 | try writer.print(" {}\n", .{sym.fmt(elf_file)}); |
| 1493 | 1493 | } |
| 1494 | 1494 | try writer.writeAll(" globals\n"); |
| 1495 | for (object.globals()) |sym| { | |
| 1496 | try writer.print(" {}\n", .{sym.fmt(elf_file)}); | |
| 1495 | for (object.globals(), 0..) |sym, i| { | |
| 1496 | const first_global = object.first_global.?; | |
| 1497 | const ref = object.resolveSymbol(@intCast(i + first_global), elf_file); | |
| 1498 | if (elf_file.symbol(ref)) |ref_sym| { | |
| 1499 | try writer.print(" {}\n", .{ref_sym.fmt(elf_file)}); | |
| 1500 | } else { | |
| 1501 | try writer.print(" {s} : unclaimed\n", .{sym.name(elf_file)}); | |
| 1502 | } | |
| 1497 | 1503 | } |
| 1498 | 1504 | } |
| 1499 | 1505 |
src/link/Elf/SharedObject.zig+7-2| ... | ... | @@ -493,8 +493,13 @@ fn formatSymtab( |
| 493 | 493 | const shared = ctx.shared; |
| 494 | 494 | const elf_file = ctx.elf_file; |
| 495 | 495 | try writer.writeAll(" globals\n"); |
| 496 | for (shared.symbols.items) |sym| { | |
| 497 | try writer.print(" {}\n", .{sym.fmt(elf_file)}); | |
| 496 | for (shared.symbols.items, 0..) |sym, i| { | |
| 497 | const ref = shared.resolveSymbol(@intCast(i), elf_file); | |
| 498 | if (elf_file.symbol(ref)) |ref_sym| { | |
| 499 | try writer.print(" {}\n", .{ref_sym.fmt(elf_file)}); | |
| 500 | } else { | |
| 501 | try writer.print(" {s} : unclaimed\n", .{sym.name(elf_file)}); | |
| 502 | } | |
| 498 | 503 | } |
| 499 | 504 | } |
| 500 | 505 |
src/link/Elf/synthetic_sections.zig+1-1| ... | ... | @@ -417,9 +417,9 @@ pub const ZigGotSection = struct { |
| 417 | 417 | _ = unused_fmt_string; |
| 418 | 418 | const zig_got = ctx.zig_got; |
| 419 | 419 | const elf_file = ctx.elf_file; |
| 420 | const zo = elf_file.zigObjectPtr().?; | |
| 421 | 420 | try writer.writeAll(".zig.got\n"); |
| 422 | 421 | for (zig_got.entries.items, 0..) |entry, index| { |
| 422 | const zo = elf_file.zigObjectPtr().?; | |
| 423 | 423 | const symbol = zo.symbol(entry); |
| 424 | 424 | try writer.print(" {d}@0x{x} => {d}@0x{x} ({s})\n", .{ |
| 425 | 425 | index, |