Skip to content

Commit 74e05a8

Browse files
authored
merge main into amd-staging (llvm#4144)
2 parents 6e1edf9 + 6ceba01 commit 74e05a8

File tree

7 files changed

+46
-3
lines changed

7 files changed

+46
-3
lines changed

clang/lib/Basic/Targets.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
172172
case llvm::Triple::OpenBSD:
173173
return std::make_unique<OpenBSDTargetInfo<AArch64leTargetInfo>>(Triple,
174174
Opts);
175+
case llvm::Triple::Hurd:
176+
return std::make_unique<HurdTargetInfo<AArch64leTargetInfo>>(Triple,
177+
Opts);
175178
case llvm::Triple::Win32:
176179
switch (Triple.getEnvironment()) {
177180
case llvm::Triple::GNU:
@@ -464,6 +467,8 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
464467
case llvm::Triple::Managarm:
465468
return std::make_unique<ManagarmTargetInfo<RISCV64TargetInfo>>(Triple,
466469
Opts);
470+
case llvm::Triple::Hurd:
471+
return std::make_unique<HurdTargetInfo<RISCV64TargetInfo>>(Triple, Opts);
467472
default:
468473
return std::make_unique<RISCV64TargetInfo>(Triple, Opts);
469474
}

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2575,6 +2575,14 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
25752575

25762576
if (TargetTriple.isOSHurd()) {
25772577
switch (TargetTriple.getArch()) {
2578+
case llvm::Triple::aarch64:
2579+
LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
2580+
TripleAliases.push_back("aarch64-gnu");
2581+
break;
2582+
case llvm::Triple::riscv64:
2583+
LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
2584+
TripleAliases.push_back("riscv64-gnu");
2585+
break;
25782586
case llvm::Triple::x86_64:
25792587
LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
25802588
TripleAliases.push_back("x86_64-gnu");

clang/lib/Driver/ToolChains/Hurd.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ std::string Hurd::getMultiarchTriple(const Driver &D,
3434
default:
3535
break;
3636

37+
case llvm::Triple::aarch64:
38+
return "aarch64-gnu";
39+
40+
case llvm::Triple::riscv64:
41+
return "riscv64-gnu";
42+
3743
case llvm::Triple::x86:
3844
// We use the existence of '/lib/<triple>' as a directory to detect some
3945
// common hurd triples that don't quite match the Clang triple for both
@@ -142,6 +148,10 @@ Tool *Hurd::buildAssembler() const {
142148

143149
std::string Hurd::getDynamicLinker(const ArgList &Args) const {
144150
switch (getArch()) {
151+
case llvm::Triple::aarch64:
152+
return "/lib/ld-aarch64.so.1";
153+
case llvm::Triple::riscv64:
154+
return "/lib/ld-riscv64-lp64.so.1";
145155
case llvm::Triple::x86:
146156
return "/lib/ld.so";
147157
case llvm::Triple::x86_64:

clang/lib/Driver/ToolChains/Hurd.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ class LLVM_LIBRARY_VISIBILITY Hurd : public Generic_ELF {
3030
addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
3131
llvm::opt::ArgStringList &CC1Args) const override;
3232

33+
bool IsAArch64OutlineAtomicsDefault(
34+
const llvm::opt::ArgList &Args) const override {
35+
return true;
36+
}
37+
3338
std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override;
3439

3540
void addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const override;

clang/test/Driver/aarch64-features.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@
8282
// RUN: --gcc-toolchain=%S/Inputs/aarch64-linux-gnu-tree/gcc-7.5.0 \
8383
// RUN: -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-OUTLINE-ATOMICS-ON %s
8484

85+
// RUN: %clang --target=aarch64-unknown-hurd-gnu -rtlib=libgcc \
86+
// RUN: -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-OUTLINE-ATOMICS-ON %s
87+
8588
// RUN: %clang --target=aarch64-unknown-haiku -rtlib=libgcc \
8689
// RUN: -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-OUTLINE-ATOMICS-ON %s
8790

clang/test/Driver/env.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// Some assertions in this test use Linux style (/) file paths.
22
// UNSUPPORTED: system-windows
3-
// RUN: bash -c env | grep LD_LIBRARY_PATH | tr -d '\n' > /tmp/ld_library_path
3+
// RUN: bash -c env | grep LD_LIBRARY_PATH | tr -d '\n' > %t.ld_library_path
44
// The PATH variable is heavily used when trying to find a linker.
5-
// RUN: env -i LC_ALL=C LD_LIBRARY_PATH="%{readfile:/tmp/ld_library_path}" CLANG_NO_DEFAULT_CONFIG=1 \
5+
// RUN: env -i LC_ALL=C LD_LIBRARY_PATH="%{readfile:%t.ld_library_path}" CLANG_NO_DEFAULT_CONFIG=1 \
66
// RUN: %clang %s -### -o %t.o --target=i386-unknown-linux \
77
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
88
// RUN: --rtlib=platform --unwindlib=platform -no-pie \
99
// RUN: 2>&1 | FileCheck --check-prefix=CHECK-LD-32 %s
1010
//
11-
// RUN: env -i LC_ALL=C PATH="" LD_LIBRARY_PATH="%{readfile:/tmp/ld_library_path}" CLANG_NO_DEFAULT_CONFIG=1 \
11+
// RUN: env -i LC_ALL=C PATH="" LD_LIBRARY_PATH="%{readfile:%t.ld_library_path}" CLANG_NO_DEFAULT_CONFIG=1 \
1212
// RUN: %clang %s -### -o %t.o --target=i386-unknown-linux \
1313
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
1414
// RUN: --rtlib=platform --unwindlib=platform -no-pie \

llvm/unittests/TargetParser/TripleTest.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,12 @@ TEST(TripleTest, ParsedIDs) {
139139
EXPECT_EQ(Triple::Linux, T.getOS());
140140
EXPECT_EQ(Triple::Android, T.getEnvironment());
141141

142+
T = Triple("aarch64-unknown-hurd-gnu");
143+
EXPECT_EQ(Triple::aarch64, T.getArch());
144+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
145+
EXPECT_EQ(Triple::Hurd, T.getOS());
146+
EXPECT_EQ(Triple::GNU, T.getEnvironment());
147+
142148
// PS4 has two spellings for the vendor.
143149
T = Triple("x86_64-scei-ps4");
144150
EXPECT_EQ(Triple::x86_64, T.getArch());
@@ -806,6 +812,12 @@ TEST(TripleTest, ParsedIDs) {
806812
EXPECT_EQ(Triple::Linux, T.getOS());
807813
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
808814

815+
T = Triple("riscv64-unknown-hurd-gnu");
816+
EXPECT_EQ(Triple::riscv64, T.getArch());
817+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
818+
EXPECT_EQ(Triple::Hurd, T.getOS());
819+
EXPECT_EQ(Triple::GNU, T.getEnvironment());
820+
809821
T = Triple("armv7hl-suse-linux-gnueabi");
810822
EXPECT_EQ(Triple::arm, T.getArch());
811823
EXPECT_EQ(Triple::SUSE, T.getVendor());

0 commit comments

Comments
 (0)