aboutsummaryrefslogtreecommitdiffstats
path: root/community/binutils-avr
diff options
context:
space:
mode:
authorStefan Wagner <stw@bit-strickerei.de>2016-08-18 20:01:37 +0200
committerCarlo Landmeter <clandmeter@gmail.com>2016-08-18 21:21:06 +0200
commit2f2883cc10692bcb0db5997907b081268fad8d79 (patch)
treed81d38b511465f265bd65324bb46fdfeee4749e6 /community/binutils-avr
parentbe6dec1f57e2315d6b3e04d81be7d2220edbdf7f (diff)
testing/[various]: move to community
Diffstat (limited to 'community/binutils-avr')
-rw-r--r--community/binutils-avr/APKBUILD54
-rw-r--r--community/binutils-avr/binutils-ld-fix-static-linking.patch46
-rw-r--r--community/binutils-avr/hash-style-gnu.patch31
3 files changed, 131 insertions, 0 deletions
diff --git a/community/binutils-avr/APKBUILD b/community/binutils-avr/APKBUILD
new file mode 100644
index 00000000000..8688240f27f
--- /dev/null
+++ b/community/binutils-avr/APKBUILD
@@ -0,0 +1,54 @@
+# Contributor: Stefan Wagner <stw@bit-strickerei.de>
+# Maintainer: Stefan Wagner <stw@bit-strickerei.de>
+pkgname=binutils-avr
+pkgver=2.25.1
+pkgrel=0
+pkgdesc="Tools necessary to build programs for AVR targets"
+url="http://www.gnu.org/software/binutils/"
+makedepends="gettext libtool autoconf automake"
+arch="all"
+license="GPL2 GPL3+ LGPL2 BSD"
+subpackages="$pkgname-doc"
+source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
+ binutils-ld-fix-static-linking.patch
+ hash-style-gnu.patch"
+
+builddir="$srcdir/binutils-$pkgver"
+_workingdir="$srcdir/binutils-build"
+
+build() {
+ mkdir "$_workingdir" || return 1
+ cd "$_workingdir"
+ "$builddir"/configure \
+ --build="$CBUILD" \
+ --target=avr \
+ --with-lib-path=/usr/lib \
+ --prefix=/usr \
+ --enable-ld=default \
+ --enable-gold=yes \
+ --enable-plugins \
+ --disable-multilib \
+ --disable-werror \
+ --disable-nls \
+ || return 1
+ make -j1 tooldir=/usr
+}
+
+package() {
+ cd "$_workingdir"
+ make tooldir=/usr install DESTDIR="$pkgdir" || return 1
+ rm -rf "$pkgdir"/usr/share/info
+ for bin in ar as nm objcopy objdump ranlib strip readelf; do
+ rm -f "$pkgdir"/usr/bin/"$bin"
+ done
+}
+
+md5sums="ac493a78de4fee895961d025b7905be4 binutils-2.25.1.tar.bz2
+c9f308494b87c243f121a56d58f2da87 binutils-ld-fix-static-linking.patch
+686071a371b6d7aaad86c3a5c09ba6d3 hash-style-gnu.patch"
+sha256sums="b5b14added7d78a8d1ca70b5cb75fef57ce2197264f4f5835326b0df22ac9f22 binutils-2.25.1.tar.bz2
+d5c5581d0ba04ef2e3690f6fb57435bf7ce343f2376fe972a2a693c5429eec9c binutils-ld-fix-static-linking.patch
+d30633153c41f0a59956f4d49ad12c0b53dabfd9f48175d0db0a1a5f2263cdfc hash-style-gnu.patch"
+sha512sums="0b36dda0e6d32cd25613c0e64b56b28312515c54d6a159efd3db9a86717f114ab0a0a1f69d08975084d55713ebaeab64e4085c9b3d1c3fa86712869f80eb954d binutils-2.25.1.tar.bz2
+ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
+24e853bf4b58621a77921087e599da2ace47ba3079e2d50fb5d08ae399be5f060c5fdd7f65257bcc0526aebc66e68b98aafd45d714c035da8ea2bdc3d8d4e375 hash-style-gnu.patch"
diff --git a/community/binutils-avr/binutils-ld-fix-static-linking.patch b/community/binutils-avr/binutils-ld-fix-static-linking.patch
new file mode 100644
index 00000000000..bc5d762656d
--- /dev/null
+++ b/community/binutils-avr/binutils-ld-fix-static-linking.patch
@@ -0,0 +1,46 @@
+This fixes static linking for our hardened toolchain
+diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
+index e8126cb..9532bfb 100644
+--- a/ld/scripttempl/elf.sc
++++ b/ld/scripttempl/elf.sc
+@@ -235,8 +235,8 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
+ if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then
+ SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))"
+ SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))"
+- CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors"
+- DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors"
++ CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .ctors"
++ DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .dtors"
+ else
+ SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))"
+ SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))"
+@@ -270,15 +270,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+ doesn't matter which directory crtbegin.o
+ is in. */
+
+- KEEP (*crtbegin.o(.ctors))
+- KEEP (*crtbegin?.o(.ctors))
++ KEEP (*crtbegin*.o(.ctors))
+
+ /* We don't want to include the .ctor section from
+ the crtend.o file until after the sorted ctors.
+ The .ctor section from the crtend file contains the
+ end of ctors marker and it must be last */
+
+- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ ${CONSTRUCTING+${CTOR_END}}
+@@ -286,9 +285,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+ DTOR=".dtors ${CONSTRUCTING-0} :
+ {
+ ${CONSTRUCTING+${DTOR_START}}
+- KEEP (*crtbegin.o(.dtors))
+- KEEP (*crtbegin?.o(.dtors))
+- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
++ KEEP (*crtbegin*.o(.dtors))
++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ ${CONSTRUCTING+${DTOR_END}}
diff --git a/community/binutils-avr/hash-style-gnu.patch b/community/binutils-avr/hash-style-gnu.patch
new file mode 100644
index 00000000000..2e6c01972e0
--- /dev/null
+++ b/community/binutils-avr/hash-style-gnu.patch
@@ -0,0 +1,31 @@
+# DP: Default to --hash-style=gnu in ld.bfd and ld.gold.
+
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -287,6 +288,15 @@
+ emulation = get_emulation (argc, argv);
+ ldemul_choose_mode (emulation);
+ default_target = ldemul_choose_target (argc, argv);
++
++ /* Default to --hash-style=gnu */
++ if (strcmp (default_target, "elf32-tradbigmips") != 0
++ && strcmp (default_target, "elf32-tradlittlemips") != 0)
++ {
++ link_info.emit_gnu_hash = TRUE;
++ link_info.emit_hash = FALSE;
++ }
++
+ config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+ config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
+ lang_init ();
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -794,7 +794,7 @@
+ N_("Min fraction of empty buckets in dynamic hash"),
+ N_("FRACTION"));
+
+- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
++ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "gnu",
+ N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
+ {"sysv", "gnu", "both"});
+