mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 09:32:13 +02:00
strace: upgrade 4.22 -> 4.23
(From OE-Core rev: 71994715714076e7f4dfb29c91da0a4e293b7e53) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
6494ab4ab3
commit
fde3ca8b73
@@ -1,74 +0,0 @@
|
||||
From 0c75ebaad09d6d3f2395dfe6160904af883dd0d9 Mon Sep 17 00:00:00 2001
|
||||
From: Andre McCurdy <armccurdy@gmail.com>
|
||||
Date: Tue, 15 May 2018 15:34:39 -0700
|
||||
Subject: [PATCH] linux/arm/raw_syscall.h: avoid r7 specified register
|
||||
variables with Thumb
|
||||
|
||||
If Thumb code is being generated and frame pointers are enabled, the
|
||||
Thumb frame pointer in r7 clashes with any local variable which may
|
||||
need to be assigned to r7 (e.g. the syscall NR when making a raw
|
||||
syscall).
|
||||
|
||||
With gcc, the double use of r7 results in a build error, e.g.
|
||||
|
||||
strace-4.22/tests/inject-nf.c:86:1: error: r7 cannot be used in asm here
|
||||
|
||||
With clang, the double use of r7 can result in the compiler silently
|
||||
generating broken code which crashes at run time due to frame pointer
|
||||
corruption:
|
||||
|
||||
https://bugs.llvm.org/show_bug.cgi?id=34165
|
||||
|
||||
In most cases the problem isn't visible as frame pointers will be
|
||||
disabled automatically due to optimisation level. However to handle
|
||||
cases where frame pointers are enabled (e.g. when CFLAGS etc are set
|
||||
to support a debug build, etc) provide a version of raw_syscall_0
|
||||
which manually saves and restores the frame pointer value in r7
|
||||
to a temporary register before setting up the syscall NR in r7
|
||||
and invoking the syscall.
|
||||
|
||||
* linux/arm/raw_syscall.h (raw_syscall_0) [__thumb__]: Provide
|
||||
an alternative version.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
|
||||
---
|
||||
linux/arm/raw_syscall.h | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/linux/arm/raw_syscall.h b/linux/arm/raw_syscall.h
|
||||
index 69c7e23..ec534ec 100644
|
||||
--- a/linux/arm/raw_syscall.h
|
||||
+++ b/linux/arm/raw_syscall.h
|
||||
@@ -36,12 +36,27 @@ static inline kernel_ulong_t
|
||||
raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err)
|
||||
{
|
||||
*err = 0;
|
||||
+
|
||||
+#ifdef __thumb__ /* && FRAME_POINTERS_ENABLED */
|
||||
+
|
||||
+ register kernel_ulong_t rt;
|
||||
+ register kernel_ulong_t r0 __asm__("r0");
|
||||
+ __asm__ __volatile__("mov %1,r7; mov r7,%2; swi 0x0; mov r7,%1"
|
||||
+ : "=r"(r0), "=&r"(rt)
|
||||
+ : "r"(nr)
|
||||
+ : "memory");
|
||||
+
|
||||
+#else
|
||||
+
|
||||
register kernel_ulong_t r7 __asm__("r7") = nr;
|
||||
register kernel_ulong_t r0 __asm__("r0");
|
||||
__asm__ __volatile__("swi 0x0"
|
||||
: "=r"(r0)
|
||||
: "r"(r7)
|
||||
: "memory");
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
return r0;
|
||||
}
|
||||
# define raw_syscall_0 raw_syscall_0
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -14,10 +14,9 @@ SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
|
||||
file://mips-SIGEMT.patch \
|
||||
file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
|
||||
file://0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch \
|
||||
file://0001-linux-arm-raw_syscall.h-avoid-r7-specified-register-.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "7a2a7d7715da6e6834bc65bd09bace1c"
|
||||
SRC_URI[sha256sum] = "068cd09264c95e4d591bbcd3ea08f99a693ed8663cd5169b0fdad72eb5bdb39d"
|
||||
SRC_URI[md5sum] = "fad4bba0947553cef34d46a9fd78f039"
|
||||
SRC_URI[sha256sum] = "7860a6965f1dd832747bd8281a04738274398d32c56e9fbd0a68b1bb9ec09aad"
|
||||
|
||||
inherit autotools ptest bluetooth
|
||||
|
||||
Reference in New Issue
Block a user