From b14a568e7e67a76fcad59f557c7564fa8bdc1538 Mon Sep 17 00:00:00 2001 From: Victor Kamensky Date: Thu, 8 Aug 2013 20:37:01 -0700 Subject: strace: fix system call matching code in get_scno for be8 arm on ARM V7 operating in big endian mode strace does not work: root@genericarmv7ab:~# strace ls pid 1356 unknown syscall trap 0x000000ef it happens because ARM V7 when runs as big endian operates in be8 mode, where instruction are still in little endian form. Strace get_scno reads instructions and matches it to certain pattern, but in armeb case it needs to byteswap it before that. Signed-off-by: Victor Kamensky Signed-off-by: Riku Voipio --- .../strace/strace/strace-4.8-arm-be8.patch | 19 +++++++++++++++++++ .../recipes-devtools/strace/strace_4.8.bbappend | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 meta-bigendian/recipes-devtools/strace/strace/strace-4.8-arm-be8.patch create mode 100644 meta-bigendian/recipes-devtools/strace/strace_4.8.bbappend (limited to 'meta-bigendian') diff --git a/meta-bigendian/recipes-devtools/strace/strace/strace-4.8-arm-be8.patch b/meta-bigendian/recipes-devtools/strace/strace/strace-4.8-arm-be8.patch new file mode 100644 index 00000000..c0d4043d --- /dev/null +++ b/meta-bigendian/recipes-devtools/strace/strace/strace-4.8-arm-be8.patch @@ -0,0 +1,19 @@ +Index: strace-4.8/syscall.c +=================================================================== +--- strace-4.8.orig/syscall.c ++++ strace-4.8/syscall.c +@@ -1355,6 +1355,14 @@ get_scno(struct tcb *tcp) + if (errno) + return -1; + ++#if defined(__ARMEB__) && defined(__ARM_ARCH_7A__) ++ /* We running big endian arm on ARMv7: instructions are ++ * in little endian form so we need to byteswap it. Note ++ * on older ARM like V5 Xscale code is in big endian form ++ * byte swap is not needed in this case. I.e be8 vs be32. ++ */ ++ scno = __builtin_bswap32(scno); ++#endif /* __ARMEB__ && __ARM_ARCH_7A__ */ + /* EABI syscall convention? */ + if (scno == 0xef000000) { + scno = arm_regs.ARM_r7; /* yes */ diff --git a/meta-bigendian/recipes-devtools/strace/strace_4.8.bbappend b/meta-bigendian/recipes-devtools/strace/strace_4.8.bbappend new file mode 100644 index 00000000..03276d65 --- /dev/null +++ b/meta-bigendian/recipes-devtools/strace/strace_4.8.bbappend @@ -0,0 +1,3 @@ +FILESEXTRAPATHS := "${THISDIR}/${PN}" + +SRC_URI += "file://strace-4.8-arm-be8.patch" -- cgit v1.2.3