From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 69498 invoked by alias); 1 Dec 2015 20:10:34 -0000 Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org Received: (qmail 69438 invoked by uid 89); 1 Dec 2015 20:10:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_WEB,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mout.gmx.net Received: from mout.gmx.net (HELO mout.gmx.net) (212.227.17.22) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 01 Dec 2015 20:10:28 +0000 Received: from [192.168.2.99] ([88.70.52.212]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0MRkhB-1ZsTOX2baj-00T0II; Tue, 01 Dec 2015 21:10:20 +0100 Content-Type: multipart/mixed; boundary="Apple-Mail=_3ED60AEF-1B03-4C5C-BF30-01592A64AC45" Mime-Version: 1.0 (Mac OS X Mail 9.1 \(3096.5\)) Subject: Re: Prelinking on ARM with Debug Link From: Torsten Polle In-Reply-To: <565CA2E3.7020602@redhat.com> Date: Tue, 01 Dec 2015 20:10:00 -0000 Cc: Mark Wielaard , systemtap@sourceware.org Message-Id: References: <1448534000.7609.64.camel@redhat.com> <6C764A67-BD51-4CD6-8CE6-8E19E5453462@gmx.de> <1448611496.7609.80.camel@redhat.com> <20151127150614.GD2790@blokker.redhat.com> <3E5ADB9D-77C7-4AFB-BC5C-321B6DC21572@gmx.de> <565CA2E3.7020602@redhat.com> To: David Smith X-UI-Out-Filterresults: notjunk:1;V01:K0:Yg98QIp7b/s=:NuKu1nwRoc1a2+pt3u8u1a 2YP8bK1QKL40m3uKpiFLOMwYM7BJKq2OOqFvyP1MoBdHNL0WPHhT/lhuPW6TtAOz+cOLXuaP2 IJ79ScCbVNEQwSKx8dEWmcbDgv3GLBZQkfAd/FgF/HSnobt9c+Dtct04PX2qpYzu/DD8WStQ1 hsFiHoJIMVeponKpUtxE7/Pk6bYDvU2Napgn2NEoAMP4Yi0pEv+lcqkeVVJnXOKaZXwxHEUbb h0lZ18eecbY85sk8mv8aYnmJgVYJhHr31EbTJZ903rcWdi56iFbf2l+IX5YAtnOeY2EUEg03W DtzIj4jWfPBHofQeYGQv9ZIxwVA6SC51lUS65vrZT7hgV2kaht26+v8HYFlGvlwa6gbBVH3MM xD2L2ARBJtuv6nVHF68QzdC7UPrmvqD3sSm6Qw22pb98/MmAVWp1qndb/+ios3AuYWNhYMDfQ n2nRzogdmn5v7hKk+i5uAFhGJt+a1TmwW0bf4BcvTbi3edIGi9jilISwgSboCFdlrCvcbYsiE FPvcp4Oi14dd2XThIl0HnDnU1yZ6xMPKB672V1MRfw6zuiSpbmf99+DIRpXwKM11eQjdQEqg7 XcNXQpAWui3WGvBJAblaT4mvBhilStmNJsJGvI4otrjrSF6mqcAGP31GUrRl+aMEJJm8LYaru aWN1ekV05SQdyry6pWPTND/SozcqW/w55RnItkfzk+5rjf34JMVLopdlYH07YTr6G1/rsgC/x WD2YQrurxWT6Lxj4E3cMEJ3uE/n+tfiXOluYA2wUoqZXwOiV8ZOfVnJYLjE= X-SW-Source: 2015-q4/txt/msg00220.txt.bz2 --Apple-Mail=_3ED60AEF-1B03-4C5C-BF30-01592A64AC45 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 Content-length: 1862 Hi David, David Smith writes: > On 11/27/2015 02:01 PM, Torsten Polle wrote: >> Hi Mark, >>=20 >>> Mark Wielaard writes: >>> >> WARNING: tapset "/opt/tooling/adit/systemtap/share/systemtap/tapset= /linux/arm/syscalls.stp" has errors, and will be skipped >>>=20 >>> > You might want to look into why that is. >>>=20 >>> Yes, I know. I had re-added support of a system call (execve), which >>> does not work since some time in SystemTap. But since the support >>> depends on the kernel version, I get a warning about an empty file when >>> the kernel version is greater than 3.7. > In kernel versions less than 3.7, the execve syscall was in > arch-specific code. So, each arch has their own implementation of > [nd_]syscall.execve in tapsets/linux/ARCH/[nd_]syscalls.stp. > In kernel versions >=3D 3.7, the execve syscall was moved to generic > kernel code, and support for it is located in > tapset/linux/[nd_]syscalls.stp. > I don't believe we've ever supported an arm/arm64 kernel less than 3.7, I'm using SystemTap successfully with a 2.6.34 kernel on ARM since 4 years now. So far it worked without much problems. > so there isn't arch-specific execve support for arm/arm64. But, if you > have got working execve support for arm/arm64 kernels less than 3.7, I > don't see a real problem with checking it in (assuming it looks reasonab= le). I've support that is working in my environment. At least the defined variables give some decent result. Please judge the quality for yourself. The error message reported comes from the fact that the file syscalls.stp is regarded as empty by SystemTap if the kernel version is greater then 3.7. I could not find a nice solution so far. > --=20 > David Smith > dsmith@redhat.com > Red Hat > http://www.redhat.com > 256.217.0141 (direct) > 256.837.0057 (fax) Kind Regards, Torsten --Apple-Mail=_3ED60AEF-1B03-4C5C-BF30-01592A64AC45 Content-Disposition: attachment; filename=0001-Fix-Kernel-2.6.34-no-longer-supported.patch Content-Type: application/octet-stream; name="0001-Fix-Kernel-2.6.34-no-longer-supported.patch" Content-Transfer-Encoding: quoted-printable Content-length: 4625 >From 5b9dddd3ac920fd7f1f4d326e02b78fad56bfd9e Mon Sep 17 00:00:00 2001=0A= Message-Id: <5b9dddd3ac920fd7f1f4d326e02b78fad56bfd9e.1448999281.git.Torste= n.Polle@gmx.de>=0A= From: Torsten Polle =0A= Date: Fri, 29 May 2015 21:45:51 +0200=0A= Subject: [PATCH] Fix: Kernel 2.6.34 no longer supported.=0A= =0A= =0A= Signed-off-by: Torsten Polle =0A= ---=0A= tapset/linux/arm/aux_syscalls.stp | 6 +++++-=0A= tapset/linux/arm/syscalls.stp | 27 +++++++++++++++++++++++++++=0A= tapset/linux/aux_syscalls.stp | 4 ++++=0A= 3 files changed, 36 insertions(+), 1 deletions(-)=0A= create mode 100644 tapset/linux/arm/syscalls.stp=0A= =0A= diff --git a/tapset/linux/arm/aux_syscalls.stp b/tapset/linux/arm/aux_sysca= lls.stp=0A= index ebbab4f..9e1e722 100644=0A= --- a/tapset/linux/arm/aux_syscalls.stp=0A= +++ b/tapset/linux/arm/aux_syscalls.stp=0A= @@ -4,7 +4,7 @@=0A= %{=0A= // Get _stp_val_array and _stp_lookup_* definitions.=0A= #include "linux/syscalls-common.h"=0A= -=0A= +#include =0A= static const _stp_val_array const _stp_arch_ptrace_request_list[] =3D {=0A= V(PTRACE_GETREGS),=0A= V(PTRACE_SETREGS),=0A= @@ -19,8 +19,10 @@ static const _stp_val_array const _stp_arch_ptrace_reque= st_list[] =3D {=0A= V(PTRACE_SETCRUNCHREGS),=0A= V(PTRACE_GETVFPREGS),=0A= V(PTRACE_SETVFPREGS),=0A= +#if LINUX_VERSION_CODE >=3D KERNEL_VERSION(3,7,0)=0A= V(PTRACE_GETHBPREGS),=0A= V(PTRACE_SETHBPREGS),=0A= +#endif=0A= {0, NULL}=0A= };=0A= %}=0A= @@ -45,8 +47,10 @@ function _arch_ptrace_argstr(request, pid, addr, data)= =0A= || request =3D=3D %{ /* pure */ PTRACE_SETCRUNCHREGS %}=0A= || request =3D=3D %{ /* pure */ PTRACE_GETVFPREGS %}=0A= || request =3D=3D %{ /* pure */ PTRACE_SETVFPREGS %}=0A= +#if LINUX_VERSION_CODE >=3D KERNEL_VERSION(3,7,0)=0A= || request =3D=3D %{ /* pure */ PTRACE_GETHBPREGS %}=0A= || request =3D=3D %{ /* pure */ PTRACE_SETHBPREGS %})=0A= +#endif=0A= return sprintf("%s, %d, %#x, %p",=0A= __arch_ptrace_request_str(request), pid,=0A= addr, data)=0A= diff --git a/tapset/linux/arm/syscalls.stp b/tapset/linux/arm/syscalls.stp= =0A= new file mode 100644=0A= index 0000000..fd7d980=0A= --- /dev/null=0A= +++ b/tapset/linux/arm/syscalls.stp=0A= @@ -0,0 +1,27 @@=0A= +# ARM system calls=0A= +=0A= +%( kernel_v < "3.7" %?=0A= +# execve _____________________________________________________=0A= +#=0A= +# In kernels < 3.7, sys_execve() was in arch-specific code (and had=0A= +# varying arguments). It was just a wrapper around generic=0A= +# do_execve(), but the wrapper could error out before calling=0A= +# do_execve(). So, we'll have to handle it in arch-specific tapset=0A= +# code to catch all calls.=0A= +#=0A= +# int sys_execve(char __user *filenamei, char __user * __user *argv,=0A= +# char __user * __user *envp, struct pt_regs *regs)=0A= +probe syscall.execve =3D kernel.function("sys_execve").call=0A= +{=0A= + name =3D "execve"=0A= + filename =3D user_string_quoted($filenamei)=0A= + args =3D __get_argv($argv, 0)=0A= + env_str =3D __count_envp($envp)=0A= + argstr =3D sprintf("%s, %s, %s", filename, args, env_str)=0A= +}=0A= +probe syscall.execve.return =3D kernel.function("sys_execve").return=0A= +{=0A= + name =3D "execve"=0A= + retstr =3D return_str(1, $return)=0A= +}=0A= +%)=0A= diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp= =0A= index 6ddb08b..929396d 100644=0A= --- a/tapset/linux/aux_syscalls.stp=0A= +++ b/tapset/linux/aux_syscalls.stp=0A= @@ -4332,6 +4332,7 @@ function _stp_keyctl_default_keyrings_str:string(id:l= ong)=0A= #include =0A= =20=0A= static const _stp_val_array const _stp_keyctl_perm_list[] =3D {=0A= +#if defined(CONFIG_KEYS)=0A= V(KEY_POS_VIEW),=0A= V(KEY_POS_READ),=0A= V(KEY_POS_WRITE),=0A= @@ -4360,6 +4361,7 @@ static const _stp_val_array const _stp_keyctl_perm_li= st[] =3D {=0A= V(KEY_OTH_LINK),=0A= V(KEY_OTH_SETATTR),=0A= V(KEY_OTH_ALL),=0A= +#endif /* CONFIG_KEYS */=0A= {0, NULL}=0A= };=0A= %}=0A= @@ -5603,6 +5605,7 @@ function _struct_sysinfo_u:string(uaddr:long)=0A= %{=0A= #include =0A= static const _stp_val_array const _stp_kexec_flags_list[] =3D {=0A= +#if defined(CONFIG_KEXEC)=0A= V(KEXEC_ON_CRASH),=0A= #ifdef KEXEC_PRESERVE_CONTEXT=0A= V(KEXEC_PRESERVE_CONTEXT),=0A= @@ -5624,6 +5627,7 @@ static const _stp_val_array const _stp_kexec_flags_li= st[] =3D {=0A= #ifdef KEXEC_ARCH_MIPS=0A= V(KEXEC_ARCH_MIPS),=0A= #endif=0A= +#endif /* CONFIG_KEXEC */=0A= {0, NULL}=0A= };=0A= =20=0A= --=20=0A= 1.7.4.1=0A= =0A= --Apple-Mail=_3ED60AEF-1B03-4C5C-BF30-01592A64AC45--