summaryrefslogtreecommitdiff
path: root/core/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'core/binutils')
-rw-r--r--core/binutils/PKGBUILD21
-rw-r--r--core/binutils/binutils-2.23.2-texinfo-5.0.patch162
-rw-r--r--core/binutils/binutils-2.24-lto-testsuite.patch53
-rw-r--r--core/binutils/binutils-2.24-shared-pie.patch99
4 files changed, 168 insertions, 167 deletions
diff --git a/core/binutils/PKGBUILD b/core/binutils/PKGBUILD
index edd433c64..5b588568b 100644
--- a/core/binutils/PKGBUILD
+++ b/core/binutils/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 205615 2014-02-10 03:07:50Z allan $
+# $Id: PKGBUILD 215105 2014-06-14 08:08:00Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
pkgname=binutils
pkgver=2.24
-pkgrel=2
+pkgrel=5.1
pkgdesc="A set of programs to assemble and manipulate binary and object files"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.gnu.org/software/binutils/"
@@ -17,9 +17,14 @@ conflicts=('binutils-multilib')
replaces=('binutils-multilib')
options=('staticlibs' '!distcc' '!ccache')
install=binutils.install
-source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.bz2{,.sig})
+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')
+ 'SKIP'
+ 'b16e895c24ff80acd98a21021eccefad'
+ 'ec59461c4febab9cfe1c1ef33326bc50')
+validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93')
prepare() {
cd ${srcdir}/binutils-${pkgver}
@@ -27,6 +32,12 @@ prepare() {
# hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
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
}
@@ -36,7 +47,7 @@ build() {
${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
--with-lib-path=/usr/lib:/usr/local/lib \
--with-bugurl=https://bugs.archlinux.org/ \
- --enable-threads --enable-shared \
+ --enable-threads --enable-shared --with-pic \
--enable-ld=default --enable-gold --enable-plugins \
--disable-werror
diff --git a/core/binutils/binutils-2.23.2-texinfo-5.0.patch b/core/binutils/binutils-2.23.2-texinfo-5.0.patch
deleted file mode 100644
index 38dc19fb0..000000000
--- a/core/binutils/binutils-2.23.2-texinfo-5.0.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-diff --git a/bfd/doc/bfd.texinfo b/bfd/doc/bfd.texinfo
-index 45ffa73..3aa3300 100644
---- a/bfd/doc/bfd.texinfo
-+++ b/bfd/doc/bfd.texinfo
-@@ -322,7 +324,7 @@ All of BFD lives in one directory.
- @printindex cp
-
- @tex
--% I think something like @colophon should be in texinfo. In the
-+% I think something like @@colophon should be in texinfo. In the
- % meantime:
- \long\def\colophon{\hbox to0pt{}\vfill
- \centerline{The body of this manual is set in}
-@@ -333,7 +335,7 @@ All of BFD lives in one directory.
- \centerline{{\sl\fontname\tensl\/}}
- \centerline{are used for emphasis.}\vfill}
- \page\colophon
--% Blame: doc@cygnus.com, 28mar91.
-+% Blame: doc@@cygnus.com, 28mar91.
- @end tex
-
- @bye
-diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi
-index 56a0510..fb1802b 100644
---- a/binutils/doc/binutils.texi
-+++ b/binutils/doc/binutils.texi
-@@ -148,18 +148,18 @@ in the section entitled ``GNU Free Documentation License''.
- * objcopy:: Copy and translate object files
- * objdump:: Display information from object files
- * ranlib:: Generate index to archive contents
--* readelf:: Display the contents of ELF format files
- * size:: List section sizes and total size
- * strings:: List printable strings from files
- * strip:: Discard symbols
--* elfedit:: Update the ELF header of ELF files
- * c++filt:: Filter to demangle encoded C++ symbols
- * cxxfilt: c++filt. MS-DOS name for c++filt
- * addr2line:: Convert addresses to file and line
- * nlmconv:: Converts object code into an NLM
--* windres:: Manipulate Windows resources
- * windmc:: Generator for Windows message resources
-+* windres:: Manipulate Windows resources
- * dlltool:: Create files needed to build and use DLLs
-+* readelf:: Display the contents of ELF format files
-+* elfedit:: Update the ELF header of ELF files
- * Common Options:: Command-line options for all utilities
- * Selecting the Target System:: How these utilities determine the target
- * Reporting Bugs:: Reporting Bugs
-@@ -2907,7 +2907,7 @@ the Info entries for @file{binutils}.
- @c man end
- @end ignore
-
--@node c++filt, addr2line, elfedit, Top
-+@node c++filt, addr2line, strip, Top
- @chapter c++filt
-
- @kindex c++filt
-@@ -4384,7 +4384,7 @@ equivalent. At least one of the @option{--output-mach},
-
- @table @env
-
--@itemx --input-mach=@var{machine}
-+@item --input-mach=@var{machine}
- Set the matching input ELF machine type to @var{machine}. If
- @option{--input-mach} isn't specified, it will match any ELF
- machine types.
-@@ -4392,21 +4392,21 @@ machine types.
- The supported ELF machine types are, @var{L1OM}, @var{K1OM} and
- @var{x86-64}.
-
--@itemx --output-mach=@var{machine}
-+@item --output-mach=@var{machine}
- Change the ELF machine type in the ELF header to @var{machine}. The
- supported ELF machine types are the same as @option{--input-mach}.
-
--@itemx --input-type=@var{type}
-+@item --input-type=@var{type}
- Set the matching input ELF file type to @var{type}. If
- @option{--input-type} isn't specified, it will match any ELF file types.
-
- The supported ELF file types are, @var{rel}, @var{exec} and @var{dyn}.
-
--@itemx --output-type=@var{type}
-+@item --output-type=@var{type}
- Change the ELF file type in the ELF header to @var{type}. The
- supported ELF types are the same as @option{--input-type}.
-
--@itemx --input-osabi=@var{osabi}
-+@item --input-osabi=@var{osabi}
- Set the matching input ELF file OSABI to @var{osabi}. If
- @option{--input-osabi} isn't specified, it will match any ELF OSABIs.
-
-@@ -4416,7 +4416,7 @@ The supported ELF OSABIs are, @var{none}, @var{HPUX}, @var{NetBSD},
- @var{FreeBSD}, @var{TRU64}, @var{Modesto}, @var{OpenBSD}, @var{OpenVMS},
- @var{NSK}, @var{AROS} and @var{FenixOS}.
-
--@itemx --output-osabi=@var{osabi}
-+@item --output-osabi=@var{osabi}
- Change the ELF OSABI in the ELF header to @var{osabi}. The
- supported ELF OSABI are the same as @option{--input-osabi}.
-
-diff --git a/ld/ld.texinfo b/ld/ld.texinfo
-index c7ae2a5..4777ad5 100644
---- a/ld/ld.texinfo
-+++ b/ld/ld.texinfo
-@@ -142,12 +144,12 @@ in the section entitled ``GNU Free Documentation License''.
- @ifset ARM
- * ARM:: ld and the ARM family
- @end ifset
--@ifset HPPA
--* HPPA ELF32:: ld and HPPA 32-bit ELF
--@end ifset
- @ifset M68HC11
- * M68HC11/68HC12:: ld and the Motorola 68HC11 and 68HC12 families
- @end ifset
-+@ifset HPPA
-+* HPPA ELF32:: ld and HPPA 32-bit ELF
-+@end ifset
- @ifset M68K
- * M68K:: ld and Motorola 68K family
- @end ifset
-@@ -6012,6 +6014,9 @@ functionality are not listed.
- @ifset I960
- * i960:: @command{ld} and the Intel 960 family
- @end ifset
-+@ifset M68HC11
-+* M68HC11/68HC12:: @code{ld} and the Motorola 68HC11 and 68HC12 families
-+@end ifset
- @ifset ARM
- * ARM:: @command{ld} and the ARM family
- @end ifset
-@@ -6027,9 +6032,6 @@ functionality are not listed.
- @ifset MSP430
- * MSP430:: @command{ld} and MSP430
- @end ifset
--@ifset M68HC11
--* M68HC11/68HC12:: @code{ld} and the Motorola 68HC11 and 68HC12 families
--@end ifset
- @ifset POWERPC
- * PowerPC ELF32:: @command{ld} and PowerPC 32-bit ELF Support
- @end ifset
-@@ -7877,7 +7879,7 @@ If you have more than one @code{SECT} statement for the same
- @printindex cp
-
- @tex
--% I think something like @colophon should be in texinfo. In the
-+% I think something like @@colophon should be in texinfo. In the
- % meantime:
- \long\def\colophon{\hbox to0pt{}\vfill
- \centerline{The body of this manual is set in}
-@@ -7888,7 +7890,7 @@ If you have more than one @code{SECT} statement for the same
- \centerline{{\sl\fontname\tensl\/}}
- \centerline{are used for emphasis.}\vfill}
- \page\colophon
--% Blame: doc@cygnus.com, 28mar91.
-+% Blame: doc@@cygnus.com, 28mar91.
- @end tex
-
- @bye
---
-1.7.1
-
diff --git a/core/binutils/binutils-2.24-lto-testsuite.patch b/core/binutils/binutils-2.24-lto-testsuite.patch
new file mode 100644
index 000000000..498e0b59d
--- /dev/null
+++ b/core/binutils/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/core/binutils/binutils-2.24-shared-pie.patch b/core/binutils/binutils-2.24-shared-pie.patch
new file mode 100644
index 000000000..d40aa47e0
--- /dev/null
+++ b/core/binutils/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
+