Skip to content

Commit 65a56a2

Browse files
authored
[clang] [Driver] Treat MuslEABIHF as a hardfloat environment wrt multiarch directories (#77536)
If using multiarch directories with musl, the multiarch directory still uses *-linux-gnu triples - which may or may not be intentional, while it is somewhat consistent at least. However, for musl armhf targets, make sure that this also picks arm-linux-gnueabihf, rather than arm-linux-gnueabi.
1 parent be320fd commit 65a56a2

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,7 +2668,9 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
26682668
case llvm::Triple::arm:
26692669
case llvm::Triple::thumb:
26702670
LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
2671-
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
2671+
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
2672+
TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF ||
2673+
TargetTriple.getEnvironment() == llvm::Triple::EABIHF) {
26722674
TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
26732675
} else {
26742676
TripleAliases.append(begin(ARMTriples), end(ARMTriples));
@@ -2677,7 +2679,9 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
26772679
case llvm::Triple::armeb:
26782680
case llvm::Triple::thumbeb:
26792681
LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
2680-
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
2682+
if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF ||
2683+
TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF ||
2684+
TargetTriple.getEnvironment() == llvm::Triple::EABIHF) {
26812685
TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
26822686
} else {
26832687
TripleAliases.append(begin(ARMebTriples), end(ARMebTriples));

clang/lib/Driver/ToolChains/Linux.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,16 @@ std::string Linux::getMultiarchTriple(const Driver &D,
6161
case llvm::Triple::thumb:
6262
if (IsAndroid)
6363
return "arm-linux-androideabi";
64-
if (TargetEnvironment == llvm::Triple::GNUEABIHF)
64+
if (TargetEnvironment == llvm::Triple::GNUEABIHF ||
65+
TargetEnvironment == llvm::Triple::MuslEABIHF ||
66+
TargetEnvironment == llvm::Triple::EABIHF)
6567
return "arm-linux-gnueabihf";
6668
return "arm-linux-gnueabi";
6769
case llvm::Triple::armeb:
6870
case llvm::Triple::thumbeb:
69-
if (TargetEnvironment == llvm::Triple::GNUEABIHF)
71+
if (TargetEnvironment == llvm::Triple::GNUEABIHF ||
72+
TargetEnvironment == llvm::Triple::MuslEABIHF ||
73+
TargetEnvironment == llvm::Triple::EABIHF)
7074
return "armeb-linux-gnueabihf";
7175
return "armeb-linux-gnueabi";
7276
case llvm::Triple::x86:

clang/test/Driver/linux-ld.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,15 @@
541541
// RUN: --gcc-toolchain="" \
542542
// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
543543
// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
544+
//
545+
// Check that musleabihf is treated as a hardfloat config, with respect to
546+
// multiarch directories.
547+
//
548+
// RUN: %clang -### %s -no-pie 2>&1 \
549+
// RUN: --target=arm-unknown-linux-musleabihf -rtlib=platform --unwindlib=platform \
550+
// RUN: --gcc-toolchain="" \
551+
// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
552+
// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
544553
// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
545554
// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/arm-linux-gnueabihf{{/|\\\\}}crt1.o"
546555
// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/arm-linux-gnueabihf{{/|\\\\}}crti.o"

0 commit comments

Comments
 (0)