summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Hansen2016-04-19 15:37:35 -0700
committerMichael Hansen2016-04-19 15:37:35 -0700
commit7575563563e3018b2e1b5a224993cb849cc0b2e1 (patch)
tree64933d04df8924215c4e0d9e613da44ddc8fc170
parent89a7dd3c02a74ce19cca083785bde89ce4dbfdee (diff)
downloadaur-7575563563e3018b2e1b5a224993cb849cc0b2e1.tar.gz
Add fixes for compiling with binutils-2.26
-rw-r--r--.SRCINFO10
-rw-r--r--PKGBUILD18
-rw-r--r--binutils226-swift-driver.patch14
-rw-r--r--binutils226-swift.patch86
4 files changed, 118 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index d683ca735a26..637da7c91e40 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,9 @@
# Generated by mksrcinfo v8
-# Wed Apr 13 16:18:45 UTC 2016
+# Tue Apr 19 22:32:06 UTC 2016
pkgbase = swift-development
pkgdesc = The Swift programming language and debugger - latest development snapshot
pkgver = DEVELOPMENT.SNAPSHOT.2016.04.12.a
- pkgrel = 1
+ pkgrel = 2
url = http://swift.org/
arch = i686
arch = x86_64
@@ -15,7 +15,7 @@ pkgbase = swift-development
makedepends = clang>=3.6
makedepends = python2-six
makedepends = perl
- makedepends = binutils<2.26
+ makedepends = binutils>=2.26
depends = python2
depends = libutil-linux
depends = icu
@@ -35,6 +35,8 @@ pkgbase = swift-development
source = swift-corelibs-foundation-DEVELOPMENT-SNAPSHOT-2016-04-12-a.tar.gz::https://github.com/apple/swift-corelibs-foundation/archive/swift-DEVELOPMENT-SNAPSHOT-2016-04-12-a.tar.gz
source = swift-integration-tests-DEVELOPMENT-SNAPSHOT-2016-04-12-a.tar.gz::https://github.com/apple/swift-integration-tests/archive/swift-DEVELOPMENT-SNAPSHOT-2016-04-12-a.tar.gz
source = swift-no-docs.patch
+ source = binutils226-swift.patch
+ source = binutils226-swift-driver.patch
sha256sums = 290470b39b188ca564dfff487035435d062fa83649689c0cff5e7ad386efceb4
sha256sums = 0e8bfc92508c14f0ed80b4811c06df403639fcbd27422ba4551b15799793ef23
sha256sums = 2bc379ad1b105783b17f87424e6681aaa1df903319326861f71bdb93bd5fa98e
@@ -46,6 +48,8 @@ pkgbase = swift-development
sha256sums = 942c3494c182cb767ac71ad0be2baebf34274ec38901fbdebf61ba912b2f73b1
sha256sums = 3d616a043ffff2ecbcaa2367347168f5a2220d222faa9812abada902b59d88d5
sha256sums = 1a8663c48a1a203d1825ae62a7e4191e4980a2dad461d4d88152221ad9e2171d
+ sha256sums = 2d8afb6a3d6f7aca1636eae961e4d1e7f486df420e1a726c69d027e4b65c73c5
+ sha256sums = 0aa6868dac834ab13a9f61a0e406c6dc25f39afdf086cb93d90d85c39083e589
pkgname = swift-development
pkgdesc = The Swift programming language compiler and tools - development snapshot
diff --git a/PKGBUILD b/PKGBUILD
index 14d8b4fd9ada..2a47e1f2c4a4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@ pkgbase=swift-development
pkgname=(swift-development swift-lldb-development)
_swiftver=DEVELOPMENT-SNAPSHOT-2016-04-12-a
pkgver=${_swiftver//-/.}
-pkgrel=1
+pkgrel=2
pkgdesc="The Swift programming language and debugger - latest development snapshot"
arch=('i686' 'x86_64')
url="http://swift.org/"
@@ -10,11 +10,7 @@ license=('apache')
depends=('python2' 'libutil-linux' 'icu' 'libbsd' 'libedit' 'libxml2'
'sqlite' 'ncurses')
makedepends=('git' 'cmake' 'ninja' 'swig' 'clang>=3.6' 'python2-six' 'perl'
- # See https://llvm.org/bugs/show_bug.cgi?id=26580 and
- # https://sourceware.org/bugzilla/show_bug.cgi?id=19612
- # NOTE: Using gold doesn't completely work either, since gold
- # isn't used to link the swift std libraries by default
- 'binutils<2.26')
+ 'binutils>=2.26')
source=(
"swift-${_swiftver}.tar.gz::https://github.com/apple/swift/archive/swift-${_swiftver}.tar.gz"
"swift-llvm-${_swiftver}.tar.gz::https://github.com/apple/swift-llvm/archive/swift-${_swiftver}.tar.gz"
@@ -27,6 +23,7 @@ source=(
"swift-corelibs-foundation-${_swiftver}.tar.gz::https://github.com/apple/swift-corelibs-foundation/archive/swift-${_swiftver}.tar.gz"
"swift-integration-tests-${_swiftver}.tar.gz::https://github.com/apple/swift-integration-tests/archive/swift-${_swiftver}.tar.gz"
"swift-no-docs.patch"
+ "binutils226-swift.patch" "binutils226-swift-driver.patch"
)
sha256sums=('290470b39b188ca564dfff487035435d062fa83649689c0cff5e7ad386efceb4'
'0e8bfc92508c14f0ed80b4811c06df403639fcbd27422ba4551b15799793ef23'
@@ -38,7 +35,9 @@ sha256sums=('290470b39b188ca564dfff487035435d062fa83649689c0cff5e7ad386efceb4'
'666be3e751f50f3932730e88f18d61cb61dfdd771b8a272179f969736da22086'
'942c3494c182cb767ac71ad0be2baebf34274ec38901fbdebf61ba912b2f73b1'
'3d616a043ffff2ecbcaa2367347168f5a2220d222faa9812abada902b59d88d5'
- '1a8663c48a1a203d1825ae62a7e4191e4980a2dad461d4d88152221ad9e2171d')
+ '1a8663c48a1a203d1825ae62a7e4191e4980a2dad461d4d88152221ad9e2171d'
+ '2d8afb6a3d6f7aca1636eae961e4d1e7f486df420e1a726c69d027e4b65c73c5'
+ '0aa6868dac834ab13a9f61a0e406c6dc25f39afdf086cb93d90d85c39083e589')
prepare() {
# Use python2 where appropriate
@@ -70,6 +69,11 @@ prepare() {
# Sphinx 1.3.5 raises a warning (promoted to error) when using an unknown
# syntax highlighting language (like "swift").
( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/swift-no-docs.patch" )
+
+ # Patches for compiling against binutils 2.26
+ # (See https://bugs.swift.org/projects/SR/issues/SR-1023)
+ ( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/binutils226-swift.patch" )
+ ( cd "${srcdir}/swift" && patch -p1 -i "${srcdir}/binutils226-swift-driver.patch" )
}
build() {
diff --git a/binutils226-swift-driver.patch b/binutils226-swift-driver.patch
new file mode 100644
index 000000000000..994781908d4a
--- /dev/null
+++ b/binutils226-swift-driver.patch
@@ -0,0 +1,14 @@
+diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
+index 5e20ac3..eb4b846 100644
+--- a/lib/Driver/ToolChains.cpp
++++ b/lib/Driver/ToolChains.cpp
+@@ -1268,6 +1268,9 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
+ Arguments.push_back(context.Args.MakeArgString("--target=" + getTriple().str()));
+ }
+
++ Arguments.push_back("-Wl,-z,nocopyreloc");
++ Arguments.push_back("-Wl,-z,noextern-protected-data");
++
+ // Add the runtime library link path, which is platform-specific and found
+ // relative to the compiler.
+ llvm::SmallString<128> RuntimeLibPath;
diff --git a/binutils226-swift.patch b/binutils226-swift.patch
new file mode 100644
index 000000000000..9108bea1889d
--- /dev/null
+++ b/binutils226-swift.patch
@@ -0,0 +1,86 @@
+From 59d2e56811a01ed543010b93109017f03e8881bc Mon Sep 17 00:00:00 2001
+From: Ryan Lovelett <ryan@lovelett.me>
+Date: Mon, 4 Apr 2016 21:28:40 -0400
+Subject: [PATCH] Work around relocation R_X86_64_PC32 link error
+
+A more complete discussion of the error and its background can be found
+in SR-1023.
+
+The brief overview is that in versions of `ld` that would be effected by
+this dynamic relocation issue there are two flags: `-z nocopyreloc` and
+`-z noextern-protected-data`. If `ld` supports the flags then they are
+sento to the linker. This patch checks that the linker supports the
+flags and then optionally sets them.
+
+The code to check if `ld` supports the flags is inspired by this CMake
+mailing list entry.
+
+https://cmake.org/pipermail/cmake/2011-July/045525.html
+---
+ CMakeLists.txt | 7 +++++++
+ cmake/modules/AddSwift.cmake | 8 ++++++++
+ cmake/modules/CheckLinkerDynamicRelocationFlags.cmake | 11 +++++++++++
+ 3 files changed, 26 insertions(+)
+ create mode 100644 cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cae3647..b1ef7b6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -277,6 +277,7 @@ option(SWIFT_BUILD_SOURCEKIT
+ #
+
+ include(CheckCXXSourceRuns)
++include(CheckLinkerDynamicRelocationFlags)
+ include(CMakeParseArguments)
+ include(SwiftTranslateFlag)
+ include(SwiftHandleGybSources)
+@@ -437,6 +438,12 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ set(SWIFT_HOST_VARIANT_SDK "LINUX")
+ set(SWIFT_PRIMARY_VARIANT_SDK_default "LINUX")
+
++ # Support relative relocation against protected symbols in binutils 2.26
++ check_linker_supports_flag("-Wl,-z,nocopyreloc"
++ "SWIFT_LINKER_SUPPORTS_NOCOPYRELOC")
++ check_linker_supports_flag("-Wl,-z,noextern-protected-data"
++ "SWIFT_LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA")
++
+ # FIXME: This will not work while trying to cross-compile.
+ if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
+ set(SWIFT_HOST_VARIANT_ARCH "x86_64")
+diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake
+index 7294dd4..f6dae01 100644
+--- a/cmake/modules/AddSwift.cmake
++++ b/cmake/modules/AddSwift.cmake
+@@ -1189,6 +1189,14 @@ function(_add_swift_library_single target name)
+ list(APPEND link_flags "-fuse-ld=gold")
+ endif()
+
++ # Support relative relocation against protected symbols in binutils 2.26
++ if(SWIFT_LINKER_SUPPORTS_NOCOPYRELOC)
++ list(APPEND link_flags "-Wl,-z,nocopyreloc")
++ endif()
++ if(SWIFT_LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
++ list(APPEND link_flags "-Wl,-z,noextern-protected-data")
++ endif()
++
+ # Configure plist creation for OS X.
+ set(PLIST_INFO_PLIST "Info.plist" CACHE STRING "Plist name")
+ if(APPLE AND SWIFTLIB_SINGLE_IS_STDLIB)
+diff --git a/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake b/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
+new file mode 100644
+index 0000000..0a53f77
+--- /dev/null
++++ b/cmake/modules/CheckLinkerDynamicRelocationFlags.cmake
+@@ -0,0 +1,11 @@
++include(CheckCXXCompilerFlag)
++
++function(check_linker_supports_flag flag_to_test var_name)
++ set(CMAKE_REQUIRED_FLAGS "${flag_to_test}")
++ check_cxx_compiler_flag("" LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
++ if(LINKER_SUPPORTS_NOEXTERN_PROTECTED_DATA)
++ set("${var_name}" TRUE PARENT_SCOPE)
++ else()
++ set("${var_name}" FALSE PARENT_SCOPE)
++ endif()
++endfunction()