aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-11-30 01:44:34 -0500
committerGitHub <noreply@github.com>2022-11-30 01:44:34 -0500
commite35f297aeb993ec956ae80379ddf7f86069e109b (patch)
tree45cbb5b3ebbe23a46e27b04aa5898a6c00ec4a61 /src/link
parentdeda6b514691c3a7ffc7931469886d0e7be2f67e (diff)
parentf4666678886c2a7a993ad30b63de4ff25594085a (diff)
downloadzig-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.zig12
-rw-r--r--src/link/Elf.zig12
-rw-r--r--src/link/MachO.zig6
-rw-r--r--src/link/MachO/Trie.zig2
-rw-r--r--src/link/Plan9.zig16
-rw-r--r--src/link/Wasm.zig2
-rw-r--r--src/link/Wasm/Object.zig4
-rw-r--r--src/link/tapi/parse.zig2
-rw-r--r--src/link/tapi/yaml.zig2
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.?];