File tree Expand file tree Collapse file tree 5 files changed +20
-1
lines changed Expand file tree Collapse file tree 5 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -401,6 +401,11 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
401
401
case llvm::Triple::x86:
402
402
ArchName = " i386" ;
403
403
break ;
404
+ case llvm::Triple::x86_64:
405
+ ArchName = Triple.getEnvironment () == llvm::Triple::MuslX32
406
+ ? " x32"
407
+ : Triple.getArchName ().str ();
408
+ break ;
404
409
default :
405
410
ArchName = Triple.getArchName ().str ();
406
411
}
Original file line number Diff line number Diff line change 75
75
// RUN: %clang -### %s --target=i686-linux-musl --sysroot= \
76
76
// RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_I686
77
77
// MUSL_I686: "-dynamic-linker" "/lib/ld-musl-i386.so.1"
78
+
79
+ // RUN: %clang -### %s --target=x86_64-linux-muslx32 --sysroot= \
80
+ // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_X32
81
+ // MUSL_X32: "-dynamic-linker" "/lib/ld-musl-x32.so.1"
Original file line number Diff line number Diff line change @@ -218,6 +218,7 @@ class Triple {
218
218
Musl,
219
219
MuslEABI,
220
220
MuslEABIHF,
221
+ MuslX32,
221
222
222
223
MSVC,
223
224
Itanium,
@@ -688,7 +689,8 @@ class Triple {
688
689
bool isMusl () const {
689
690
return getEnvironment () == Triple::Musl ||
690
691
getEnvironment () == Triple::MuslEABI ||
691
- getEnvironment () == Triple::MuslEABIHF;
692
+ getEnvironment () == Triple::MuslEABIHF ||
693
+ getEnvironment () == Triple::MuslX32;
692
694
}
693
695
694
696
// / Tests whether the target is SPIR (32- or 64-bit).
Original file line number Diff line number Diff line change @@ -250,6 +250,7 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
250
250
case Musl: return " musl" ;
251
251
case MuslEABI: return " musleabi" ;
252
252
case MuslEABIHF: return " musleabihf" ;
253
+ case MuslX32: return " muslx32" ;
253
254
case Simulator: return " simulator" ;
254
255
}
255
256
@@ -555,6 +556,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
555
556
.StartsWith (" android" , Triple::Android)
556
557
.StartsWith (" musleabihf" , Triple::MuslEABIHF)
557
558
.StartsWith (" musleabi" , Triple::MuslEABI)
559
+ .StartsWith (" muslx32" , Triple::MuslX32)
558
560
.StartsWith (" musl" , Triple::Musl)
559
561
.StartsWith (" msvc" , Triple::MSVC)
560
562
.StartsWith (" itanium" , Triple::Itanium)
Original file line number Diff line number Diff line change @@ -111,6 +111,12 @@ TEST(TripleTest, ParsedIDs) {
111
111
EXPECT_EQ (Triple::Linux, T.getOS ());
112
112
EXPECT_EQ (Triple::Musl, T.getEnvironment ());
113
113
114
+ T = Triple (" x86_64-pc-linux-muslx32" );
115
+ EXPECT_EQ (Triple::x86_64, T.getArch ());
116
+ EXPECT_EQ (Triple::PC, T.getVendor ());
117
+ EXPECT_EQ (Triple::Linux, T.getOS ());
118
+ EXPECT_EQ (Triple::MuslX32, T.getEnvironment ());
119
+
114
120
// PS4 has two spellings for the vendor.
115
121
T = Triple (" x86_64-scei-ps4" );
116
122
EXPECT_EQ (Triple::x86_64, T.getArch ());
You can’t perform that action at this time.
0 commit comments