| ... | ... | @@ -241,6 +241,9 @@ pub fn openPath(allocator: Allocator, sub_path: []const u8, options: link.Option |
| 241 | 241 | const self = try createEmpty(allocator, options); |
| 242 | 242 | errdefer self.base.destroy(); |
| 243 | 243 | |
| 244 | const is_obj = options.output_mode == .Obj; |
| 245 | const is_obj_or_ar = is_obj or (options.output_mode == .Lib and options.link_mode == .Static); |
| 246 | |
| 244 | 247 | if (options.use_llvm) { |
| 245 | 248 | const use_lld = build_options.have_llvm and self.base.options.use_lld; |
| 246 | 249 | if (use_lld) return self; |
| ... | ... | @@ -250,6 +253,10 @@ pub fn openPath(allocator: Allocator, sub_path: []const u8, options: link.Option |
| 250 | 253 | sub_path, options.target.ofmt.fileExt(options.target.cpu.arch), |
| 251 | 254 | }); |
| 252 | 255 | } |
| 256 | if (is_obj) { |
| 257 | // TODO until we implement -r option, we don't want to open a file at this stage. |
| 258 | return self; |
| 259 | } |
| 253 | 260 | } |
| 254 | 261 | errdefer if (self.base.intermediary_basename) |path| allocator.free(path); |
| 255 | 262 | |
| ... | ... | @@ -273,11 +280,6 @@ pub fn openPath(allocator: Allocator, sub_path: []const u8, options: link.Option |
| 273 | 280 | // There must always be a null shdr in index 0 |
| 274 | 281 | _ = try self.addSection(.{ .name = "" }); |
| 275 | 282 | |
| 276 | | const is_obj_or_ar = switch (options.output_mode) { |
| 277 | | .Obj => true, |
| 278 | | .Lib => options.link_mode == .Static, |
| 279 | | else => false, |
| 280 | | }; |
| 281 | 283 | if (!is_obj_or_ar) { |
| 282 | 284 | try self.dynstrtab.buffer.append(allocator, 0); |
| 283 | 285 | |
| ... | ... | @@ -1006,6 +1008,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation, prog_node: *std.Progress.Node |
| 1006 | 1008 | |
| 1007 | 1009 | if (self.base.options.output_mode == .Obj and self.zig_module_index == null) { |
| 1008 | 1010 | // TODO this will become -r route I guess. For now, just copy the object file. |
| 1011 | assert(self.base.file == null); // TODO uncomment once we implement -r |
| 1009 | 1012 | const the_object_path = blk: { |
| 1010 | 1013 | if (self.base.options.objects.len != 0) { |
| 1011 | 1014 | break :blk self.base.options.objects[0].path; |