╭─────────────╮ │scroll to top│ ╰─────────────╯ ╭ zig_llvm.cpp ─────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭ find file ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╮ ╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │ │ │http│ ssh │ │ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
501 502 return false; 503 } 504 505 // The header file in LLD 16 exposed these functions. As of 17 they are only 506 // exposed via a macro ("LLD_HAS_DRIVER") which I have copied and pasted the 507 // body of here so that you don't have to wonder what it is doing. 508 namespace lld { 509 namespace coff { 510 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS, 511 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput); 512 } 513 namespace elf { 514 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS, 515 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput); 516 } 517 namespace wasm { 518 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS, 519 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput); 520 } 521 } 522 523 bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) { 524 std::vector<const char *> args(argv, argv + argc); 525 return lld::coff::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output); 526 } 527 528 bool ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output) { 529 std::vector<const char *> args(argv, argv + argc); 530 return lld::elf::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output); 531 } 532 533 bool ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output) { 534 std::vector<const char *> args(argv, argv + argc); 535 return lld::wasm::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output); 536 } 537 538 static_assert((FloatABI::ABIType)ZigLLVMFloatABI_Default == FloatABI::ABIType::Default, ""); 539 static_assert((FloatABI::ABIType)ZigLLVMFloatABI_Soft == FloatABI::ABIType::Soft, ""); 540 static_assert((FloatABI::ABIType)ZigLLVMFloatABI_Hard == FloatABI::ABIType::Hard, ""); 541 542 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_GNU == object::Archive::Kind::K_GNU, ""); 543 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_GNU64 == object::Archive::Kind::K_GNU64, ""); 544 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_BSD == object::Archive::Kind::K_BSD, ""); 545 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_DARWIN == object::Archive::Kind::K_DARWIN, ""); 546 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_DARWIN64 == object::Archive::Kind::K_DARWIN64, ""); 547 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_COFF == object::Archive::Kind::K_COFF, ""); 548 static_assert((object::Archive::Kind)ZigLLVMArchiveKind_AIXBIG == object::Archive::Kind::K_AIXBIG, ""); 549