summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-05-12 08:09:11 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-05-12 08:09:11 +0200
commitaa25476ddd62d0858b9b9db89df901089e3d024b (patch)
tree5ea9dba14d804c8b93cc136cf466b8ee5df3829d /core
parent3d5ece893f85808c4b1a63df306e21d5fd97659e (diff)
downloadpackages-aa25476ddd62d0858b9b9db89df901089e3d024b.tar.xz
core/binutils: testing a static PIE patch
Diffstat (limited to 'core')
-rw-r--r--core/binutils/PKGBUILD13
-rw-r--r--core/binutils/elf32_hppa_static_pie.patch22
2 files changed, 35 insertions, 0 deletions
diff --git a/core/binutils/PKGBUILD b/core/binutils/PKGBUILD
index 35c2db26..469392fc 100644
--- a/core/binutils/PKGBUILD
+++ b/core/binutils/PKGBUILD
@@ -4,3 +4,16 @@ eval "$(
s/--enable/--enable-64-bit-bfd \0/
'
)"
+
+# see https://sourceware.org/bugzilla/show_bug.cgi?id=22537
+# linking segfault in glibc
+
+source+=(elf32_hppa_static_pie.patch)
+md5sums+=('68e3ce93b66ddec6c36b5146df1ed713')
+
+eval "$(
+ declare -f prepare | \
+ sed '
+ /}/i patch -p1 -i "$srcdir/elf32_hppa_static_pie.patch"
+ '
+)"
diff --git a/core/binutils/elf32_hppa_static_pie.patch b/core/binutils/elf32_hppa_static_pie.patch
new file mode 100644
index 00000000..df6a53dd
--- /dev/null
+++ b/core/binutils/elf32_hppa_static_pie.patch
@@ -0,0 +1,22 @@
+diff -rauN binutils-2.30/bfd/elf32-hppa.c binutils-2.30-elf32_hppa_static_pie-patch/bfd/elf32-hppa.c
+--- binutils-2.30/bfd/elf32-hppa.c 2018-01-13 14:31:15.000000000 +0100
++++ binutils-2.30-elf32_hppa_static_pie-patch/bfd/elf32-hppa.c 2018-05-12 07:50:42.001547947 +0200
+@@ -612,6 +612,9 @@
+ return hppa_stub_import;
+ }
+
++ if (destination == (bfd_vma) -1)
++ return hppa_stub_none;
++
+ /* Determine where the call point is. */
+ location = (input_sec->output_offset
+ + input_sec->output_section->vma
+@@ -2842,7 +2845,7 @@
+ section. */
+ sym_sec = NULL;
+ sym_value = 0;
+- destination = 0;
++ destination = -1;
+ hh = NULL;
+ if (r_indx < symtab_hdr->sh_info)
+ {