summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFranklyn Tackitt2015-07-08 14:06:29 -0700
committerFranklyn Tackitt2015-07-08 14:06:29 -0700
commitd90bf61ca4f71153e719fdfa023c7502b0abdc5d (patch)
tree98ac026163650b8e963b64cf4e352dbfc1b9f54d
downloadaur-d90bf61ca4f71153e719fdfa023c7502b0abdc5d.tar.gz
Initial commit
-rw-r--r--.SRCINFO20
-rw-r--r--PKGBUILD57
-rw-r--r--binutils-2.24-lto-testsuite.patch53
-rw-r--r--binutils-2.24-shared-pie.patch99
4 files changed, 229 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..a8a8f7439302
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,20 @@
+pkgbase = x86_64-efi-pe-binutils
+ pkgdesc = A set of programs to assemble and manipulate binary and object files for the x86_64 architecture in the Portable Executable format.
+ pkgver = 2.24
+ pkgrel = 0
+ url = http://www.gnu.org/software/binutils/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = zlib
+ source = ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2
+ source = ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2.sig
+ source = binutils-2.24-lto-testsuite.patch
+ source = binutils-2.24-shared-pie.patch
+ md5sums = e0f71a7b2ddab0f8612336ac81d9636b
+ md5sums = SKIP
+ md5sums = b16e895c24ff80acd98a21021eccefad
+ md5sums = ec59461c4febab9cfe1c1ef33326bc50
+
+pkgname = x86_64-efi-pe-binutils
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..d3747778a04d
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,57 @@
+# Maintainer: Jeroen Bollen <jbinero@gmail.com>
+
+pkgname=x86_64-efi-pe-binutils
+pkgver=2.24
+pkgrel=0
+pkgdesc="A set of programs to assemble and manipulate binary and object files for the x86_64 architecture in the Portable Executable format. "
+url="http://www.gnu.org/software/binutils/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('zlib')
+source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.bz2{,.sig}
+ binutils-2.24-lto-testsuite.patch
+ binutils-2.24-shared-pie.patch)
+md5sums=('e0f71a7b2ddab0f8612336ac81d9636b'
+ 'SKIP'
+ 'b16e895c24ff80acd98a21021eccefad'
+ 'ec59461c4febab9cfe1c1ef33326bc50')
+
+_target="x86_64-efi-pe"
+
+prepare() {
+ cd ${srcdir}/binutils-${pkgver}
+
+ sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+ # fix lto testsuite with gcc-4.9 - commit b35d44f1
+ patch -p1 -i $srcdir/binutils-2.24-lto-testsuite.patch
+
+ # fix issues with -static -fPIE -pie - commit 4199e3b8
+ patch -p1 -i $srcdir/binutils-2.24-shared-pie.patch
+
+ mkdir ${srcdir}/binutils-build
+}
+
+build() {
+ cd ${srcdir}/binutils-build
+ ${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
+ --with-lib-path=/usr/lib:/usr/local/lib \
+ --program-prefix=${_target}- \
+ --target=${_target} --disable-werror
+
+ # check the host environment and makes sure all the necessary tools are available
+ make configure-host
+ make tooldir=/usr
+}
+
+package() {
+ cd ${srcdir}/binutils-build
+ make prefix=${pkgdir}/usr tooldir=${pkgdir}/usr install
+
+ msg "Removing duplicit files..."
+ # remove these files as they are already in the system
+ # (with native binutils)
+ rm -Rf ${pkgdir}/usr/share/
+ # remove conflicting binaries
+ find ${pkgdir}/usr/bin/ -type f -not -name "${_target}-*" -delete
+}
diff --git a/binutils-2.24-lto-testsuite.patch b/binutils-2.24-lto-testsuite.patch
new file mode 100644
index 000000000000..498e0b59dddb
--- /dev/null
+++ b/binutils-2.24-lto-testsuite.patch
@@ -0,0 +1,53 @@
+index c5249f0..69946de 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -57,7 +57,7 @@ set lto_link_tests {
+ "" "-O2"
+ {lto-3c.c} {} "libdummy.a"}
+ {"Build liblto-3.a"
+- "" "-flto"
++ "" "-flto -ffat-lto-objects"
+ {lto-3b.c} {} "liblto-3.a"}
+ {"Build libdummy.a 5a"
+ "" "-flto"
+@@ -111,7 +111,7 @@ set lto_link_tests {
+ "" ""
+ {pr12758a.s} {} "libdummy.a"}
+ {"Build libpr12758.a"
+- "" "-flto -O2"
++ "" "-flto -O2 -ffat-lto-objects"
+ {pr12758b.c} {} "libpr12758.a"}
+ {"PR ld/12758"
+ "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
+@@ -120,13 +120,13 @@ set lto_link_tests {
+ "" ""
+ {pr12760a.c} {} "libdummy.a"}
+ {"Build libpr12760.a"
+- "" "-flto -O2"
++ "" "-flto -O2 -ffat-lto-objects"
+ {pr12760b.c} {} "libpr12760.a"}
+ {"PR ld/12760"
+ "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
+ {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
+ {"Build libpr13183.a"
+- "-T" "-flto -O2"
++ "-T" "-flto -O2 -ffat-lto-objects"
+ {pr13183a.c} {} "libpr13183.a"}
+ {"Build libdummy.a PR ld/13183"
+ "" "-flto -O2"
+diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
+index 8df42ae..175449a 100644
+--- a/ld/testsuite/lib/ld-lib.exp
++++ b/ld/testsuite/lib/ld-lib.exp
+@@ -1643,7 +1643,7 @@ proc check_lto_available { } {
+ set f [open $src "w"]
+ puts $f ""
+ close $f
+- set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
++ set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -ffat-lto-objects -fuse-linker-plugin $src -o $output"]
+ if { [lindex $status 0] == 0 } {
+ set lto_available_saved 1
+ } else {
+--
+1.7.1
+
diff --git a/binutils-2.24-shared-pie.patch b/binutils-2.24-shared-pie.patch
new file mode 100644
index 000000000000..d40aa47e0748
--- /dev/null
+++ b/binutils-2.24-shared-pie.patch
@@ -0,0 +1,99 @@
+diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
+index 9a2fe89..13f86f0 100644
+--- a/ld/emultempl/elf32.em
++++ b/ld/emultempl/elf32.em
+@@ -1480,6 +1480,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+ const char *rpath;
+ asection *sinterp;
+ bfd *abfd;
++ struct elf_link_hash_entry *ehdr_start = NULL;
++ struct bfd_link_hash_entry ehdr_start_save;
+
+ if (is_elf_hash_table (link_info.hash))
+ {
+@@ -1504,6 +1506,16 @@ gld${EMULATION_NAME}_before_allocation (void)
+ _bfd_elf_link_hash_hide_symbol (&link_info, h, TRUE);
+ if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
+ h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
++ /* Don't leave the symbol undefined. Undefined hidden
++ symbols typically won't have dynamic relocations, but
++ we most likely will need dynamic relocations for
++ __ehdr_start if we are building a PIE or shared
++ library. */
++ ehdr_start = h;
++ ehdr_start_save = h->root;
++ h->root.type = bfd_link_hash_defined;
++ h->root.u.def.section = bfd_abs_section_ptr;
++ h->root.u.def.value = 0;
+ }
+ }
+
+@@ -1620,6 +1632,14 @@ ${ELF_INTERPRETER_SET_DEFAULT}
+
+ if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
+ einfo ("%P%F: failed to set dynamic section sizes: %E\n");
++
++ if (ehdr_start != NULL)
++ {
++ /* If we twiddled __ehdr_start to defined earlier, put it back
++ as it was. */
++ ehdr_start->root.type = ehdr_start_save.type;
++ ehdr_start->root.u = ehdr_start_save.u;
++ }
+ }
+
+ EOF
+diff --git a/ld/testsuite/ld-elf/ehdr_start-shared.d b/ld/testsuite/ld-elf/ehdr_start-shared.d
+new file mode 100644
+index 0000000..c17516a
+--- /dev/null
++++ b/ld/testsuite/ld-elf/ehdr_start-shared.d
+@@ -0,0 +1,9 @@
++#source: ehdr_start.s
++#ld: -e _start -shared
++#nm: -n
++#target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: cris*-*-* frv-*-*
++
++#...
++[0-9a-f]*000 [Adrt] __ehdr_start
++#pass
+diff --git a/ld/testsuite/ld-elf/ehdr_start-userdef.d b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+index 2a88e98..b58ae3f 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-userdef.d
++++ b/ld/testsuite/ld-elf/ehdr_start-userdef.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-userdef.t
+ #readelf: -Ws
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+
+ #...
+ Symbol table '\.symtab' contains [0-9]+ entries:
+diff --git a/ld/testsuite/ld-elf/ehdr_start-weak.d b/ld/testsuite/ld-elf/ehdr_start-weak.d
+index 8bd9035..24ae34c 100644
+--- a/ld/testsuite/ld-elf/ehdr_start-weak.d
++++ b/ld/testsuite/ld-elf/ehdr_start-weak.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start -T ehdr_start-missing.t
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+
+ #...
+ \s+[wU] __ehdr_start
+diff --git a/ld/testsuite/ld-elf/ehdr_start.d b/ld/testsuite/ld-elf/ehdr_start.d
+index 52e5b54..d538b66 100644
+--- a/ld/testsuite/ld-elf/ehdr_start.d
++++ b/ld/testsuite/ld-elf/ehdr_start.d
+@@ -2,6 +2,7 @@
+ #ld: -e _start
+ #nm: -n
+ #target: *-*-linux* *-*-gnu* *-*-nacl*
++#xfail: frv-*-*
+
+ #...
+ [0-9a-f]*000 [Adrt] __ehdr_start
+--
+1.7.1
+