~alpine/aports

1

[alpine-aports] [PATCH 1/3] testing/binutils-cross-embedded: New aport

Marian Buschsieweke <marian.buschsieweke@ovgu.de>
Details
Message ID
<20180528164930.20411-1-marian.buschsieweke@ovgu.de>
Sender timestamp
1527526168
DKIM signature
missing
Download raw message
Patch: +134 -0
Tools necessary to build programs for embedded targets
http://www.gnu.org/software/binutils

This package creates binutils-arm-none-eabi, binutils-avr and
binutils-xtensa-lx106-elf as subpackages.
---
 testing/binutils-cross-embedded/APKBUILD      | 88 +++++++++++++++++++
 .../binutils-ld-fix-static-linking.patch      | 46 ++++++++++
 2 files changed, 134 insertions(+)
 create mode 100644 testing/binutils-cross-embedded/APKBUILD
 create mode 100644 testing/binutils-cross-embedded/binutils-ld-fix-static-linking.patch

diff --git a/testing/binutils-cross-embedded/APKBUILD b/testing/binutils-cross-embedded/APKBUILD
new file mode 100644
index 0000000000..9cc286fd9b
--- /dev/null
+++ b/testing/binutils-cross-embedded/APKBUILD
@@ -0,0 +1,88 @@
# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
# Based on binutils-avr
_pkgbase=binutils
_targets="arm-none-eabi avr xtensa-lx106-elf"
pkgname="$_pkgbase-cross-embedded"
pkgver=2.30
pkgrel=0
pkgdesc="Tools necessary to build programs for embedded targets"
url="http://www.gnu.org/software/${_pkgbase}/"
makedepends="gettext libtool autoconf automake bison zlib-dev"
arch="all"
license="GPL2 GPL3+ LGPL2 BSD"
for target in $_targets; do
	targetnorm="${target//-/_}"
	subpackages="${_pkgbase}-${target}:${targetnorm} ${subpackages}"
done
source="http://ftp.gnu.org/gnu/${_pkgbase}/${_pkgbase}-${pkgver}.tar.bz2
	binutils-ld-fix-static-linking.patch"

builddir="$srcdir/${_pkgbase}-$pkgver"
_workingdir="$srcdir/${_pkgbase}-build"

build() {
	for target in $_targets; do
		workingdir="${srcdir}/build-${target}"
		mkdir "$workingdir"
		cd "$workingdir"
		"$builddir"/configure \
			--target=${target} \
			--build="$CBUILD" \
			--host="$CHOST" \
			--prefix=/usr/ \
			--bindir=/usr/bin \
			--infodir=/deleteme/info \
			--htmldir=/deleteme/html \
			--pdfdir=/deleteme/pdf \
			--mandir=/deleteme/man \
			--disable-nls \
			--enable-plugins \
			--enable-interwork \
			--with-system-zlib \
			|| return 1
		make tooldir=/usr
	done
}

check() {
	for target in $_targets; do
		workingdir="${srcdir}/build-${target}"
		cd "$workingdir"
		make check
	done
}

package() {
	mkdir -p "${pkgdir}"
}

install_subpkg() {
	workingdir="${srcdir}/build-${target}"
	cd "$workingdir"
	make install DESTDIR="$subpkgdir"
	rm -rf "$subpkgdir"/deleteme
	for bin in ar as nm objcopy objdump ranlib strip readelf; do
		rm -f "$subpkgdir"/usr/bin/"$bin"
	done
}

arm_none_eabi() {
	target="${subpkgname#${_pkgbase}-}"
	pkgdesc="Tools necessary to build programs for ${target}"
	install_subpkg
}

avr() {
	target="${subpkgname#${_pkgbase}-}"
	pkgdesc="Tools necessary to build programs for platform ${target}"
	install_subpkg
}

xtensa_lx106_elf() {
	target="${subpkgname#${_pkgbase}-}"
	pkgdesc="Tools necessary to build programs for platform ${target}"
	install_subpkg
}

sha512sums="c3ce91aa20f058ec589bf18c722bf651331b394db6378900cc813cc0eea3a331a96584d5ae090630b627369510397dccc9edfcd43d4aeefc99579f277a05c72c  binutils-2.30.tar.bz2
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49  binutils-ld-fix-static-linking.patch"
diff --git a/testing/binutils-cross-embedded/binutils-ld-fix-static-linking.patch b/testing/binutils-cross-embedded/binutils-ld-fix-static-linking.patch
new file mode 100644
index 0000000000..bc5d762656
--- /dev/null
+++ b/testing/binutils-cross-embedded/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}}
-- 
2.17.0



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Leonardo Arena <rnalrd@gmail.com>
Details
Message ID
<CAGG_d8C+ke2KU_vrT9fq6_fzuM9szXJFFT7wzTFfzwR2eH1rBw@mail.gmail.com>
In-Reply-To
<20180528164930.20411-1-marian.buschsieweke@ovgu.de> (view parent)
Sender timestamp
1539584993
DKIM signature
missing
Download raw message
Hi,

On Mon, May 28, 2018 at 6:49 PM Marian Buschsieweke <
marian.buschsieweke@ovgu.de> wrote:

> Tools necessary to build programs for embedded targets
> http://www.gnu.org/software/binutils
>
> This package creates binutils-arm-none-eabi, binutils-avr and
> binutils-xtensa-lx106-elf as subpackages.
> ---
>  testing/binutils-cross-embedded/APKBUILD      | 88 +++++++++++++++++++
>  .../binutils-ld-fix-static-linking.patch      | 46 ++++++++++
>  2 files changed, 134 insertions(+)
>  create mode 100644 testing/binutils-cross-embedded/APKBUILD
>  create mode 100644
> testing/binutils-cross-embedded/binutils-ld-fix-static-linking.patch
>
> diff --git a/testing/binutils-cross-embedded/APKBUILD
> b/testing/binutils-cross-embedded/APKBUILD
> new file mode 100644
> index 0000000000..9cc286fd9b
> --- /dev/null
> +++ b/testing/binutils-cross-embedded/APKBUILD
> @@ -0,0 +1,88 @@
> +# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
> +# Based on binutils-avr
> +_pkgbase=binutils
> +_targets="arm-none-eabi avr xtensa-lx106-elf"
> +pkgname="$_pkgbase-cross-embedded"
> +pkgver=2.30
> +pkgrel=0
> +pkgdesc="Tools necessary to build programs for embedded targets"
> +url="http://www.gnu.org/software/${_pkgbase}/"
> +makedepends="gettext libtool autoconf automake bison zlib-dev"
> +arch="all"
> +license="GPL2 GPL3+ LGPL2 BSD"
>


License IDs, aren't correct. Please see https://spdx.org/licenses/


+for target in $_targets; do
> +       targetnorm="${target//-/_}"
> +       subpackages="${_pkgbase}-${target}:${targetnorm} ${subpackages}"
> +done
> +source="http://ftp.gnu.org/gnu/${_pkgbase}/${_pkgbase}-${pkgver}.tar.bz2
> +       binutils-ld-fix-static-linking.patch"
> +
> +builddir="$srcdir/${_pkgbase}-$pkgver"
> +_workingdir="$srcdir/${_pkgbase}-build"
> +
> +build() {
> +       for target in $_targets; do
> +               workingdir="${srcdir}/build-${target}"
> +               mkdir "$workingdir"
> +               cd "$workingdir"
> +               "$builddir"/configure \
> +                       --target=${target} \
> +                       --build="$CBUILD" \
> +                       --host="$CHOST" \
> +                       --prefix=/usr/ \
> +                       --bindir=/usr/bin \
> +                       --infodir=/deleteme/info \
> +                       --htmldir=/deleteme/html \
> +                       --pdfdir=/deleteme/pdf \
> +                       --mandir=/deleteme/man \
> +                       --disable-nls \
> +                       --enable-plugins \
> +                       --enable-interwork \
> +                       --with-system-zlib \
> +                       || return 1
>


This can be omitted.



> +               make tooldir=/usr
> +       done
> +}
> +
> +check() {
> +       for target in $_targets; do
> +               workingdir="${srcdir}/build-${target}"
> +               cd "$workingdir"
> +               make check
> +       done
> +}
> +
> +package() {
> +       mkdir -p "${pkgdir}"
> +}
> +
> +install_subpkg() {
> +       workingdir="${srcdir}/build-${target}"
> +       cd "$workingdir"
> +       make install DESTDIR="$subpkgdir"
> +       rm -rf "$subpkgdir"/deleteme
> +       for bin in ar as nm objcopy objdump ranlib strip readelf; do
> +               rm -f "$subpkgdir"/usr/bin/"$bin"
> +       done
> +}
> +
> +arm_none_eabi() {
> +       target="${subpkgname#${_pkgbase}-}"
> +       pkgdesc="Tools necessary to build programs for ${target}"
> +       install_subpkg
> +}
> +
> +avr() {
> +       target="${subpkgname#${_pkgbase}-}"
> +       pkgdesc="Tools necessary to build programs for platform ${target}"
> +       install_subpkg
> +}
> +
> +xtensa_lx106_elf() {
> +       target="${subpkgname#${_pkgbase}-}"
> +       pkgdesc="Tools necessary to build programs for platform ${target}"
> +       install_subpkg
> +}
>
>
Thanks!

/eo
Reply to thread Export thread (mbox)