authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-01 22:13:30-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-01 22:13:30-07:00
log3ab5912eee54083033be5f72454980d7e83b2936
treee77c5ee7fc9fab79210dac6e18b1b584dc3e91fb
parentae0b0729fc10dc3aee1e005b8f30f54d2da271ec

LLD: the driver functions now return "false" to mean "error"


4 files changed, 13 insertions(+), 12 deletions(-)

src/codegen/llvm/bindings.zig+3-3
......@@ -1186,9 +1186,9 @@ pub extern fn LLVMInitializeM68kAsmParser() void;
11861186pub extern fn LLVMInitializeCSKYAsmParser() void;
11871187pub extern fn LLVMInitializeVEAsmParser() void;
11881188
1189extern fn ZigLLDLinkCOFF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) c_int;
1190extern fn ZigLLDLinkELF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) c_int;
1191extern fn ZigLLDLinkWasm(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) c_int;
1189extern fn ZigLLDLinkCOFF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool;
1190extern fn ZigLLDLinkELF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool;
1191extern fn ZigLLDLinkWasm(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool;
11921192
11931193pub const LinkCOFF = ZigLLDLinkCOFF;
11941194pub const LinkELF = ZigLLDLinkELF;
src/main.zig+4-3
......@@ -4481,10 +4481,11 @@ pub fn lldMain(
44814481 defer arena_instance.deinit();
44824482 const arena = arena_instance.allocator();
44834483
4484 // Convert the args to the format llvm-ar expects.
4484 // Convert the args to the format LLD expects.
44854485 // We intentionally shave off the zig binary at args[0].
44864486 const argv = try argsCopyZ(arena, args[1..]);
4487 const exit_code = rc: {
4487 // "If an error occurs, false will be returned."
4488 const ok = rc: {
44884489 const llvm = @import("codegen/llvm/bindings.zig");
44894490 const argc = @intCast(c_int, argv.len);
44904491 if (mem.eql(u8, args[1], "ld.lld")) {
......@@ -4497,7 +4498,7 @@ pub fn lldMain(
44974498 unreachable;
44984499 }
44994500 };
4500 return @bitCast(u8, @truncate(i8, exit_code));
4501 return @boolToInt(!ok);
45014502}
45024503
45034504const ArgIteratorResponseFile = process.ArgIteratorGeneral(.{ .comments = true, .single_quotes = true });
src/zig_llvm.cpp+3-3
......@@ -1335,17 +1335,17 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
13351335 return false;
13361336}
13371337
1338int ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
1338bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
13391339 std::vector<const char *> args(argv, argv + argc);
13401340 return lld::coff::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
13411341}
13421342
1343int ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
1343bool ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
13441344 std::vector<const char *> args(argv, argv + argc);
13451345 return lld::elf::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
13461346}
13471347
1348int ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output) {
1348bool ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output) {
13491349 std::vector<const char *> args(argv, argv + argc);
13501350 return lld::wasm::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
13511351}
src/zig_llvm.h+3-3
......@@ -543,9 +543,9 @@ ZIG_EXTERN_C const char *ZigLLVMGetVendorTypeName(enum ZigLLVM_VendorType vendor
543543ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os);
544544ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi);
545545
546ZIG_EXTERN_C int ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output);
547ZIG_EXTERN_C int ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output);
548ZIG_EXTERN_C int ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output);
546ZIG_EXTERN_C bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output);
547ZIG_EXTERN_C bool ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output);
548ZIG_EXTERN_C bool ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output);
549549
550550ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size_t file_name_count,
551551 enum ZigLLVM_OSType os_type);