Patchwork eglibc_2.18.bb: Fix IFUNC support for ARM REL relocations

login
register
mail settings
Submitter Khem Raj
Date Sept. 13, 2013, 1:48 a.m.
Message ID <1379036913-5917-1-git-send-email-raj.khem@gmail.com>
Download mbox | patch
Permalink /patch/57915/
State Accepted
Commit 1875fb796f3680489a6eee082ca445df4b4113d3
Headers show

Comments

Khem Raj - Sept. 13, 2013, 1:48 a.m.
This should fix the case where neon code is emitted for machines
which dont have neon unit in the chip

[YOCTO# 5161]

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 .../0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch | 43 ++++++++++++++++++++++
 meta/recipes-core/eglibc/eglibc_2.18.bb            |  1 +
 2 files changed, 44 insertions(+)
 create mode 100644 meta/recipes-core/eglibc/eglibc-2.18/0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch

Patch

diff --git a/meta/recipes-core/eglibc/eglibc-2.18/0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch b/meta/recipes-core/eglibc/eglibc-2.18/0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch
new file mode 100644
index 0000000..24d4772
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-2.18/0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch
@@ -0,0 +1,43 @@ 
+Upstream-Status: Backport
+
+From d0721e703d222c01a9e8c329311c4fb01dac6972 Mon Sep 17 00:00:00 2001
+From: Carlos O'Donell <carlos@redhat.com>
+Date: Thu, 29 Aug 2013 00:17:33 -0400
+Subject: [PATCH] ARM: Pass dl_hwcap to IFUNC resolver.
+
+For REL relocs pass dl_hwcap to the IFUNC resolver
+as is required by the IFUNC API (bug 15905).
+---
+ NEWS                           | 2 +-
+ ports/ChangeLog.arm            | 7 +++++++
+ ports/sysdeps/arm/dl-machine.h | 2 +-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+Index: libc/ports/ChangeLog.arm
+===================================================================
+--- libc.orig/ports/ChangeLog.arm	2013-07-14 16:08:52.000000000 -0700
++++ libc/ports/ChangeLog.arm	2013-09-12 17:17:24.174387150 -0700
+@@ -1,3 +1,10 @@
++2013-08-28  Kyle McMartin  <kyle@redhat.com>
++	    Carlos O'Donell  <carlos@redhat.com>
++
++	[BZ #15905]
++	* sysdeps/arm/dl-machine [!RTLD_BOOTSTRAP] (elf_machine_rel):
++	Pass GLRO(dl_hwcap) to the IFUNC resolver.
++
+ 2013-07-03  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* sysdeps/arm/include/bits/setjmp.h [_ISOMAC] (JMP_BUF_REGLIST):
+Index: libc/ports/sysdeps/arm/dl-machine.h
+===================================================================
+--- libc.orig/ports/sysdeps/arm/dl-machine.h	2013-09-12 08:56:03.641743520 -0700
++++ libc/ports/sysdeps/arm/dl-machine.h	2013-09-12 17:17:24.174387150 -0700
+@@ -503,7 +503,7 @@
+ 	  break;
+ 	case R_ARM_IRELATIVE:
+ 	  value = map->l_addr + *reloc_addr;
+-	  value = ((Elf32_Addr (*) (void)) value) ();
++	  value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
+ 	  *reloc_addr = value;
+ 	  break;
+ #endif
diff --git a/meta/recipes-core/eglibc/eglibc_2.18.bb b/meta/recipes-core/eglibc/eglibc_2.18.bb
index 17b651f..710b498 100644
--- a/meta/recipes-core/eglibc/eglibc_2.18.bb
+++ b/meta/recipes-core/eglibc/eglibc_2.18.bb
@@ -26,6 +26,7 @@  SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr23
            file://tzselect-awk.patch \
            file://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
            file://fix-tibetian-locales.patch \
+           file://0001-ARM-Pass-dl_hwcap-to-IFUNC-resolver.patch \
           "
 SRC_URI[md5sum] = "b395b021422a027d89884992e91734fc"
 SRC_URI[sha256sum] = "15f564b45dc5dd65faf0875579e3447961ae61e876933384ae05d19328539ad4"