diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-11-30 01:44:34 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-30 01:44:34 -0500 |
| commit | e35f297aeb993ec956ae80379ddf7f86069e109b (patch) | |
| tree | 45cbb5b3ebbe23a46e27b04aa5898a6c00ec4a61 /src/link | |
| parent | deda6b514691c3a7ffc7931469886d0e7be2f67e (diff) | |
| parent | f4666678886c2a7a993ad30b63de4ff25594085a (diff) | |
| download | zig-e35f297aeb993ec956ae80379ddf7f86069e109b.tar.gz zig-e35f297aeb993ec956ae80379ddf7f86069e109b.zip | |
Merge pull request #13666 from ziglang/allocator-interface
std.mem.Allocator: allow shrink to fail
Diffstat (limited to 'src/link')
| -rw-r--r-- | src/link/Coff.zig | 12 | ||||
| -rw-r--r-- | src/link/Elf.zig | 12 | ||||
| -rw-r--r-- | src/link/MachO.zig | 6 | ||||
| -rw-r--r-- | src/link/MachO/Trie.zig | 2 | ||||
| -rw-r--r-- | src/link/Plan9.zig | 16 | ||||
| -rw-r--r-- | src/link/Wasm.zig | 2 | ||||
| -rw-r--r-- | src/link/Wasm/Object.zig | 4 | ||||
| -rw-r--r-- | src/link/tapi/parse.zig | 2 | ||||
| -rw-r--r-- | src/link/tapi/yaml.zig | 2 |
9 files changed, 28 insertions, 30 deletions
diff --git a/src/link/Coff.zig b/src/link/Coff.zig index d419bd633b..3f89de9608 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -938,9 +938,9 @@ pub fn updateFunc(self: *Coff, module: *Module, func: *Module.Fn, air: Air, live try self.updateDeclCode(decl_index, code, .FUNCTION); - // Since we updated the vaddr and the size, each corresponding export symbol also needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - return self.updateDeclExports(module, decl_index, decl_exports); + // Since we updated the vaddr and the size, each corresponding export + // symbol also needs to be updated. + return self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } pub fn lowerUnnamedConst(self: *Coff, tv: TypedValue, decl_index: Module.Decl.Index) !u32 { @@ -1053,9 +1053,9 @@ pub fn updateDecl(self: *Coff, module: *Module, decl_index: Module.Decl.Index) ! try self.updateDeclCode(decl_index, code, .NULL); - // Since we updated the vaddr and the size, each corresponding export symbol also needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - return self.updateDeclExports(module, decl_index, decl_exports); + // Since we updated the vaddr and the size, each corresponding export + // symbol also needs to be updated. + return self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } fn getDeclOutputSection(self: *Coff, decl: *Module.Decl) u16 { diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 59f620f638..67b3df9e37 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -2450,9 +2450,9 @@ pub fn updateFunc(self: *Elf, module: *Module, func: *Module.Fn, air: Air, liven ); } - // Since we updated the vaddr and the size, each corresponding export symbol also needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - return self.updateDeclExports(module, decl_index, decl_exports); + // Since we updated the vaddr and the size, each corresponding export + // symbol also needs to be updated. + return self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } pub fn updateDecl(self: *Elf, module: *Module, decl_index: Module.Decl.Index) !void { @@ -2527,9 +2527,9 @@ pub fn updateDecl(self: *Elf, module: *Module, decl_index: Module.Decl.Index) !v ); } - // Since we updated the vaddr and the size, each corresponding export symbol also needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - return self.updateDeclExports(module, decl_index, decl_exports); + // Since we updated the vaddr and the size, each corresponding export + // symbol also needs to be updated. + return self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } pub fn lowerUnnamedConst(self: *Elf, typed_value: TypedValue, decl_index: Module.Decl.Index) !u32 { diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 06e073e95d..4df1b490d1 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -2225,8 +2225,7 @@ pub fn updateFunc(self: *MachO, module: *Module, func: *Module.Fn, air: Air, liv // Since we updated the vaddr and the size, each corresponding export symbol also // needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - try self.updateDeclExports(module, decl_index, decl_exports); + try self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } pub fn lowerUnnamedConst(self: *MachO, typed_value: TypedValue, decl_index: Module.Decl.Index) !u32 { @@ -2377,8 +2376,7 @@ pub fn updateDecl(self: *MachO, module: *Module, decl_index: Module.Decl.Index) // Since we updated the vaddr and the size, each corresponding export symbol also // needs to be updated. - const decl_exports = module.decl_exports.get(decl_index) orelse &[0]*Module.Export{}; - try self.updateDeclExports(module, decl_index, decl_exports); + try self.updateDeclExports(module, decl_index, module.getDeclExports(decl_index)); } fn getDeclOutputSection(self: *MachO, decl: *Module.Decl) u8 { diff --git a/src/link/MachO/Trie.zig b/src/link/MachO/Trie.zig index 8660781fe9..a97e18a186 100644 --- a/src/link/MachO/Trie.zig +++ b/src/link/MachO/Trie.zig @@ -165,7 +165,7 @@ pub const Node = struct { break; try label_buf.append(next); } - break :blk label_buf.toOwnedSlice(); + break :blk try label_buf.toOwnedSlice(); }; const seek_to = try leb.readULEB128(u64, reader); diff --git a/src/link/Plan9.zig b/src/link/Plan9.zig index 54eea6ee25..2d221463c9 100644 --- a/src/link/Plan9.zig +++ b/src/link/Plan9.zig @@ -230,7 +230,7 @@ fn putFn(self: *Plan9, decl_index: Module.Decl.Index, out: FnDeclOutput) !void { // null terminate try a.append(0); - const final = a.toOwnedSlice(); + const final = try a.toOwnedSlice(); self.syms.items[fn_map_res.value_ptr.sym_index - 1] = .{ .type = .z, .value = 1, @@ -296,7 +296,7 @@ pub fn updateFunc(self: *Plan9, module: *Module, func: *Module.Fn, air: Air, liv }, ); const code = switch (res) { - .appended => code_buffer.toOwnedSlice(), + .appended => try code_buffer.toOwnedSlice(), .fail => |em| { decl.analysis = .codegen_failure; try module.failed_decls.put(module.gpa, decl_index, em); @@ -305,7 +305,7 @@ pub fn updateFunc(self: *Plan9, module: *Module, func: *Module.Fn, air: Air, liv }; const out: FnDeclOutput = .{ .code = code, - .lineinfo = dbg_line_buffer.toOwnedSlice(), + .lineinfo = try dbg_line_buffer.toOwnedSlice(), .start_line = start_line.?, .end_line = end_line, }; @@ -574,7 +574,7 @@ pub fn flushModule(self: *Plan9, comp: *Compilation, prog_node: *std.Progress.No } self.syms.items[decl.link.plan9.sym_index.?].value = off; if (mod.decl_exports.get(decl_index)) |exports| { - try self.addDeclExports(mod, decl, exports); + try self.addDeclExports(mod, decl, exports.items); } } } @@ -611,7 +611,7 @@ pub fn flushModule(self: *Plan9, comp: *Compilation, prog_node: *std.Progress.No } self.syms.items[decl.link.plan9.sym_index.?].value = off; if (mod.decl_exports.get(decl_index)) |exports| { - try self.addDeclExports(mod, decl, exports); + try self.addDeclExports(mod, decl, exports.items); } } // write the unnamed constants after the other data decls @@ -641,7 +641,7 @@ pub fn flushModule(self: *Plan9, comp: *Compilation, prog_node: *std.Progress.No self.syms.items[1].value = self.getAddr(0x0, .b); var sym_buf = std.ArrayList(u8).init(self.base.allocator); try self.writeSyms(&sym_buf); - const syms = sym_buf.toOwnedSlice(); + const syms = try sym_buf.toOwnedSlice(); defer self.base.allocator.free(syms); assert(2 + self.atomCount() == iovecs_i); // we didn't write all the decls iovecs[iovecs_i] = .{ .iov_base = syms.ptr, .iov_len = syms.len }; @@ -914,7 +914,7 @@ pub fn writeSyms(self: *Plan9, buf: *std.ArrayList(u8)) !void { const sym = self.syms.items[decl.link.plan9.sym_index.?]; try self.writeSym(writer, sym); if (self.base.options.module.?.decl_exports.get(decl_index)) |exports| { - for (exports) |e| { + for (exports.items) |e| { try self.writeSym(writer, self.syms.items[e.link.plan9.?]); } } @@ -939,7 +939,7 @@ pub fn writeSyms(self: *Plan9, buf: *std.ArrayList(u8)) !void { const sym = self.syms.items[decl.link.plan9.sym_index.?]; try self.writeSym(writer, sym); if (self.base.options.module.?.decl_exports.get(decl_index)) |exports| { - for (exports) |e| { + for (exports.items) |e| { const s = self.syms.items[e.link.plan9.?]; if (mem.eql(u8, s.name, "_start")) self.entry_val = s.value; diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index 39f8a6bbe6..5d74338ebf 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -3206,7 +3206,7 @@ fn linkWithLLD(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Node) ! const skip_export_non_fn = target.os.tag == .wasi and wasm.base.options.wasi_exec_model == .command; for (mod.decl_exports.values()) |exports| { - for (exports) |exprt| { + for (exports.items) |exprt| { const exported_decl = mod.declPtr(exprt.exported_decl); if (skip_export_non_fn and exported_decl.ty.zigTypeTag() != .Fn) { // skip exporting symbols when we're building a WASI command diff --git a/src/link/Wasm/Object.zig b/src/link/Wasm/Object.zig index 63084f4879..e5947228a5 100644 --- a/src/link/Wasm/Object.zig +++ b/src/link/Wasm/Object.zig @@ -557,7 +557,7 @@ fn Parser(comptime ReaderType: type) type { error.EndOfStream => {}, // finished parsing the file else => |e| return e, } - parser.object.relocatable_data = relocatable_data.toOwnedSlice(); + parser.object.relocatable_data = try relocatable_data.toOwnedSlice(); } /// Based on the "features" custom section, parses it into a list of @@ -742,7 +742,7 @@ fn Parser(comptime ReaderType: type) type { log.debug("Found legacy indirect function table. Created symbol", .{}); } - parser.object.symtable = symbols.toOwnedSlice(); + parser.object.symtable = try symbols.toOwnedSlice(); }, } } diff --git a/src/link/tapi/parse.zig b/src/link/tapi/parse.zig index 00c93b1f32..eb7bb2a0cf 100644 --- a/src/link/tapi/parse.zig +++ b/src/link/tapi/parse.zig @@ -262,7 +262,7 @@ pub const Tree = struct { } self.source = source; - self.tokens = tokens.toOwnedSlice(); + self.tokens = try tokens.toOwnedSlice(); var it = TokenIterator{ .buffer = self.tokens }; var parser = Parser{ diff --git a/src/link/tapi/yaml.zig b/src/link/tapi/yaml.zig index eed5cb639f..9039d3b4f1 100644 --- a/src/link/tapi/yaml.zig +++ b/src/link/tapi/yaml.zig @@ -193,7 +193,7 @@ pub const Value = union(ValueType) { } } - return Value{ .list = out_list.toOwnedSlice() }; + return Value{ .list = try out_list.toOwnedSlice() }; } else if (node.cast(Node.Value)) |value| { const start = tree.tokens[value.start.?]; const end = tree.tokens[value.end.?]; |
