From d215fb082e33a3b34e3b015a1269ebc2e748454f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Sun, 26 Jul 2015 22:54:50 +0200 Subject: [PATCH] - fix gcc toolchain paths on x32/x8664/ix86 - rel 1 --- llvm.spec | 4 +++- x32-gcc-toolchain.patch | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 x32-gcc-toolchain.patch diff --git a/llvm.spec b/llvm.spec index cc766dd..9fe4c60 100644 --- a/llvm.spec +++ b/llvm.spec @@ -17,7 +17,7 @@ Summary: The Low Level Virtual Machine (An Optimizing Compiler Infrastructure) Summary(pl.UTF-8): Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego) Name: llvm Version: 3.6.2 -Release: 0.1 +Release: 1 License: University of Illinois/NCSA Open Source License Group: Development/Languages #Source0Download: http://llvm.org/releases/download.html @@ -43,6 +43,7 @@ Patch3: %{name}-use-ocamlfind-for-ocamldoc.patch Patch4: %{name}-lldb.patch Patch5: %{name}-lldb-atomic.patch Patch6: %{name}-lld-link.patch +Patch7: x32-gcc-toolchain.patch URL: http://llvm.org/ BuildRequires: autoconf >= 2.60 BuildRequires: automake >= 1:1.9.6 @@ -432,6 +433,7 @@ mv lld-%{version}.src tools/lld %endif %endif %patch6 -p1 +%patch7 -p1 # configure does not properly specify libdir %{__sed} -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/%{_lib}|g' Makefile.config.in diff --git a/x32-gcc-toolchain.patch b/x32-gcc-toolchain.patch new file mode 100644 index 0000000..3992875 --- /dev/null +++ b/x32-gcc-toolchain.patch @@ -0,0 +1,38 @@ +--- llvm-3.6.2.src/tools/clang/lib/Driver/ToolChains.cpp~ 2015-07-26 12:48:18.000000000 +0200 ++++ llvm-3.6.2.src/tools/clang/lib/Driver/ToolChains.cpp 2015-07-26 17:44:56.883613971 +0200 +@@ -1312,6 +1312,10 @@ + "x86_64-linux-android", "x86_64-unknown-linux" + }; + static const char *const X32LibDirs[] = { "/libx32" }; ++ static const char *const X32Triples[] = { ++ "x86_64-pld-linux-gnux32", "amd64-pld-linux-gnux32", ++ "x86_64-linux-gnux32", "x86_64-unknown-linux-gnux32", "x86_64-pc-linux-gnux32" ++ }; + static const char *const X86LibDirs[] = { "/lib32", "/lib" }; + static const char *const X86Triples[] = { + "i686-pld-linux", "i586-pld-linux", "i486-pld-linux", "i386-pld-linux", "athlon-pld-linux", +@@ -1407,15 +1407,19 @@ + } + break; + case llvm::Triple::x86_64: +- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); +- TripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); +- // x32 is always available when x86_64 is available, so adding it as +- // secondary arch with x86_64 triples + if (TargetTriple.getEnvironment() == llvm::Triple::GNUX32) { +- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs)); ++ LibDirs.append(begin(X32LibDirs), end(X32LibDirs)); ++ TripleAliases.append(begin(X32Triples), end(X32Triples)); ++ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); ++ BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs)); + BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); ++ BiarchTripleAliases.append(begin(X86Triples), end(X86Triples)); + } else { ++ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs)); ++ TripleAliases.append(begin(X86_64Triples), end(X86_64Triples)); ++ BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs)); + BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs)); ++ BiarchTripleAliases.append(begin(X32Triples), end(X32Triples)); + BiarchTripleAliases.append(begin(X86Triples), end(X86Triples)); + } + break; -- 2.44.0