blob: b456a59d43f5190923687979490dd3eddcaa5cf8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
From 5840f5a6756f8f67dbba1b47015e75c8c3264b2b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 16 Aug 2017 15:16:15 -0700
Subject: [PATCH 7/8] clang: Fix ldso for musl on x86 and x32 architectures
x32 linker is called ld-musl-x32.so.1 and x86 linker
is called ld-musl-i386.so.1, Currently, linker for
x86 is returned as ld-musl-i586.so.1, when default
arch is i586, which is not the right thing
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
lib/Driver/ToolChains/Linux.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
index 5bca972cc2..2ca285679c 100644
--- a/lib/Driver/ToolChains/Linux.cpp
+++ b/lib/Driver/ToolChains/Linux.cpp
@@ -492,6 +492,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
if (Triple.isMusl()) {
std::string ArchName;
bool IsArm = false;
+ bool isX32 = false;
switch (Arch) {
case llvm::Triple::arm:
@@ -504,6 +505,13 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
ArchName = "armeb";
IsArm = true;
break;
+ case llvm::Triple::x86:
+ ArchName = "i386";
+ break;
+ case llvm::Triple::x86_64:
+ isX32 = Triple.getEnvironment() == llvm::Triple::GNUX32;
+ ArchName = isX32 ? "x32" : Triple.getArchName().str();
+ break;
default:
ArchName = Triple.getArchName().str();
}
--
2.18.0
|