diff options
Diffstat (limited to 'meta-bigendian')
-rw-r--r-- | meta-bigendian/recipes-devtools/strace/strace/strace-4.8-arm-be8.patch | 19 | ||||
-rw-r--r-- | meta-bigendian/recipes-devtools/strace/strace_4.8.bbappend | 3 |
2 files changed, 22 insertions, 0 deletions
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" |