| ... | @@ -172,6 +172,7 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { | ... | @@ -172,6 +172,7 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { |
| 172 | // each file gets a symbol | 172 | // each file gets a symbol |
| 173 | fn_map_res.value_ptr.* = .{ | 173 | fn_map_res.value_ptr.* = .{ |
| 174 | .sym_index = blk: { | 174 | .sym_index = blk: { |
| | 175 | try self.syms.append(gpa, undefined); |
| 175 | try self.syms.append(gpa, undefined); | 176 | try self.syms.append(gpa, undefined); |
| 176 | break :blk @intCast(u32, self.syms.items.len - 1); | 177 | break :blk @intCast(u32, self.syms.items.len - 1); |
| 177 | }, | 178 | }, |
| ... | @@ -194,11 +195,17 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { | ... | @@ -194,11 +195,17 @@ fn putFn(self: *Plan9, decl: *Module.Decl, out: FnDeclOutput) !void { |
| 194 | // null terminate | 195 | // null terminate |
| 195 | try a.append(0); | 196 | try a.append(0); |
| 196 | const final = a.toOwnedSlice(); | 197 | const final = a.toOwnedSlice(); |
| 197 | self.syms.items[fn_map_res.value_ptr.sym_index] = .{ | 198 | self.syms.items[fn_map_res.value_ptr.sym_index - 1] = .{ |
| 198 | .type = .z, | 199 | .type = .z, |
| 199 | .value = 1, | 200 | .value = 1, |
| 200 | .name = final, | 201 | .name = final, |
| 201 | }; | 202 | }; |
| | 203 | self.syms.items[fn_map_res.value_ptr.sym_index] = .{ |
| | 204 | .type = .z, |
| | 205 | // just put a giant number, no source file will have this many newlines |
| | 206 | .value = std.math.maxInt(u32), |
| | 207 | .name = &.{ 0, 0 }, |
| | 208 | }; |
| 202 | } | 209 | } |
| 203 | } | 210 | } |
| 204 | | 211 | |
| ... | @@ -705,7 +712,8 @@ pub fn writeSyms(self: *Plan9, buf: *std.ArrayList(u8)) !void { | ... | @@ -705,7 +712,8 @@ pub fn writeSyms(self: *Plan9, buf: *std.ArrayList(u8)) !void { |
| 705 | var it_file = self.fn_decl_table.iterator(); | 712 | var it_file = self.fn_decl_table.iterator(); |
| 706 | while (it_file.next()) |fentry| { | 713 | while (it_file.next()) |fentry| { |
| 707 | var symidx_and_submap = fentry.value_ptr; | 714 | var symidx_and_submap = fentry.value_ptr; |
| 708 | // write the z symbol | 715 | // write the z symbols |
| | 716 | try self.writeSym(writer, self.syms.items[symidx_and_submap.sym_index - 1]); |
| 709 | try self.writeSym(writer, self.syms.items[symidx_and_submap.sym_index]); | 717 | try self.writeSym(writer, self.syms.items[symidx_and_submap.sym_index]); |
| 710 | | 718 | |
| 711 | // write all the decls come from the file of the z symbol | 719 | // write all the decls come from the file of the z symbol |