svn commit: r350017 - in head: lib/libc/sys sys/kern sys/sys tests/sys/kern
Kyle Evans
kevans at freebsd.org
Wed Nov 27 01:13:21 UTC 2019
On Tue, Nov 26, 2019 at 6:18 PM John Baldwin <jhb at freebsd.org> wrote:
>
> On 11/25/19 11:01 AM, Kyle Evans wrote:
> > On Mon, Jul 15, 2019 at 4:48 PM John Baldwin <jhb at freebsd.org> wrote:
> >>
> >> Author: jhb
> >> Date: Mon Jul 15 21:48:02 2019
> >> New Revision: 350017
> >> URL: https://svnweb.freebsd.org/changeset/base/350017
> >>
> >> Log:
> >> Add ptrace op PT_GET_SC_RET.
> >>
> >> This ptrace operation returns a structure containing the error and
> >> return values from the current system call. It is only valid when a
> >> thread is stopped during a system call exit (PL_FLAG_SCX is set).
> >>
> >> The sr_error member holds the error value from the system call. Note
> >> that this error value is the native FreeBSD error value that has _not_
> >> been translated to an ABI-specific error value similar to the values
> >> logged to ktrace.
> >>
> >> If sr_error is zero, then the return values of the system call will be
> >> set in sr_retval[0] and sr_retval[1].
> >>
> >> Reviewed by: kib
> >> MFC after: 1 month
> >> Sponsored by: DARPA
> >> Differential Revision: https://reviews.freebsd.org/D20901
> >>
> >> Modified:
> >> head/lib/libc/sys/ptrace.2
> >> head/sys/kern/sys_process.c
> >> head/sys/sys/ptrace.h
> >> head/tests/sys/kern/ptrace_test.c
> >>
> >
> > Hey John,
> >
> > Any objection to MFC'ing this to stable/12 at least? I've found this
> > to be almost-required in the ptrace user I've been working on
> > lately... I certainly ripped out plenty of hair before realizing that
> > it wasn't detecting error returns properly.
>
> Hmm, I did have it in my queue, but not the most urgent priority. Are
> you using truss or something else? You can achieve the same thing without
> the new op, it just requires arch-specific code to fetch the error status
> and return value from registers.
>
Alrighty- that's good to hear. =-)
It's actually an out-of-tree ptrace(2) user that's executing syscalls
in the process it's attaching to. It works most of the time because
the syscalls it's executing don't generally fail (mmap a single page
was the only use until I started dorking with it), so it's not quite
worth the overhead of adding the arch-specific bits to detect error
(it grabs the return value, at least) -- this is generally just a
small nicety for those of us debugging it.
Thanks,
Kyle Evans
More information about the svn-src-all
mailing list