https://github.com/nerfur updated https://github.com/llvm/llvm-project/pull/149737
>From 6b9eedcc624316a565cfc4d5eb8c87c67442378f Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 1 Jul 2025 20:01:34 +0300 Subject: [PATCH 1/6] OpenBSD in Targets.cpp --- clang/lib/Basic/Targets.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index af1111a863308..354c72a9eb110 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -752,6 +752,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple, case llvm::Triple::Linux: return std::make_unique<LinuxTargetInfo<LoongArch32TargetInfo>>(Triple, Opts); + case llvm::Triple::OpenBSD: + return std::make_unique<OpenBSDTargetInfo<LoongArch32TargetInfo>>(Triple, + Opts); default: return std::make_unique<LoongArch32TargetInfo>(Triple, Opts); } @@ -769,6 +772,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple, case llvm::Triple::FreeBSD: return std::make_unique<FreeBSDTargetInfo<LoongArch64TargetInfo>>(Triple, Opts); + case llvm::Triple::OpenBSD: + return std::make_unique<OpenBSDTargetInfo<LoongArch64TargetInfo>>(Triple, + Opts); default: return std::make_unique<LoongArch64TargetInfo>(Triple, Opts); } >From f30b4b8d6ff315830de1832bbb103cca3fb19f69 Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 1 Jul 2025 20:09:57 +0300 Subject: [PATCH 2/6] OpenBSD in OSTargets.h --- clang/lib/Basic/Targets/OSTargets.h | 1 + 1 file changed, 1 insertion(+) diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 5dac699c2bb45..3731937905f0c 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -497,6 +497,7 @@ class LLVM_LIBRARY_VISIBILITY OpenBSDTargetInfo : public OSTargetInfo<Target> { this->MCountName = "_mcount"; break; case llvm::Triple::riscv64: + case llvm::Triple::loongarch64: break; } } >From 60da9e33b4d770eaa2e588643a35d03a2e07c546 Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 1 Jul 2025 20:12:21 +0300 Subject: [PATCH 3/6] OpenBSD in Targets.cpp --- clang/lib/Basic/Targets.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 354c72a9eb110..5d11578893c66 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -752,9 +752,6 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple, case llvm::Triple::Linux: return std::make_unique<LinuxTargetInfo<LoongArch32TargetInfo>>(Triple, Opts); - case llvm::Triple::OpenBSD: - return std::make_unique<OpenBSDTargetInfo<LoongArch32TargetInfo>>(Triple, - Opts); default: return std::make_unique<LoongArch32TargetInfo>(Triple, Opts); } >From 9d5b9c7b8c9081d9dc0542a4b22d2dda1235bb7f Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 1 Jul 2025 20:19:06 +0300 Subject: [PATCH 4/6] LoongArch on OpenBSD.cpp --- clang/lib/Driver/ToolChains/OpenBSD.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clang/lib/Driver/ToolChains/OpenBSD.cpp b/clang/lib/Driver/ToolChains/OpenBSD.cpp index 79b1b6960da1f..05d9242a080a9 100644 --- a/clang/lib/Driver/ToolChains/OpenBSD.cpp +++ b/clang/lib/Driver/ToolChains/OpenBSD.cpp @@ -167,6 +167,12 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("--no-relax"); } + if (Triple.isLoongArch64()) { + CmdArgs.push_back("-X"); + if (Args.hasArg(options::OPT_mno_relax)) + CmdArgs.push_back("--no-relax"); + } + assert((Output.isFilename() || Output.isNothing()) && "Invalid output."); if (Output.isFilename()) { CmdArgs.push_back("-o"); >From d1a94a51df2c73458e901d2ca3f124307c8fbdcd Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 8 Jul 2025 16:18:38 +0300 Subject: [PATCH 5/6] Openbsd loongarch on openbsd.c --- clang/test/Driver/openbsd.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/clang/test/Driver/openbsd.c b/clang/test/Driver/openbsd.c index 6639e9d2d9d67..0c76249143214 100644 --- a/clang/test/Driver/openbsd.c +++ b/clang/test/Driver/openbsd.c @@ -29,6 +29,19 @@ // CHECK-MIPS64-CPU: "-target-cpu" "mips3" // CHECK-MIPS64EL-CPU: "-target-cpu" "mips3" +// Check that LoongArch passes the correct linker emulation. +// +// RUN: %clang --target=loongarch64-unknown-openbsd -### %s %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LA64-LD %s +// CHECK-LA64-LD: ld{{.*}}" {{.*}} "-m" "elf64loongarch" +// +// Check options passed to the linker on LoongArch +// +// RUN: %clang --target=loongarch64-unknown-openbsd -mno-relax -### %s %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LA64-LD-OPTS %s +// CHECK-LA64-LD-OPTS: ld{{.*}}" {{.*}} "-X" "--no-relax" +// + // Check that the new linker flags are passed to OpenBSD // RUN: %clang --target=i686-pc-openbsd -r -### %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-LD-R %s >From 804f99296657ca2d071c3428ca74475ded1b6e39 Mon Sep 17 00:00:00 2001 From: "Slava \"nerfur\" Voronzoff" <ner...@gmail.com> Date: Tue, 22 Jul 2025 06:24:45 +0300 Subject: [PATCH 6/6] sorting targets --- clang/lib/Basic/Targets/OSTargets.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 7f55b1dcd42f4..94b018a0751d1 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -496,8 +496,8 @@ class LLVM_LIBRARY_VISIBILITY OpenBSDTargetInfo : public OSTargetInfo<Target> { case llvm::Triple::sparcv9: this->MCountName = "_mcount"; break; - case llvm::Triple::riscv64: case llvm::Triple::loongarch64: + case llvm::Triple::riscv64: break; } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits