valgrind: Mask CPUID support in HWCAP on aarch64

valgrind currently does not know anything about the CPUID flag added to
the HWCAP auxv entry in kernel 4.11+

At runtime it will fails like this:

ARM64 front end: branch_etc
disInstr(arm64): unhandled instruction 0xD5380001
disInstr(arm64): 1101'0101 0011'1000 0000'0000 0000'0001 ==2082==
valgrind: Unrecognised instruction at address 0x4014e64.

This patch is a workaround by masking all HWCAP. This patch is dervied
from https://bugzilla.redhat.com/show_bug.cgi?id=1464211

(From OE-Core rev: cdeb3d530af6cec1959c986aff3d6906939c8918)

(From OE-Core rev: e6cb66399f6ba874a7954d3212157576030dda34)

Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Manjukumar Matha 2018-03-05 15:58:02 -08:00 committed by Richard Purdie
parent 16c0989eec
commit ca6bdf1805
2 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,36 @@
Fix runtime Valgrind failure
This patch is derived from
https://bugzilla.redhat.com/show_bug.cgi?id=1464211
At runtime it will fails like this:
ARM64 front end: branch_etc
disInstr(arm64): unhandled instruction 0xD5380001
disInstr(arm64): 1101'0101 0011'1000 0000'0000 0000'0001 ==2082==
valgrind: Unrecognised instruction at address 0x4014e64.
This patch is a workaround by masking all HWCAP
Upstream-Status: Pending
Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
Index: valgrind-3.13.0/coregrind/m_initimg/initimg-linux.c
===================================================================
--- valgrind-3.13.0.orig/coregrind/m_initimg/initimg-linux.c 2018-03-04 22:22:17.698572675 -0800
+++ valgrind-3.13.0/coregrind/m_initimg/initimg-linux.c 2018-03-04 22:23:25.727815624 -0800
@@ -703,6 +703,12 @@
(and anything above) are not supported by Valgrind. */
auxv->u.a_val &= VKI_HWCAP_S390_TE - 1;
}
+# elif defined(VGP_arm64_linux)
+ {
+ /* Linux 4.11 started populating this for arm64, but we
+ currently don't support any. */
+ auxv->u.a_val = 0;
+ }
# endif
break;
# if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)

View File

@ -37,6 +37,7 @@ SRC_URI = "ftp://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
file://link-gz-tests.patch \
file://ppc-headers.patch \
file://mask-CPUID-support-in-HWCAP-on-aarch64.patch \
"
SRC_URI[md5sum] = "817dd08f1e8a66336b9ff206400a5369"
SRC_URI[sha256sum] = "d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b"