From 0383b374ef8e328de9622505e508950d4d4d2596 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 16 Aug 2017 15:51:39 -0700 Subject: clang: Fix dynamic linker on x86/musl Signed-off-by: Khem Raj --- ...dso-for-musl-on-x86-and-x32-architectures.patch | 41 ++++++++++++++++++++++ recipes-devtools/clang/common.inc | 1 + 2 files changed, 42 insertions(+) create mode 100644 recipes-devtools/clang/clang/0008-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch diff --git a/recipes-devtools/clang/clang/0008-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch b/recipes-devtools/clang/clang/0008-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch new file mode 100644 index 0000000..51970e8 --- /dev/null +++ b/recipes-devtools/clang/clang/0008-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch @@ -0,0 +1,41 @@ +From cdae04d9e1950f07e89ea5aa8eed7ed7ce6b7938 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 16 Aug 2017 15:16:15 -0700 +Subject: [PATCH] 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 +--- + lib/Driver/ToolChains/Linux.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +Index: clang/lib/Driver/ToolChains/Linux.cpp +=================================================================== +--- clang.orig/lib/Driver/ToolChains/Linux.cpp ++++ clang/lib/Driver/ToolChains/Linux.cpp +@@ -422,6 +422,7 @@ std::string Linux::getDynamicLinker(cons + if (Triple.isMusl()) { + std::string ArchName; + bool IsArm = false; ++ bool isX32 = false; + + switch (Arch) { + case llvm::Triple::arm: +@@ -434,6 +435,13 @@ std::string Linux::getDynamicLinker(cons + 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(); + } diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc index f5e7acb..93463b7 100644 --- a/recipes-devtools/clang/common.inc +++ b/recipes-devtools/clang/common.inc @@ -18,6 +18,7 @@ CLANGPATCHES = "\ file://0004-clang-Prepend-trailing-to-sysroot.patch;patchdir=tools/clang \ file://0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch;patchdir=tools/clang \ file://0006-clang-Define-releative-gcc-installation-dir.patch;patchdir=tools/clang \ + file://0008-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch;patchdir=tools/clang \ " CLANGPATCHES += "${@'file://0007-clang-Enable-SSP-and-PIE-by-default.patch;patchdir=tools/clang' if '${GCCPIE}' else ''}" -- cgit v1.2.3-54-g00ecf