mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-05 04:16:46 +02:00
main/binutils: fix static linking on PIE
The linker script mistakenly assumess crtbegin, or crtbegin? for the gcc crt glue filename. On PIE system it is called crtbeginTS which would not match the filter. Fixes #855.
This commit is contained in:
parent
84009e4c79
commit
bfc02e3184
@ -1,18 +1,34 @@
|
||||
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
||||
pkgname=binutils
|
||||
pkgver=2.22
|
||||
pkgrel=0
|
||||
pkgrel=1
|
||||
pkgdesc="Tools necessary to build programs"
|
||||
url="http://www.gnu.org/software/binutils/"
|
||||
source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2"
|
||||
depends=
|
||||
makedepends="bison flex texinfo zlib-dev"
|
||||
arch="all"
|
||||
license="GPL"
|
||||
subpackages="$pkgname-doc"
|
||||
source="http://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2
|
||||
binutils-ld-fix-static-linking.patch"
|
||||
|
||||
_builddir="$srcdir/$pkgname-$pkgver"
|
||||
|
||||
prepare() {
|
||||
local i
|
||||
cd "$_builddir"
|
||||
for i in $source; do
|
||||
case $i in
|
||||
*.patch|*.diff)
|
||||
msg "Applying $i..."
|
||||
patch -p1 -i "$srcdir"/$i || return 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
cd "$_builddir"
|
||||
./configure --prefix=/usr \
|
||||
--mandir /usr/share/man \
|
||||
--build ${CHOST:-i486-alpine-linux-uclibc} \
|
||||
@ -35,4 +51,5 @@ package() {
|
||||
fi
|
||||
rm "$pkgdir"/usr/lib/*.la || return 1
|
||||
}
|
||||
md5sums="ee0f10756c84979622b992a4a61ea3f5 binutils-2.22.tar.bz2"
|
||||
md5sums="ee0f10756c84979622b992a4a61ea3f5 binutils-2.22.tar.bz2
|
||||
6b744d0574338cc69d3096a890a7b609 binutils-ld-fix-static-linking.patch"
|
||||
|
||||
37
main/binutils/binutils-ld-fix-static-linking.patch
Normal file
37
main/binutils/binutils-ld-fix-static-linking.patch
Normal file
@ -0,0 +1,37 @@
|
||||
Index: binutils-2.22/ld/scripttempl/elf.sc
|
||||
===================================================================
|
||||
--- binutils-2.22.orig/ld/scripttempl/elf.sc 2011-04-11 18:38:12.000000000 +0300
|
||||
+++ binutils-2.22/ld/scripttempl/elf.sc 2011-12-09 09:11:24.000000000 +0200
|
||||
@@ -225,8 +225,8 @@
|
||||
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="KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))"
|
||||
- DTORS_IN_FINI_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))"
|
||||
+ CTORS_IN_INIT_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .ctors))"
|
||||
+ DTORS_IN_FINI_ARRAY="KEEP (*(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.*)))"
|
||||
@@ -262,8 +262,7 @@
|
||||
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.
|
||||
@@ -278,9 +277,8 @@
|
||||
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}}
|
||||
Loading…
x
Reference in New Issue
Block a user